制作图鉴

This commit is contained in:
小李xl 2024-03-11 01:02:59 +08:00
parent 86c3e8d7fb
commit d80ccb4681
33 changed files with 730 additions and 276 deletions

View File

@ -1,9 +1,13 @@
[gd_scene load_steps=6 format=3 uid="uid://b2xq02i3vxct"]
[gd_scene load_steps=10 format=3 uid="uid://b2xq02i3vxct"]
[ext_resource type="Script" path="res://src/game/ui/encyclopedia/EncyclopediaPanel.cs" id="1_hd86y"]
[ext_resource type="Texture2D" uid="uid://blfvsup876agh" path="res://resource/sprite/ui/commonIcon/Search.png" id="2_3ln1u"]
[ext_resource type="Texture2D" uid="uid://c0st2iiql8igg" path="res://resource/sprite/ui/encyclopedia/TitleBg.png" id="3_gdtik"]
[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="3_o1xl7"]
[ext_resource type="Texture2D" uid="uid://bn47bmilcw4x0" path="res://resource/sprite/ui/commonIcon/Select2.png" id="4_gtlqd"]
[ext_resource type="Texture2D" uid="uid://brevrlfdtllmk" path="res://resource/sprite/ui/encyclopedia/Select.png" id="5_f0anf"]
[ext_resource type="Texture2D" uid="uid://cu5y32wfai4pn" path="res://resource/sprite/ui/encyclopedia/Item.png" id="5_niceh"]
[ext_resource type="Texture2D" uid="uid://5adiy3ycqyxw" path="res://resource/sprite/ui/GUI.png" id="5_qcyvs"]
[ext_resource type="Texture2D" uid="uid://civvcowt2wklr" path="res://resource/sprite/weapon/weapon0001/Weapon0001.png" id="6_536pn"]
[ext_resource type="Texture2D" uid="uid://conjg6fw6670x" path="res://resource/sprite/ui/encyclopedia/Panel.png" id="7_hfdat"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_gm0bl"]
resource_local_to_scene = true
@ -22,113 +26,182 @@ layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_right = -1440.0
offset_bottom = -810.0
grow_horizontal = 2
grow_vertical = 2
scale = Vector2(4, 4)
script = ExtResource("1_hd86y")
[node name="Panel2" type="Panel" parent="."]
[node name="ColorRect" type="ColorRect" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 3
size_flags_stretch_ratio = 75.0
color = Color(0, 0, 0, 0.705882)
[node name="MarginContainer" type="MarginContainer" parent="Panel2"]
[node name="NinePatchRect" type="NinePatchRect" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 3.0
offset_top = 12.0
offset_right = -3.0
offset_bottom = -3.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("5_qcyvs")
region_rect = Rect2(2, 35, 44, 43)
patch_margin_left = 30
patch_margin_top = 29
patch_margin_right = 30
patch_margin_bottom = 30
[node name="TextureRect" type="TextureRect" parent="NinePatchRect"]
layout_mode = 1
anchors_preset = 10
anchor_right = 1.0
offset_top = -10.25
offset_bottom = 11.75
grow_horizontal = 2
texture = ExtResource("3_gdtik")
stretch_mode = 3
[node name="Label" type="Label" parent="NinePatchRect/TextureRect"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_top = -3.25
offset_bottom = -1.25
grow_horizontal = 2
grow_vertical = 2
theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_font_sizes/font_size = 16
text = "图鉴"
horizontal_alignment = 1
vertical_alignment = 1
[node name="MarginContainer" type="MarginContainer" parent="NinePatchRect"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/margin_left = 2
theme_override_constants/margin_top = 2
theme_override_constants/margin_right = 2
theme_override_constants/margin_bottom = 2
theme_override_constants/margin_left = 10
theme_override_constants/margin_top = 20
theme_override_constants/margin_right = 10
theme_override_constants/margin_bottom = 10
[node name="VBoxContainer2" type="VBoxContainer" parent="Panel2/MarginContainer"]
[node name="HBoxContainer" type="HBoxContainer" parent="NinePatchRect/MarginContainer"]
layout_mode = 2
[node name="VBoxContainer2" type="VBoxContainer" parent="NinePatchRect/MarginContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_stretch_ratio = 2.0
[node name="MarginContainer" type="MarginContainer" parent="Panel2/MarginContainer/VBoxContainer2"]
layout_mode = 2
theme_override_constants/margin_left = 2
theme_override_constants/margin_top = 2
theme_override_constants/margin_right = 2
theme_override_constants/margin_bottom = 2
[node name="HBoxContainer" type="HBoxContainer" parent="Panel2/MarginContainer/VBoxContainer2/MarginContainer"]
custom_minimum_size = Vector2(0, 100)
[node name="NinePatchRect" type="NinePatchRect" parent="NinePatchRect/MarginContainer/HBoxContainer/VBoxContainer2"]
layout_mode = 2
size_flags_vertical = 3
texture = ExtResource("7_hfdat")
patch_margin_left = 14
patch_margin_top = 14
patch_margin_right = 14
patch_margin_bottom = 14
[node name="LineEdit" type="LineEdit" parent="Panel2/MarginContainer/VBoxContainer2/MarginContainer/HBoxContainer"]
custom_minimum_size = Vector2(500, 44)
layout_mode = 2
size_flags_vertical = 4
placeholder_text = "搜索名称"
[node name="Search" type="Button" parent="Panel2/MarginContainer/VBoxContainer2/MarginContainer/HBoxContainer"]
custom_minimum_size = Vector2(44, 44)
layout_mode = 2
size_flags_vertical = 4
icon = ExtResource("2_3ln1u")
[node name="ScrollContainer" type="ScrollContainer" parent="Panel2/MarginContainer/VBoxContainer2"]
layout_mode = 2
[node name="ScrollContainer" type="ScrollContainer" parent="NinePatchRect/MarginContainer/HBoxContainer/VBoxContainer2/NinePatchRect"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 7.0
offset_top = 7.0
offset_right = -7.0
offset_bottom = -7.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 3
size_flags_vertical = 3
size_flags_stretch_ratio = 75.0
[node name="ObjectButton" type="Button" parent="Panel2/MarginContainer/VBoxContainer2/ScrollContainer"]
custom_minimum_size = Vector2(124, 160)
[node name="ObjectButton" type="TextureButton" parent="NinePatchRect/MarginContainer/HBoxContainer/VBoxContainer2/NinePatchRect/ScrollContainer"]
custom_minimum_size = Vector2(50, 30)
layout_mode = 2
[node name="PreviewImage" type="TextureRect" parent="Panel2/MarginContainer/VBoxContainer2/ScrollContainer/ObjectButton"]
[node name="Bg" type="NinePatchRect" parent="NinePatchRect/MarginContainer/HBoxContainer/VBoxContainer2/NinePatchRect/ScrollContainer/ObjectButton"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("5_niceh")
patch_margin_left = 8
patch_margin_top = 8
patch_margin_right = 8
patch_margin_bottom = 8
[node name="PreviewImage" type="TextureRect" parent="NinePatchRect/MarginContainer/HBoxContainer/VBoxContainer2/NinePatchRect/ScrollContainer/ObjectButton"]
material = SubResource("ShaderMaterial_gm0bl")
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 2.0
offset_top = 2.0
offset_right = -2.0
offset_bottom = -38.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
expand_mode = 2
stretch_mode = 5
stretch_mode = 3
[node name="ObjectName" type="Label" parent="Panel2/MarginContainer/VBoxContainer2/ScrollContainer/ObjectButton"]
layout_mode = 1
anchors_preset = 12
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_top = -43.0
offset_right = 124.0
offset_bottom = 43.0
grow_horizontal = 2
grow_vertical = 0
scale = Vector2(0.5, 0.5)
text = "武器"
horizontal_alignment = 1
vertical_alignment = 1
autowrap_mode = 3
clip_text = true
text_overrun_behavior = 3
[node name="Select" type="NinePatchRect" parent="Panel2/MarginContainer/VBoxContainer2/ScrollContainer/ObjectButton"]
[node name="Select" type="NinePatchRect" parent="NinePatchRect/MarginContainer/HBoxContainer/VBoxContainer2/NinePatchRect/ScrollContainer/ObjectButton"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("4_gtlqd")
region_rect = Rect2(0, 0, 36, 36)
patch_margin_left = 8
patch_margin_top = 8
patch_margin_right = 8
patch_margin_bottom = 8
texture = ExtResource("5_f0anf")
region_rect = Rect2(0, 0, 4, 4)
patch_margin_left = 3
patch_margin_top = 3
patch_margin_right = 3
patch_margin_bottom = 3
[node name="VBoxContainer3" type="VBoxContainer" parent="NinePatchRect/MarginContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="NinePatchRect" type="NinePatchRect" parent="NinePatchRect/MarginContainer/HBoxContainer/VBoxContainer3"]
layout_mode = 2
size_flags_vertical = 3
texture = ExtResource("7_hfdat")
patch_margin_left = 14
patch_margin_top = 14
patch_margin_right = 14
patch_margin_bottom = 14
[node name="VBoxContainer" type="VBoxContainer" parent="NinePatchRect/MarginContainer/HBoxContainer/VBoxContainer3/NinePatchRect"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 7.0
offset_top = 7.0
offset_right = -7.0
offset_bottom = -7.0
grow_horizontal = 2
grow_vertical = 2
[node name="TextureRect" type="TextureRect" parent="NinePatchRect/MarginContainer/HBoxContainer/VBoxContainer3/NinePatchRect/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
texture = ExtResource("6_536pn")
stretch_mode = 3
[node name="Gui" type="Sprite2D" parent="."]
position = Vector2(-108.25, 158.25)
texture = ExtResource("5_qcyvs")

View File

@ -54,10 +54,11 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("3_k8b5h")
patch_margin_left = 3
patch_margin_top = 3
patch_margin_right = 3
patch_margin_bottom = 3
region_rect = Rect2(0, 0, 36, 36)
patch_margin_left = 4
patch_margin_top = 4
patch_margin_right = 4
patch_margin_bottom = 4
[node name="VisibleButton" type="TextureButton" parent="VBoxContainer/ScrollContainer/LayerButton"]
layout_mode = 1

View File

@ -136,10 +136,10 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("6_jpt3y")
patch_margin_left = 3
patch_margin_top = 3
patch_margin_right = 3
patch_margin_bottom = 3
patch_margin_left = 4
patch_margin_top = 4
patch_margin_right = 4
patch_margin_bottom = 4
[node name="WaveVisibleButton" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer/WaveItem/WaveContainer"]
custom_minimum_size = Vector2(36, 36)
@ -192,7 +192,7 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("6_jpt3y")
patch_margin_left = 3
patch_margin_top = 3
patch_margin_right = 3
patch_margin_bottom = 3
patch_margin_left = 4
patch_margin_top = 4
patch_margin_right = 4
patch_margin_bottom = 4

View File

@ -157,10 +157,10 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("5_f4thw")
patch_margin_left = 3
patch_margin_top = 3
patch_margin_right = 3
patch_margin_bottom = 3
patch_margin_left = 4
patch_margin_top = 4
patch_margin_right = 4
patch_margin_bottom = 4
[node name="TerrainName" type="Label" parent="VBoxContainer/Panel/MarginContainer/Tab2/ScrollContainer/TerrainItem"]
layout_mode = 1
@ -260,10 +260,10 @@ grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("5_f4thw")
region_rect = Rect2(0, 0, 36, 36)
patch_margin_left = 3
patch_margin_top = 3
patch_margin_right = 3
patch_margin_bottom = 3
patch_margin_left = 4
patch_margin_top = 4
patch_margin_right = 4
patch_margin_bottom = 4
[node name="MaskBg" type="ColorRect" parent="."]
layout_mode = 1

View File

@ -98,10 +98,10 @@ grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("5_rcbyx")
region_rect = Rect2(0, 0, 36, 36)
patch_margin_left = 3
patch_margin_top = 3
patch_margin_right = 3
patch_margin_bottom = 3
patch_margin_left = 4
patch_margin_top = 4
patch_margin_right = 4
patch_margin_bottom = 4
[node name="Panel2" type="Panel" parent="HBoxContainer"]
layout_mode = 2
@ -212,10 +212,10 @@ grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("5_rcbyx")
region_rect = Rect2(0, 0, 36, 36)
patch_margin_left = 3
patch_margin_top = 3
patch_margin_right = 3
patch_margin_bottom = 3
patch_margin_left = 4
patch_margin_top = 4
patch_margin_right = 4
patch_margin_bottom = 4
[node name="ErrorTexture" type="TextureRect" parent="HBoxContainer/Panel2/MarginContainer/VBoxContainer/ScrollContainer/RoomButton"]
layout_mode = 0

View File

@ -73,10 +73,11 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("3_4nhjm")
patch_margin_left = 3
patch_margin_top = 3
patch_margin_right = 3
patch_margin_bottom = 3
region_rect = Rect2(0, 0, 36, 36)
patch_margin_left = 4
patch_margin_top = 4
patch_margin_right = 4
patch_margin_bottom = 4
[node name="Panel2" type="Panel" parent="HBoxContainer"]
layout_mode = 2

View File

@ -152,10 +152,10 @@ grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("4_t8bqb")
region_rect = Rect2(0, 0, 36, 36)
patch_margin_left = 3
patch_margin_top = 3
patch_margin_right = 3
patch_margin_bottom = 3
patch_margin_left = 4
patch_margin_top = 4
patch_margin_right = 4
patch_margin_bottom = 4
[node name="RightRoot" type="Panel" parent="Bg/VBoxContainer/HBoxContainer"]
clip_children = 2

View File

@ -299,7 +299,7 @@ grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("6_g5ey6")
region_rect = Rect2(0, 0, 36, 36)
patch_margin_left = 3
patch_margin_top = 3
patch_margin_right = 3
patch_margin_bottom = 3
patch_margin_left = 4
patch_margin_top = 4
patch_margin_right = 4
patch_margin_bottom = 4

View File

@ -119,10 +119,10 @@ grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("5_l4lwx")
region_rect = Rect2(0, 0, 36, 36)
patch_margin_left = 3
patch_margin_top = 3
patch_margin_right = 3
patch_margin_bottom = 3
patch_margin_left = 4
patch_margin_top = 4
patch_margin_right = 4
patch_margin_bottom = 4
[node name="Panel" type="Panel" parent="Panel/MarginContainer/HBoxContainer2"]
layout_mode = 2

View File

@ -124,10 +124,10 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("4_ka47m")
patch_margin_left = 3
patch_margin_top = 3
patch_margin_right = 3
patch_margin_bottom = 3
patch_margin_left = 4
patch_margin_top = 4
patch_margin_right = 4
patch_margin_bottom = 4
[node name="TopBg" type="ColorRect" parent="VSplitContainer/PanelTop/HSplitContainer"]
clip_children = 2

View File

@ -46,7 +46,7 @@ material = SubResource("ShaderMaterial_o5ytq")
[node name="AnimatedSprite" parent="." index="1"]
material = SubResource("ShaderMaterial_rtliw")
position = Vector2(10, 1)
position = Vector2(10, 0)
sprite_frames = ExtResource("4_uymcs")
[node name="ShellPoint" parent="AnimatedSprite" index="0"]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 197 B

After

Width:  |  Height:  |  Size: 189 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 317 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cu5y32wfai4pn"
path="res://.godot/imported/Item.png-58bd34d7709452cf6ae6a4fd164bc305.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://resource/sprite/ui/encyclopedia/Item.png"
dest_files=["res://.godot/imported/Item.png-58bd34d7709452cf6ae6a4fd164bc305.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 376 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://conjg6fw6670x"
path="res://.godot/imported/Panel.png-08c85561f9ba92cb98c43d7cf676dc7b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://resource/sprite/ui/encyclopedia/Panel.png"
dest_files=["res://.godot/imported/Panel.png-08c85561f9ba92cb98c43d7cf676dc7b.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://brevrlfdtllmk"
path="res://.godot/imported/Select.png-ff59a06a7a05be5c95bf722fa4889a19.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://resource/sprite/ui/encyclopedia/Select.png"
dest_files=["res://.godot/imported/Select.png-ff59a06a7a05be5c95bf722fa4889a19.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 287 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c0st2iiql8igg"
path="res://.godot/imported/TitleBg.png-d91e021730751da9f4cb4810f02a912b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://resource/sprite/ui/encyclopedia/TitleBg.png"
dest_files=["res://.godot/imported/TitleBg.png-d91e021730751da9f4cb4810f02a912b.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 213 B

After

Width:  |  Height:  |  Size: 165 B

View File

@ -121,7 +121,7 @@ DefaultLayer = 1
ShowOffset = Vector2(2.08165e-12, 2)
CollisionVisible = false
[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0006" index="1"]
[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0006" index="0"]
position = Vector2(-10, -3)
texture = ExtResource("7_30qwa")
@ -133,7 +133,7 @@ DefaultLayer = 1
ShowOffset = Vector2(2.08165e-12, 2)
CollisionVisible = false
[node name="ActivityInstance" type="Node2D" parent="ItemRoot/Item0008" index="1"]
[node name="ActivityInstance" type="Node2D" parent="ItemRoot/Item0008" index="0"]
position = Vector2(2.5, -12)
script = ExtResource("5_lowqi")
Id = "item_0031"
@ -149,7 +149,7 @@ DefaultLayer = 1
ShowOffset = Vector2(2.08165e-12, 2)
CollisionVisible = false
[node name="Item26" type="Sprite2D" parent="ItemRoot/Item0013" index="1"]
[node name="Item26" type="Sprite2D" parent="ItemRoot/Item0013" index="0"]
position = Vector2(18, -2)
texture = ExtResource("8_61dkg")
@ -161,19 +161,19 @@ DefaultLayer = 1
ShowOffset = Vector2(2.08165e-12, 2)
CollisionVisible = false
[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0017" index="1"]
[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0017" index="0"]
position = Vector2(-2, -13)
texture = ExtResource("8_u3vry")
[node name="Sprite2D2" type="Sprite2D" parent="ItemRoot/Item0017" index="2"]
[node name="Sprite2D2" type="Sprite2D" parent="ItemRoot/Item0017" index="1"]
position = Vector2(18, -11)
texture = ExtResource("9_lhdr8")
[node name="Sprite2D3" type="Sprite2D" parent="ItemRoot/Item0017" index="3"]
[node name="Sprite2D3" type="Sprite2D" parent="ItemRoot/Item0017" index="2"]
position = Vector2(-16, -2)
texture = ExtResource("10_4eqn0")
[node name="Sprite2D4" type="Sprite2D" parent="ItemRoot/Item0017" index="4"]
[node name="Sprite2D4" type="Sprite2D" parent="ItemRoot/Item0017" index="3"]
position = Vector2(10, -1)
texture = ExtResource("11_tg3jo")
@ -199,11 +199,11 @@ Id = "item_0002"
DefaultLayer = 1
CollisionVisible = false
[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0002" index="1"]
[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0002" index="0"]
position = Vector2(32, -2)
texture = ExtResource("12_agfji")
[node name="Sprite2D2" type="Sprite2D" parent="ItemRoot/Item0002" index="2"]
[node name="Sprite2D2" type="Sprite2D" parent="ItemRoot/Item0002" index="1"]
material = SubResource("ShaderMaterial_i7git")
position = Vector2(-1, -15)
scale = Vector2(1, -1)
@ -221,7 +221,7 @@ script = ExtResource("5_lowqi")
Id = "item_0004"
DefaultLayer = 1
[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0004" index="1"]
[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0004" index="0"]
position = Vector2(0, -17)
texture = ExtResource("13_unnpl")
@ -255,15 +255,15 @@ script = ExtResource("5_lowqi")
Id = "item_0009"
DefaultLayer = 1
[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0009" index="1"]
[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0009" index="0"]
position = Vector2(-24, -10)
texture = ExtResource("15_h7524")
[node name="Sprite2D2" type="Sprite2D" parent="ItemRoot/Item0009" index="2"]
[node name="Sprite2D2" type="Sprite2D" parent="ItemRoot/Item0009" index="1"]
position = Vector2(1, -10)
texture = ExtResource("15_h7524")
[node name="Sprite2D3" type="Sprite2D" parent="ItemRoot/Item0009" index="3"]
[node name="Sprite2D3" type="Sprite2D" parent="ItemRoot/Item0009" index="2"]
position = Vector2(37, -10)
texture = ExtResource("15_h7524")
@ -297,7 +297,7 @@ script = ExtResource("5_lowqi")
Id = "item_0015"
DefaultLayer = 1
[node name="Slice04" type="Sprite2D" parent="ItemRoot/Item0015" index="1"]
[node name="Slice04" type="Sprite2D" parent="ItemRoot/Item0015" index="0"]
position = Vector2(16, -9)
texture = ExtResource("15_h7524")
@ -319,11 +319,11 @@ script = ExtResource("5_lowqi")
Id = "item_0019"
DefaultLayer = 1
[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0019" index="1"]
[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0019" index="0"]
position = Vector2(-23, -7)
texture = ExtResource("16_xj0e1")
[node name="Sprite2D2" type="Sprite2D" parent="ItemRoot/Item0019" index="2"]
[node name="Sprite2D2" type="Sprite2D" parent="ItemRoot/Item0019" index="1"]
position = Vector2(24, -8)
texture = ExtResource("17_gwwce")

View File

@ -343,9 +343,9 @@ public static class Utils
/// <summary>
/// 计算Vector2点所占用的区域
/// </summary>
public static Rect2I CalcRect(IEnumerable<Vector2I> cells)
public static Rect2I CalcRect(ICollection<Vector2I> cells)
{
var count = cells.Count();
var count = cells.Count;
if (count == 0)
{
return new Rect2I();

View File

@ -81,6 +81,23 @@ public abstract partial class UiBase : Control, IDestroy, ICoroutine
UiManager.RecordUi(this, UiManager.RecordType.Open);
}
public sealed override void _Ready()
{
if (Math.Abs(Scale.X - 1f) > 0.001f)
{
Resized += OnResizeUi;
}
}
private void OnResizeUi()
{
if (ParentUi == null)
{
var viewportSize = GameApplication.Instance.ViewportSize;
Size = viewportSize;
}
}
/// <summary>
/// 创建当前ui时调用
/// </summary>

View File

@ -1,5 +1,6 @@

using System;
using System.Collections;
using Godot;
/// <summary>
@ -50,6 +51,13 @@ public abstract class UiCell<TUiCellNode, T> : IUiCell, IData<T> where TUiCellNo
{
}
/// <summary>
/// 当前cell被分配值时调用该函数为协程函数当仅在 Grid 中调研 SetDataListCoroutine() 函数时才会被调用
/// </summary>
public virtual IEnumerator OnSetDataCoroutine(T data)
{
yield break;
}
public virtual void Process(float delta)
{
@ -126,12 +134,20 @@ public abstract class UiCell<TUiCellNode, T> : IUiCell, IData<T> where TUiCellNo
}
/// <summary>
/// 设置当前 Cell 的值, 该函数由 UiGrid 调用
/// 更新当前 Cell 的值, 该函数由 UiGrid 调用
/// </summary>
public void UpdateData(T data)
{
Data = data;
OnSetData(data);
}
/// <summary>
/// 设置当前 Cell 的值, 该函数由 UiGrid 调用,该函数为协程函数
/// </summary>
public void SetData(T data)
{
Data = data;
OnSetData(data);
}
/// <summary>

View File

@ -1,6 +1,7 @@

using System;
using System.Collections;
using System.Collections.Generic;
using Godot;
@ -342,7 +343,22 @@ public class UiGrid<TUiCellNode, TData> : IUiGrid where TUiCellNode : IUiCellNod
for (var i = 0; i < _cellList.Count; i++)
{
var data = array[i];
_cellList[i].SetData(data);
_cellList[i].UpdateData(data);
}
}
/// <summary>
/// 设置当前网格组件中的所有 Cell 数据, 该函数为协程函数,可用于分帧处理大量数据
/// </summary>
public IEnumerator SetDataListCoroutine(ICollection<TData> array)
{
RemoveAll();
foreach (var data in array)
{
var cell = GetCellInstance();
GridContainer.AddChild(cell.CellNode.GetUiInstance());
cell.SetData(data);
yield return cell.OnSetDataCoroutine(data);
}
}
@ -353,7 +369,7 @@ public class UiGrid<TUiCellNode, TData> : IUiGrid where TUiCellNode : IUiCellNod
{
var cell = GetCellInstance();
GridContainer.AddChild(cell.CellNode.GetUiInstance());
cell.SetData(data);
cell.UpdateData(data);
if (select)
{
SelectIndex = Count - 1;
@ -368,7 +384,7 @@ public class UiGrid<TUiCellNode, TData> : IUiGrid where TUiCellNode : IUiCellNod
var uiCell = GetCell(index);
if (uiCell != null)
{
uiCell.SetData(data);
uiCell.UpdateData(data);
}
}

View File

@ -6,17 +6,43 @@ namespace UI.Encyclopedia;
public abstract partial class Encyclopedia : UiBase
{
/// <summary>
/// 使用 Instance 属性获取当前节点实例对象, 节点类型: <see cref="Godot.Panel"/>, 节点路径: Encyclopedia.Panel2
/// 使用 Instance 属性获取当前节点实例对象, 节点类型: <see cref="Godot.ColorRect"/>, 节点路径: Encyclopedia.ColorRect
/// </summary>
public Panel2 L_Panel2
public ColorRect L_ColorRect
{
get
{
if (_L_Panel2 == null) _L_Panel2 = new Panel2((EncyclopediaPanel)this, GetNode<Godot.Panel>("Panel2"));
return _L_Panel2;
if (_L_ColorRect == null) _L_ColorRect = new ColorRect((EncyclopediaPanel)this, GetNode<Godot.ColorRect>("ColorRect"));
return _L_ColorRect;
}
}
private Panel2 _L_Panel2;
private ColorRect _L_ColorRect;
/// <summary>
/// 使用 Instance 属性获取当前节点实例对象, 节点类型: <see cref="Godot.NinePatchRect"/>, 节点路径: Encyclopedia.NinePatchRect
/// </summary>
public NinePatchRect L_NinePatchRect
{
get
{
if (_L_NinePatchRect == null) _L_NinePatchRect = new NinePatchRect((EncyclopediaPanel)this, GetNode<Godot.NinePatchRect>("NinePatchRect"));
return _L_NinePatchRect;
}
}
private NinePatchRect _L_NinePatchRect;
/// <summary>
/// 使用 Instance 属性获取当前节点实例对象, 节点类型: <see cref="Godot.Sprite2D"/>, 节点路径: Encyclopedia.Gui
/// </summary>
public Gui L_Gui
{
get
{
if (_L_Gui == null) _L_Gui = new Gui((EncyclopediaPanel)this, GetNode<Godot.Sprite2D>("Gui"));
return _L_Gui;
}
}
private Gui _L_Gui;
public Encyclopedia() : base(nameof(Encyclopedia))
@ -29,82 +55,56 @@ public abstract partial class Encyclopedia : UiBase
}
/// <summary>
/// 类型: <see cref="Godot.LineEdit"/>, 路径: Encyclopedia.Panel2.MarginContainer.VBoxContainer2.MarginContainer.HBoxContainer.LineEdit
/// 类型: <see cref="Godot.ColorRect"/>, 路径: Encyclopedia.ColorRect
/// </summary>
public class LineEdit : UiNode<EncyclopediaPanel, Godot.LineEdit, LineEdit>
public class ColorRect : UiNode<EncyclopediaPanel, Godot.ColorRect, ColorRect>
{
public LineEdit(EncyclopediaPanel uiPanel, Godot.LineEdit node) : base(uiPanel, node) { }
public override LineEdit Clone() => new (UiPanel, (Godot.LineEdit)Instance.Duplicate());
public ColorRect(EncyclopediaPanel uiPanel, Godot.ColorRect node) : base(uiPanel, node) { }
public override ColorRect Clone() => new (UiPanel, (Godot.ColorRect)Instance.Duplicate());
}
/// <summary>
/// 类型: <see cref="Godot.Button"/>, 路径: Encyclopedia.Panel2.MarginContainer.VBoxContainer2.MarginContainer.HBoxContainer.Search
/// 类型: <see cref="Godot.Label"/>, 路径: Encyclopedia.NinePatchRect.TextureRect.Label
/// </summary>
public class Search : UiNode<EncyclopediaPanel, Godot.Button, Search>
public class Label : UiNode<EncyclopediaPanel, Godot.Label, Label>
{
public Search(EncyclopediaPanel uiPanel, Godot.Button node) : base(uiPanel, node) { }
public override Search Clone() => new (UiPanel, (Godot.Button)Instance.Duplicate());
public Label(EncyclopediaPanel uiPanel, Godot.Label node) : base(uiPanel, node) { }
public override Label Clone() => new (UiPanel, (Godot.Label)Instance.Duplicate());
}
/// <summary>
/// 类型: <see cref="Godot.HBoxContainer"/>, 路径: Encyclopedia.Panel2.MarginContainer.VBoxContainer2.MarginContainer.HBoxContainer
/// 类型: <see cref="Godot.TextureRect"/>, 路径: Encyclopedia.NinePatchRect.TextureRect
/// </summary>
public class HBoxContainer : UiNode<EncyclopediaPanel, Godot.HBoxContainer, HBoxContainer>
public class TextureRect : UiNode<EncyclopediaPanel, Godot.TextureRect, TextureRect>
{
/// <summary>
/// 使用 Instance 属性获取当前节点实例对象, 节点类型: <see cref="Godot.LineEdit"/>, 节点路径: Encyclopedia.Panel2.MarginContainer.VBoxContainer2.MarginContainer.LineEdit
/// 使用 Instance 属性获取当前节点实例对象, 节点类型: <see cref="Godot.Label"/>, 节点路径: Encyclopedia.NinePatchRect.Label
/// </summary>
public LineEdit L_LineEdit
public Label L_Label
{
get
{
if (_L_LineEdit == null) _L_LineEdit = new LineEdit(UiPanel, Instance.GetNode<Godot.LineEdit>("LineEdit"));
return _L_LineEdit;
if (_L_Label == null) _L_Label = new Label(UiPanel, Instance.GetNode<Godot.Label>("Label"));
return _L_Label;
}
}
private LineEdit _L_LineEdit;
private Label _L_Label;
/// <summary>
/// 使用 Instance 属性获取当前节点实例对象, 节点类型: <see cref="Godot.Button"/>, 节点路径: Encyclopedia.Panel2.MarginContainer.VBoxContainer2.MarginContainer.Search
/// </summary>
public Search L_Search
{
get
{
if (_L_Search == null) _L_Search = new Search(UiPanel, Instance.GetNode<Godot.Button>("Search"));
return _L_Search;
}
}
private Search _L_Search;
public HBoxContainer(EncyclopediaPanel uiPanel, Godot.HBoxContainer node) : base(uiPanel, node) { }
public override HBoxContainer Clone() => new (UiPanel, (Godot.HBoxContainer)Instance.Duplicate());
public TextureRect(EncyclopediaPanel uiPanel, Godot.TextureRect node) : base(uiPanel, node) { }
public override TextureRect Clone() => new (UiPanel, (Godot.TextureRect)Instance.Duplicate());
}
/// <summary>
/// 类型: <see cref="Godot.MarginContainer"/>, 路径: Encyclopedia.Panel2.MarginContainer.VBoxContainer2.MarginContainer
/// 类型: <see cref="Godot.NinePatchRect"/>, 路径: Encyclopedia.NinePatchRect.MarginContainer.HBoxContainer.VBoxContainer2.NinePatchRect.ScrollContainer.ObjectButton.Bg
/// </summary>
public class MarginContainer_1 : UiNode<EncyclopediaPanel, Godot.MarginContainer, MarginContainer_1>
public class Bg : UiNode<EncyclopediaPanel, Godot.NinePatchRect, Bg>
{
/// <summary>
/// 使用 Instance 属性获取当前节点实例对象, 节点类型: <see cref="Godot.HBoxContainer"/>, 节点路径: Encyclopedia.Panel2.MarginContainer.VBoxContainer2.HBoxContainer
/// </summary>
public HBoxContainer L_HBoxContainer
{
get
{
if (_L_HBoxContainer == null) _L_HBoxContainer = new HBoxContainer(UiPanel, Instance.GetNode<Godot.HBoxContainer>("HBoxContainer"));
return _L_HBoxContainer;
}
}
private HBoxContainer _L_HBoxContainer;
public MarginContainer_1(EncyclopediaPanel uiPanel, Godot.MarginContainer node) : base(uiPanel, node) { }
public override MarginContainer_1 Clone() => new (UiPanel, (Godot.MarginContainer)Instance.Duplicate());
public Bg(EncyclopediaPanel uiPanel, Godot.NinePatchRect node) : base(uiPanel, node) { }
public override Bg Clone() => new (UiPanel, (Godot.NinePatchRect)Instance.Duplicate());
}
/// <summary>
/// 类型: <see cref="Godot.TextureRect"/>, 路径: Encyclopedia.Panel2.MarginContainer.VBoxContainer2.ScrollContainer.ObjectButton.PreviewImage
/// 类型: <see cref="Godot.TextureRect"/>, 路径: Encyclopedia.NinePatchRect.MarginContainer.HBoxContainer.VBoxContainer2.NinePatchRect.ScrollContainer.ObjectButton.PreviewImage
/// </summary>
public class PreviewImage : UiNode<EncyclopediaPanel, Godot.TextureRect, PreviewImage>
{
@ -113,16 +113,7 @@ public abstract partial class Encyclopedia : UiBase
}
/// <summary>
/// 类型: <see cref="Godot.Label"/>, 路径: Encyclopedia.Panel2.MarginContainer.VBoxContainer2.ScrollContainer.ObjectButton.ObjectName
/// </summary>
public class ObjectName : UiNode<EncyclopediaPanel, Godot.Label, ObjectName>
{
public ObjectName(EncyclopediaPanel uiPanel, Godot.Label node) : base(uiPanel, node) { }
public override ObjectName Clone() => new (UiPanel, (Godot.Label)Instance.Duplicate());
}
/// <summary>
/// 类型: <see cref="Godot.NinePatchRect"/>, 路径: Encyclopedia.Panel2.MarginContainer.VBoxContainer2.ScrollContainer.ObjectButton.Select
/// 类型: <see cref="Godot.NinePatchRect"/>, 路径: Encyclopedia.NinePatchRect.MarginContainer.HBoxContainer.VBoxContainer2.NinePatchRect.ScrollContainer.ObjectButton.Select
/// </summary>
public class Select : UiNode<EncyclopediaPanel, Godot.NinePatchRect, Select>
{
@ -131,12 +122,25 @@ public abstract partial class Encyclopedia : UiBase
}
/// <summary>
/// 类型: <see cref="Godot.Button"/>, 路径: Encyclopedia.Panel2.MarginContainer.VBoxContainer2.ScrollContainer.ObjectButton
/// 类型: <see cref="Godot.TextureButton"/>, 路径: Encyclopedia.NinePatchRect.MarginContainer.HBoxContainer.VBoxContainer2.NinePatchRect.ScrollContainer.ObjectButton
/// </summary>
public class ObjectButton : UiNode<EncyclopediaPanel, Godot.Button, ObjectButton>
public class ObjectButton : UiNode<EncyclopediaPanel, Godot.TextureButton, ObjectButton>
{
/// <summary>
/// 使用 Instance 属性获取当前节点实例对象, 节点类型: <see cref="Godot.TextureRect"/>, 节点路径: Encyclopedia.Panel2.MarginContainer.VBoxContainer2.ScrollContainer.PreviewImage
/// 使用 Instance 属性获取当前节点实例对象, 节点类型: <see cref="Godot.NinePatchRect"/>, 节点路径: Encyclopedia.NinePatchRect.MarginContainer.HBoxContainer.VBoxContainer2.NinePatchRect.ScrollContainer.Bg
/// </summary>
public Bg L_Bg
{
get
{
if (_L_Bg == null) _L_Bg = new Bg(UiPanel, Instance.GetNode<Godot.NinePatchRect>("Bg"));
return _L_Bg;
}
}
private Bg _L_Bg;
/// <summary>
/// 使用 Instance 属性获取当前节点实例对象, 节点类型: <see cref="Godot.TextureRect"/>, 节点路径: Encyclopedia.NinePatchRect.MarginContainer.HBoxContainer.VBoxContainer2.NinePatchRect.ScrollContainer.PreviewImage
/// </summary>
public PreviewImage L_PreviewImage
{
@ -149,20 +153,7 @@ public abstract partial class Encyclopedia : UiBase
private PreviewImage _L_PreviewImage;
/// <summary>
/// 使用 Instance 属性获取当前节点实例对象, 节点类型: <see cref="Godot.Label"/>, 节点路径: Encyclopedia.Panel2.MarginContainer.VBoxContainer2.ScrollContainer.ObjectName
/// </summary>
public ObjectName L_ObjectName
{
get
{
if (_L_ObjectName == null) _L_ObjectName = new ObjectName(UiPanel, Instance.GetNode<Godot.Label>("ObjectName"));
return _L_ObjectName;
}
}
private ObjectName _L_ObjectName;
/// <summary>
/// 使用 Instance 属性获取当前节点实例对象, 节点类型: <see cref="Godot.NinePatchRect"/>, 节点路径: Encyclopedia.Panel2.MarginContainer.VBoxContainer2.ScrollContainer.Select
/// 使用 Instance 属性获取当前节点实例对象, 节点类型: <see cref="Godot.NinePatchRect"/>, 节点路径: Encyclopedia.NinePatchRect.MarginContainer.HBoxContainer.VBoxContainer2.NinePatchRect.ScrollContainer.Select
/// </summary>
public Select L_Select
{
@ -174,23 +165,23 @@ public abstract partial class Encyclopedia : UiBase
}
private Select _L_Select;
public ObjectButton(EncyclopediaPanel uiPanel, Godot.Button node) : base(uiPanel, node) { }
public override ObjectButton Clone() => new (UiPanel, (Godot.Button)Instance.Duplicate());
public ObjectButton(EncyclopediaPanel uiPanel, Godot.TextureButton node) : base(uiPanel, node) { }
public override ObjectButton Clone() => new (UiPanel, (Godot.TextureButton)Instance.Duplicate());
}
/// <summary>
/// 类型: <see cref="Godot.ScrollContainer"/>, 路径: Encyclopedia.Panel2.MarginContainer.VBoxContainer2.ScrollContainer
/// 类型: <see cref="Godot.ScrollContainer"/>, 路径: Encyclopedia.NinePatchRect.MarginContainer.HBoxContainer.VBoxContainer2.NinePatchRect.ScrollContainer
/// </summary>
public class ScrollContainer : UiNode<EncyclopediaPanel, Godot.ScrollContainer, ScrollContainer>
{
/// <summary>
/// 使用 Instance 属性获取当前节点实例对象, 节点类型: <see cref="Godot.Button"/>, 节点路径: Encyclopedia.Panel2.MarginContainer.VBoxContainer2.ObjectButton
/// 使用 Instance 属性获取当前节点实例对象, 节点类型: <see cref="Godot.TextureButton"/>, 节点路径: Encyclopedia.NinePatchRect.MarginContainer.HBoxContainer.VBoxContainer2.NinePatchRect.ObjectButton
/// </summary>
public ObjectButton L_ObjectButton
{
get
{
if (_L_ObjectButton == null) _L_ObjectButton = new ObjectButton(UiPanel, Instance.GetNode<Godot.Button>("ObjectButton"));
if (_L_ObjectButton == null) _L_ObjectButton = new ObjectButton(UiPanel, Instance.GetNode<Godot.TextureButton>("ObjectButton"));
return _L_ObjectButton;
}
}
@ -201,25 +192,12 @@ public abstract partial class Encyclopedia : UiBase
}
/// <summary>
/// 类型: <see cref="Godot.VBoxContainer"/>, 路径: Encyclopedia.Panel2.MarginContainer.VBoxContainer2
/// 类型: <see cref="Godot.NinePatchRect"/>, 路径: Encyclopedia.NinePatchRect.MarginContainer.HBoxContainer.VBoxContainer2.NinePatchRect
/// </summary>
public class VBoxContainer2 : UiNode<EncyclopediaPanel, Godot.VBoxContainer, VBoxContainer2>
public class NinePatchRect_1 : UiNode<EncyclopediaPanel, Godot.NinePatchRect, NinePatchRect_1>
{
/// <summary>
/// 使用 Instance 属性获取当前节点实例对象, 节点类型: <see cref="Godot.MarginContainer"/>, 节点路径: Encyclopedia.Panel2.MarginContainer.MarginContainer
/// </summary>
public MarginContainer_1 L_MarginContainer
{
get
{
if (_L_MarginContainer == null) _L_MarginContainer = new MarginContainer_1(UiPanel, Instance.GetNode<Godot.MarginContainer>("MarginContainer"));
return _L_MarginContainer;
}
}
private MarginContainer_1 _L_MarginContainer;
/// <summary>
/// 使用 Instance 属性获取当前节点实例对象, 节点类型: <see cref="Godot.ScrollContainer"/>, 节点路径: Encyclopedia.Panel2.MarginContainer.ScrollContainer
/// 使用 Instance 属性获取当前节点实例对象, 节点类型: <see cref="Godot.ScrollContainer"/>, 节点路径: Encyclopedia.NinePatchRect.MarginContainer.HBoxContainer.VBoxContainer2.ScrollContainer
/// </summary>
public ScrollContainer L_ScrollContainer
{
@ -231,17 +209,114 @@ public abstract partial class Encyclopedia : UiBase
}
private ScrollContainer _L_ScrollContainer;
public NinePatchRect_1(EncyclopediaPanel uiPanel, Godot.NinePatchRect node) : base(uiPanel, node) { }
public override NinePatchRect_1 Clone() => new (UiPanel, (Godot.NinePatchRect)Instance.Duplicate());
}
/// <summary>
/// 类型: <see cref="Godot.VBoxContainer"/>, 路径: Encyclopedia.NinePatchRect.MarginContainer.HBoxContainer.VBoxContainer2
/// </summary>
public class VBoxContainer2 : UiNode<EncyclopediaPanel, Godot.VBoxContainer, VBoxContainer2>
{
/// <summary>
/// 使用 Instance 属性获取当前节点实例对象, 节点类型: <see cref="Godot.NinePatchRect"/>, 节点路径: Encyclopedia.NinePatchRect.MarginContainer.HBoxContainer.NinePatchRect
/// </summary>
public NinePatchRect_1 L_NinePatchRect
{
get
{
if (_L_NinePatchRect == null) _L_NinePatchRect = new NinePatchRect_1(UiPanel, Instance.GetNode<Godot.NinePatchRect>("NinePatchRect"));
return _L_NinePatchRect;
}
}
private NinePatchRect_1 _L_NinePatchRect;
public VBoxContainer2(EncyclopediaPanel uiPanel, Godot.VBoxContainer node) : base(uiPanel, node) { }
public override VBoxContainer2 Clone() => new (UiPanel, (Godot.VBoxContainer)Instance.Duplicate());
}
/// <summary>
/// 类型: <see cref="Godot.MarginContainer"/>, 路径: Encyclopedia.Panel2.MarginContainer
/// 类型: <see cref="Godot.TextureRect"/>, 路径: Encyclopedia.NinePatchRect.MarginContainer.HBoxContainer.VBoxContainer3.NinePatchRect.VBoxContainer.TextureRect
/// </summary>
public class MarginContainer : UiNode<EncyclopediaPanel, Godot.MarginContainer, MarginContainer>
public class TextureRect_1 : UiNode<EncyclopediaPanel, Godot.TextureRect, TextureRect_1>
{
public TextureRect_1(EncyclopediaPanel uiPanel, Godot.TextureRect node) : base(uiPanel, node) { }
public override TextureRect_1 Clone() => new (UiPanel, (Godot.TextureRect)Instance.Duplicate());
}
/// <summary>
/// 类型: <see cref="Godot.VBoxContainer"/>, 路径: Encyclopedia.NinePatchRect.MarginContainer.HBoxContainer.VBoxContainer3.NinePatchRect.VBoxContainer
/// </summary>
public class VBoxContainer : UiNode<EncyclopediaPanel, Godot.VBoxContainer, VBoxContainer>
{
/// <summary>
/// 使用 Instance 属性获取当前节点实例对象, 节点类型: <see cref="Godot.VBoxContainer"/>, 节点路径: Encyclopedia.Panel2.VBoxContainer2
/// 使用 Instance 属性获取当前节点实例对象, 节点类型: <see cref="Godot.TextureRect"/>, 节点路径: Encyclopedia.NinePatchRect.MarginContainer.HBoxContainer.VBoxContainer3.NinePatchRect.TextureRect
/// </summary>
public TextureRect_1 L_TextureRect
{
get
{
if (_L_TextureRect == null) _L_TextureRect = new TextureRect_1(UiPanel, Instance.GetNode<Godot.TextureRect>("TextureRect"));
return _L_TextureRect;
}
}
private TextureRect_1 _L_TextureRect;
public VBoxContainer(EncyclopediaPanel uiPanel, Godot.VBoxContainer node) : base(uiPanel, node) { }
public override VBoxContainer Clone() => new (UiPanel, (Godot.VBoxContainer)Instance.Duplicate());
}
/// <summary>
/// 类型: <see cref="Godot.NinePatchRect"/>, 路径: Encyclopedia.NinePatchRect.MarginContainer.HBoxContainer.VBoxContainer3.NinePatchRect
/// </summary>
public class NinePatchRect_2 : UiNode<EncyclopediaPanel, Godot.NinePatchRect, NinePatchRect_2>
{
/// <summary>
/// 使用 Instance 属性获取当前节点实例对象, 节点类型: <see cref="Godot.VBoxContainer"/>, 节点路径: Encyclopedia.NinePatchRect.MarginContainer.HBoxContainer.VBoxContainer3.VBoxContainer
/// </summary>
public VBoxContainer L_VBoxContainer
{
get
{
if (_L_VBoxContainer == null) _L_VBoxContainer = new VBoxContainer(UiPanel, Instance.GetNode<Godot.VBoxContainer>("VBoxContainer"));
return _L_VBoxContainer;
}
}
private VBoxContainer _L_VBoxContainer;
public NinePatchRect_2(EncyclopediaPanel uiPanel, Godot.NinePatchRect node) : base(uiPanel, node) { }
public override NinePatchRect_2 Clone() => new (UiPanel, (Godot.NinePatchRect)Instance.Duplicate());
}
/// <summary>
/// 类型: <see cref="Godot.VBoxContainer"/>, 路径: Encyclopedia.NinePatchRect.MarginContainer.HBoxContainer.VBoxContainer3
/// </summary>
public class VBoxContainer3 : UiNode<EncyclopediaPanel, Godot.VBoxContainer, VBoxContainer3>
{
/// <summary>
/// 使用 Instance 属性获取当前节点实例对象, 节点类型: <see cref="Godot.NinePatchRect"/>, 节点路径: Encyclopedia.NinePatchRect.MarginContainer.HBoxContainer.NinePatchRect
/// </summary>
public NinePatchRect_2 L_NinePatchRect
{
get
{
if (_L_NinePatchRect == null) _L_NinePatchRect = new NinePatchRect_2(UiPanel, Instance.GetNode<Godot.NinePatchRect>("NinePatchRect"));
return _L_NinePatchRect;
}
}
private NinePatchRect_2 _L_NinePatchRect;
public VBoxContainer3(EncyclopediaPanel uiPanel, Godot.VBoxContainer node) : base(uiPanel, node) { }
public override VBoxContainer3 Clone() => new (UiPanel, (Godot.VBoxContainer)Instance.Duplicate());
}
/// <summary>
/// 类型: <see cref="Godot.HBoxContainer"/>, 路径: Encyclopedia.NinePatchRect.MarginContainer.HBoxContainer
/// </summary>
public class HBoxContainer : UiNode<EncyclopediaPanel, Godot.HBoxContainer, HBoxContainer>
{
/// <summary>
/// 使用 Instance 属性获取当前节点实例对象, 节点类型: <see cref="Godot.VBoxContainer"/>, 节点路径: Encyclopedia.NinePatchRect.MarginContainer.VBoxContainer2
/// </summary>
public VBoxContainer2 L_VBoxContainer2
{
@ -253,15 +328,63 @@ public abstract partial class Encyclopedia : UiBase
}
private VBoxContainer2 _L_VBoxContainer2;
/// <summary>
/// 使用 Instance 属性获取当前节点实例对象, 节点类型: <see cref="Godot.VBoxContainer"/>, 节点路径: Encyclopedia.NinePatchRect.MarginContainer.VBoxContainer3
/// </summary>
public VBoxContainer3 L_VBoxContainer3
{
get
{
if (_L_VBoxContainer3 == null) _L_VBoxContainer3 = new VBoxContainer3(UiPanel, Instance.GetNode<Godot.VBoxContainer>("VBoxContainer3"));
return _L_VBoxContainer3;
}
}
private VBoxContainer3 _L_VBoxContainer3;
public HBoxContainer(EncyclopediaPanel uiPanel, Godot.HBoxContainer node) : base(uiPanel, node) { }
public override HBoxContainer Clone() => new (UiPanel, (Godot.HBoxContainer)Instance.Duplicate());
}
/// <summary>
/// 类型: <see cref="Godot.MarginContainer"/>, 路径: Encyclopedia.NinePatchRect.MarginContainer
/// </summary>
public class MarginContainer : UiNode<EncyclopediaPanel, Godot.MarginContainer, MarginContainer>
{
/// <summary>
/// 使用 Instance 属性获取当前节点实例对象, 节点类型: <see cref="Godot.HBoxContainer"/>, 节点路径: Encyclopedia.NinePatchRect.HBoxContainer
/// </summary>
public HBoxContainer L_HBoxContainer
{
get
{
if (_L_HBoxContainer == null) _L_HBoxContainer = new HBoxContainer(UiPanel, Instance.GetNode<Godot.HBoxContainer>("HBoxContainer"));
return _L_HBoxContainer;
}
}
private HBoxContainer _L_HBoxContainer;
public MarginContainer(EncyclopediaPanel uiPanel, Godot.MarginContainer node) : base(uiPanel, node) { }
public override MarginContainer Clone() => new (UiPanel, (Godot.MarginContainer)Instance.Duplicate());
}
/// <summary>
/// 类型: <see cref="Godot.Panel"/>, 路径: Encyclopedia.Panel2
/// 类型: <see cref="Godot.NinePatchRect"/>, 路径: Encyclopedia.NinePatchRect
/// </summary>
public class Panel2 : UiNode<EncyclopediaPanel, Godot.Panel, Panel2>
public class NinePatchRect : UiNode<EncyclopediaPanel, Godot.NinePatchRect, NinePatchRect>
{
/// <summary>
/// 使用 Instance 属性获取当前节点实例对象, 节点类型: <see cref="Godot.TextureRect"/>, 节点路径: Encyclopedia.TextureRect
/// </summary>
public TextureRect L_TextureRect
{
get
{
if (_L_TextureRect == null) _L_TextureRect = new TextureRect(UiPanel, Instance.GetNode<Godot.TextureRect>("TextureRect"));
return _L_TextureRect;
}
}
private TextureRect _L_TextureRect;
/// <summary>
/// 使用 Instance 属性获取当前节点实例对象, 节点类型: <see cref="Godot.MarginContainer"/>, 节点路径: Encyclopedia.MarginContainer
/// </summary>
@ -275,59 +398,83 @@ public abstract partial class Encyclopedia : UiBase
}
private MarginContainer _L_MarginContainer;
public Panel2(EncyclopediaPanel uiPanel, Godot.Panel node) : base(uiPanel, node) { }
public override Panel2 Clone() => new (UiPanel, (Godot.Panel)Instance.Duplicate());
public NinePatchRect(EncyclopediaPanel uiPanel, Godot.NinePatchRect node) : base(uiPanel, node) { }
public override NinePatchRect Clone() => new (UiPanel, (Godot.NinePatchRect)Instance.Duplicate());
}
/// <summary>
/// 类型: <see cref="Godot.Sprite2D"/>, 路径: Encyclopedia.Gui
/// </summary>
public class Gui : UiNode<EncyclopediaPanel, Godot.Sprite2D, Gui>
{
public Gui(EncyclopediaPanel uiPanel, Godot.Sprite2D node) : base(uiPanel, node) { }
public override Gui Clone() => new (UiPanel, (Godot.Sprite2D)Instance.Duplicate());
}
/// <summary>
/// 场景中唯一名称的节点, 节点类型: <see cref="Godot.LineEdit"/>, 节点路径: Encyclopedia.Panel2.MarginContainer.VBoxContainer2.MarginContainer.HBoxContainer.LineEdit
/// 场景中唯一名称的节点, 节点类型: <see cref="Godot.ColorRect"/>, 节点路径: Encyclopedia.ColorRect
/// </summary>
public LineEdit S_LineEdit => L_Panel2.L_MarginContainer.L_VBoxContainer2.L_MarginContainer.L_HBoxContainer.L_LineEdit;
public ColorRect S_ColorRect => L_ColorRect;
/// <summary>
/// 场景中唯一名称的节点, 节点类型: <see cref="Godot.Button"/>, 节点路径: Encyclopedia.Panel2.MarginContainer.VBoxContainer2.MarginContainer.HBoxContainer.Search
/// 场景中唯一名称的节点, 节点类型: <see cref="Godot.Label"/>, 节点路径: Encyclopedia.NinePatchRect.TextureRect.Label
/// </summary>
public Search S_Search => L_Panel2.L_MarginContainer.L_VBoxContainer2.L_MarginContainer.L_HBoxContainer.L_Search;
public Label S_Label => L_NinePatchRect.L_TextureRect.L_Label;
/// <summary>
/// 场景中唯一名称的节点, 节点类型: <see cref="Godot.HBoxContainer"/>, 节点路径: Encyclopedia.Panel2.MarginContainer.VBoxContainer2.MarginContainer.HBoxContainer
/// 场景中唯一名称的节点, 节点类型: <see cref="Godot.NinePatchRect"/>, 节点路径: Encyclopedia.NinePatchRect.MarginContainer.HBoxContainer.VBoxContainer2.NinePatchRect.ScrollContainer.ObjectButton.Bg
/// </summary>
public HBoxContainer S_HBoxContainer => L_Panel2.L_MarginContainer.L_VBoxContainer2.L_MarginContainer.L_HBoxContainer;
public Bg S_Bg => L_NinePatchRect.L_MarginContainer.L_HBoxContainer.L_VBoxContainer2.L_NinePatchRect.L_ScrollContainer.L_ObjectButton.L_Bg;
/// <summary>
/// 场景中唯一名称的节点, 节点类型: <see cref="Godot.TextureRect"/>, 节点路径: Encyclopedia.Panel2.MarginContainer.VBoxContainer2.ScrollContainer.ObjectButton.PreviewImage
/// 场景中唯一名称的节点, 节点类型: <see cref="Godot.TextureRect"/>, 节点路径: Encyclopedia.NinePatchRect.MarginContainer.HBoxContainer.VBoxContainer2.NinePatchRect.ScrollContainer.ObjectButton.PreviewImage
/// </summary>
public PreviewImage S_PreviewImage => L_Panel2.L_MarginContainer.L_VBoxContainer2.L_ScrollContainer.L_ObjectButton.L_PreviewImage;
public PreviewImage S_PreviewImage => L_NinePatchRect.L_MarginContainer.L_HBoxContainer.L_VBoxContainer2.L_NinePatchRect.L_ScrollContainer.L_ObjectButton.L_PreviewImage;
/// <summary>
/// 场景中唯一名称的节点, 节点类型: <see cref="Godot.Label"/>, 节点路径: Encyclopedia.Panel2.MarginContainer.VBoxContainer2.ScrollContainer.ObjectButton.ObjectName
/// 场景中唯一名称的节点, 节点类型: <see cref="Godot.NinePatchRect"/>, 节点路径: Encyclopedia.NinePatchRect.MarginContainer.HBoxContainer.VBoxContainer2.NinePatchRect.ScrollContainer.ObjectButton.Select
/// </summary>
public ObjectName S_ObjectName => L_Panel2.L_MarginContainer.L_VBoxContainer2.L_ScrollContainer.L_ObjectButton.L_ObjectName;
public Select S_Select => L_NinePatchRect.L_MarginContainer.L_HBoxContainer.L_VBoxContainer2.L_NinePatchRect.L_ScrollContainer.L_ObjectButton.L_Select;
/// <summary>
/// 场景中唯一名称的节点, 节点类型: <see cref="Godot.NinePatchRect"/>, 节点路径: Encyclopedia.Panel2.MarginContainer.VBoxContainer2.ScrollContainer.ObjectButton.Select
/// 场景中唯一名称的节点, 节点类型: <see cref="Godot.TextureButton"/>, 节点路径: Encyclopedia.NinePatchRect.MarginContainer.HBoxContainer.VBoxContainer2.NinePatchRect.ScrollContainer.ObjectButton
/// </summary>
public Select S_Select => L_Panel2.L_MarginContainer.L_VBoxContainer2.L_ScrollContainer.L_ObjectButton.L_Select;
public ObjectButton S_ObjectButton => L_NinePatchRect.L_MarginContainer.L_HBoxContainer.L_VBoxContainer2.L_NinePatchRect.L_ScrollContainer.L_ObjectButton;
/// <summary>
/// 场景中唯一名称的节点, 节点类型: <see cref="Godot.Button"/>, 节点路径: Encyclopedia.Panel2.MarginContainer.VBoxContainer2.ScrollContainer.ObjectButton
/// 场景中唯一名称的节点, 节点类型: <see cref="Godot.ScrollContainer"/>, 节点路径: Encyclopedia.NinePatchRect.MarginContainer.HBoxContainer.VBoxContainer2.NinePatchRect.ScrollContainer
/// </summary>
public ObjectButton S_ObjectButton => L_Panel2.L_MarginContainer.L_VBoxContainer2.L_ScrollContainer.L_ObjectButton;
public ScrollContainer S_ScrollContainer => L_NinePatchRect.L_MarginContainer.L_HBoxContainer.L_VBoxContainer2.L_NinePatchRect.L_ScrollContainer;
/// <summary>
/// 场景中唯一名称的节点, 节点类型: <see cref="Godot.ScrollContainer"/>, 节点路径: Encyclopedia.Panel2.MarginContainer.VBoxContainer2.ScrollContainer
/// 场景中唯一名称的节点, 节点类型: <see cref="Godot.VBoxContainer"/>, 节点路径: Encyclopedia.NinePatchRect.MarginContainer.HBoxContainer.VBoxContainer2
/// </summary>
public ScrollContainer S_ScrollContainer => L_Panel2.L_MarginContainer.L_VBoxContainer2.L_ScrollContainer;
public VBoxContainer2 S_VBoxContainer2 => L_NinePatchRect.L_MarginContainer.L_HBoxContainer.L_VBoxContainer2;
/// <summary>
/// 场景中唯一名称的节点, 节点类型: <see cref="Godot.VBoxContainer"/>, 节点路径: Encyclopedia.Panel2.MarginContainer.VBoxContainer2
/// 场景中唯一名称的节点, 节点类型: <see cref="Godot.VBoxContainer"/>, 节点路径: Encyclopedia.NinePatchRect.MarginContainer.HBoxContainer.VBoxContainer3.NinePatchRect.VBoxContainer
/// </summary>
public VBoxContainer2 S_VBoxContainer2 => L_Panel2.L_MarginContainer.L_VBoxContainer2;
public VBoxContainer S_VBoxContainer => L_NinePatchRect.L_MarginContainer.L_HBoxContainer.L_VBoxContainer3.L_NinePatchRect.L_VBoxContainer;
/// <summary>
/// 场景中唯一名称的节点, 节点类型: <see cref="Godot.Panel"/>, 节点路径: Encyclopedia.Panel2
/// 场景中唯一名称的节点, 节点类型: <see cref="Godot.VBoxContainer"/>, 节点路径: Encyclopedia.NinePatchRect.MarginContainer.HBoxContainer.VBoxContainer3
/// </summary>
public Panel2 S_Panel2 => L_Panel2;
public VBoxContainer3 S_VBoxContainer3 => L_NinePatchRect.L_MarginContainer.L_HBoxContainer.L_VBoxContainer3;
/// <summary>
/// 场景中唯一名称的节点, 节点类型: <see cref="Godot.HBoxContainer"/>, 节点路径: Encyclopedia.NinePatchRect.MarginContainer.HBoxContainer
/// </summary>
public HBoxContainer S_HBoxContainer => L_NinePatchRect.L_MarginContainer.L_HBoxContainer;
/// <summary>
/// 场景中唯一名称的节点, 节点类型: <see cref="Godot.MarginContainer"/>, 节点路径: Encyclopedia.NinePatchRect.MarginContainer
/// </summary>
public MarginContainer S_MarginContainer => L_NinePatchRect.L_MarginContainer;
/// <summary>
/// 场景中唯一名称的节点, 节点类型: <see cref="Godot.Sprite2D"/>, 节点路径: Encyclopedia.Gui
/// </summary>
public Gui S_Gui => L_Gui;
}

View File

@ -1,3 +1,5 @@
using System.Linq;
using Config;
using Godot;
namespace UI.Encyclopedia;
@ -5,9 +7,16 @@ namespace UI.Encyclopedia;
public partial class EncyclopediaPanel : Encyclopedia
{
private UiGrid<ObjectButton, ExcelConfig.ActivityBase> _grid;
private long _id;
public override void OnCreateUi()
{
_grid = CreateUiGrid<ObjectButton, ExcelConfig.ActivityBase, ItemCell>(S_ObjectButton);
_grid.SetHorizontalExpand(true);
_grid.SetAutoColumns(true);
_grid.SetCellOffset(new Vector2I(10, 10));
ShowWeaponItem();
}
public override void OnDestroyUi()
@ -15,4 +24,14 @@ public partial class EncyclopediaPanel : Encyclopedia
}
private void ShowWeaponItem()
{
StopCoroutine(_id);
_id = StartCoroutine(
_grid.SetDataListCoroutine(
ExcelConfig.ActivityBase_List.Where(data => data.Type == ActivityType.Weapon).ToArray()
)
);
}
}

View File

@ -0,0 +1,28 @@
using System.Collections;
using Config;
namespace UI.Encyclopedia;
public class ItemCell : UiCell<Encyclopedia.ObjectButton, ExcelConfig.ActivityBase>
{
public override void OnInit()
{
CellNode.L_Select.Instance.Visible = false;
}
public override IEnumerator OnSetDataCoroutine(ExcelConfig.ActivityBase data)
{
CellNode.L_PreviewImage.Instance.Texture = ResourceManager.LoadTexture2D(data.Icon);
yield break;
}
public override void OnSelect()
{
CellNode.L_Select.Instance.Visible = true;
}
public override void OnUnSelect()
{
CellNode.L_Select.Instance.Visible = false;
}
}

View File

@ -430,7 +430,7 @@ public partial class MapEditorMapMarkPanel : MapEditorMapMark
//为了引用不变, 所以这里使用克隆数据
dataMarkInfo.CloneFrom(mark);
//刷新 Cell
markCell.SetData(markCell.Data);
markCell.UpdateData(markCell.Data);
//执行排序
markCell.Grid.Sort();
EventManager.EmitEvent(EventEnum.OnEditMark, dataMarkInfo);

View File

@ -81,7 +81,7 @@ public partial class TileEditArea : EditorGridBg
if (uiCell != null && !uiCell.Data)
{
_useMask.Add(cell);
uiCell.SetData(true);
uiCell.UpdateData(true);
EventManager.EmitEvent(EventEnum.OnSelectCombinationCell, cell);
}
@ -100,7 +100,7 @@ public partial class TileEditArea : EditorGridBg
if (uiCell != null && uiCell.Data)
{
_useMask.Remove(cell);
uiCell.SetData(false);
uiCell.UpdateData(false);
EventManager.EmitEvent(EventEnum.OnRemoveCombinationCell, cell);
}
@ -119,7 +119,7 @@ public partial class TileEditArea : EditorGridBg
var uiCell = _maskGrid.GetCell(i);
if (uiCell.Data)
{
uiCell.SetData(false);
uiCell.UpdateData(false);
}
}

View File

@ -65,7 +65,7 @@ public partial class TileSelected : VBoxContainer, IUiNodeScript
var uiCell = Grid.Find(c => c.Data.CombinationInfo.Id == data.CombinationInfo.Id);
if (uiCell != null)
{
uiCell.SetData(data);
uiCell.UpdateData(data);
}
EventManager.EmitEvent(EventEnum.OnTileSetDirty);
}