diff --git a/DungeonShooting_Godot/excel/excelFile/ActivityBase.xlsx b/DungeonShooting_Godot/excel/excelFile/ActivityBase.xlsx index 6a223ce..0dc50ce 100644 --- a/DungeonShooting_Godot/excel/excelFile/ActivityBase.xlsx +++ b/DungeonShooting_Godot/excel/excelFile/ActivityBase.xlsx Binary files differ diff --git a/DungeonShooting_Godot/excel/excelFile/ActivityMaterial.xlsx b/DungeonShooting_Godot/excel/excelFile/ActivityMaterial.xlsx index bd510bd..9f2979b 100644 --- a/DungeonShooting_Godot/excel/excelFile/ActivityMaterial.xlsx +++ b/DungeonShooting_Godot/excel/excelFile/ActivityMaterial.xlsx Binary files differ diff --git a/DungeonShooting_Godot/excel/excelFile/AiAttackAttr.xlsx b/DungeonShooting_Godot/excel/excelFile/AiAttackAttr.xlsx index 40dfdd7..693f907 100644 --- a/DungeonShooting_Godot/excel/excelFile/AiAttackAttr.xlsx +++ b/DungeonShooting_Godot/excel/excelFile/AiAttackAttr.xlsx Binary files differ diff --git a/DungeonShooting_Godot/excel/excelFile/BulletBase.xlsx b/DungeonShooting_Godot/excel/excelFile/BulletBase.xlsx index c96665f..d7c0d11 100644 --- a/DungeonShooting_Godot/excel/excelFile/BulletBase.xlsx +++ b/DungeonShooting_Godot/excel/excelFile/BulletBase.xlsx Binary files differ diff --git a/DungeonShooting_Godot/excel/excelFile/EnemyBase.xlsx b/DungeonShooting_Godot/excel/excelFile/EnemyBase.xlsx index ec33827..4a59086 100644 --- a/DungeonShooting_Godot/excel/excelFile/EnemyBase.xlsx +++ b/DungeonShooting_Godot/excel/excelFile/EnemyBase.xlsx Binary files differ diff --git a/DungeonShooting_Godot/excel/excelFile/LiquidMaterial.xlsx b/DungeonShooting_Godot/excel/excelFile/LiquidMaterial.xlsx index fec81d5..0b20dc6 100644 --- a/DungeonShooting_Godot/excel/excelFile/LiquidMaterial.xlsx +++ b/DungeonShooting_Godot/excel/excelFile/LiquidMaterial.xlsx Binary files differ diff --git a/DungeonShooting_Godot/excel/excelFile/Sound.xlsx b/DungeonShooting_Godot/excel/excelFile/Sound.xlsx index 614fb08..6b4a890 100644 --- a/DungeonShooting_Godot/excel/excelFile/Sound.xlsx +++ b/DungeonShooting_Godot/excel/excelFile/Sound.xlsx Binary files differ diff --git a/DungeonShooting_Godot/excel/excelFile/WeaponBase.xlsx b/DungeonShooting_Godot/excel/excelFile/WeaponBase.xlsx index 92e09ef..a669ff0 100644 --- a/DungeonShooting_Godot/excel/excelFile/WeaponBase.xlsx +++ b/DungeonShooting_Godot/excel/excelFile/WeaponBase.xlsx Binary files differ diff --git a/DungeonShooting_Godot/prefab/ui/MapEditor.tscn b/DungeonShooting_Godot/prefab/ui/MapEditor.tscn index edb4ebc..6f63c6a 100644 --- a/DungeonShooting_Godot/prefab/ui/MapEditor.tscn +++ b/DungeonShooting_Godot/prefab/ui/MapEditor.tscn @@ -4,7 +4,7 @@ [ext_resource type="Texture2D" uid="uid://cajcnlimvoxk" path="res://resource/sprite/ui/commonIcon/Back.png" id="2_gkcw7"] [ext_resource type="Texture2D" uid="uid://cat35d7ueu7gu" path="res://resource/sprite/ui/commonIcon/Save.png" id="3_qq8k4"] [ext_resource type="Texture2D" uid="uid://7l7aqhsaexoh" path="res://resource/sprite/ui/commonIcon/Play.png" id="4_2imnr"] -[ext_resource type="Texture2D" uid="uid://0878uloew5jo" path="res://resource/sprite/ui/mapEditor/ErrorCell.png" id="4_465u2"] +[ext_resource type="Texture2D" uid="uid://0878uloew5jo" path="res://resource/sprite/ui/commonIcon/Block.png" id="4_465u2"] [ext_resource type="Script" path="res://src/game/ui/mapEditor/tileView/EditorTileMap.cs" id="4_mhy1a"] [ext_resource type="Texture2D" uid="uid://bpbfjyj6258da" path="res://resource/sprite/ui/commonIcon/Setting.png" id="5_ubl8b"] [ext_resource type="PackedScene" uid="uid://b4u66mxndxbrg" path="res://prefab/ui/MapEditorTools.tscn" id="6_7pvgu"] diff --git a/DungeonShooting_Godot/prefab/ui/MapEditorCreateMark.tscn b/DungeonShooting_Godot/prefab/ui/MapEditorCreateMark.tscn index 5e4d4ab..2cee601 100644 --- a/DungeonShooting_Godot/prefab/ui/MapEditorCreateMark.tscn +++ b/DungeonShooting_Godot/prefab/ui/MapEditorCreateMark.tscn @@ -1,15 +1,28 @@ -[gd_scene load_steps=10 format=3 uid="uid://bt4xo2lb4h4rx"] +[gd_scene load_steps=12 format=3 uid="uid://bt4xo2lb4h4rx"] [ext_resource type="Script" path="res://src/game/ui/mapEditorCreateMark/MapEditorCreateMarkPanel.cs" id="1_cjivg"] [ext_resource type="Texture2D" uid="uid://n4atvj5fkcpg" path="res://resource/sprite/ui/commonIcon/Add.png" id="2_pxemo"] [ext_resource type="Material" uid="uid://cces3bhds7jyi" path="res://resource/material/Blend.tres" id="2_xb40b"] [ext_resource type="Texture2D" uid="uid://c5778ntk2rdon" path="res://resource/sprite/ui/commonIcon/Delete.png" id="3_7xihk"] [ext_resource type="Texture2D" uid="uid://dligpyhp72sg7" path="res://resource/sprite/ui/commonIcon/Right.png" id="3_v5clf"] +[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="4_7uegb"] [ext_resource type="Script" path="res://src/game/ui/mapEditorCreateMark/attribute/NumberAttribute.cs" id="6_1ym7l"] [ext_resource type="Script" path="res://src/game/ui/mapEditorCreateMark/attribute/ObjectAttribute.cs" id="7_516p2"] [ext_resource type="Script" path="res://src/game/ui/mapEditorCreateMark/attribute/OptionAttribute.cs" id="7_o1tg2"] [ext_resource type="Texture2D" uid="uid://dggb6p4sdmfry" path="res://resource/sprite/ui/commonIcon/Edit.png" id="7_yeuy4"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_ywcv8"] +resource_local_to_scene = true +shader = ExtResource("4_7uegb") +shader_parameter/blend = Color(1, 1, 1, 1) +shader_parameter/schedule = 0.0 +shader_parameter/modulate = Color(1, 1, 1, 1) +shader_parameter/show_outline = true +shader_parameter/outline_color = Color(1, 1, 1, 1) +shader_parameter/outline_rainbow = false +shader_parameter/outline_use_blend = true +shader_parameter/grey = 0.0 + [node name="MapEditorCreateMark" type="Control"] layout_mode = 3 anchors_preset = 15 @@ -260,7 +273,7 @@ icon_alignment = 1 [node name="Icon" type="TextureRect" parent="MarginContainer/VBoxContainer/Panel/MarginContainer/VBoxContainer/ScrollContainer/MarkObject/VBoxContainer/HBoxContainer"] -material = ExtResource("2_xb40b") +material = SubResource("ShaderMaterial_ywcv8") custom_minimum_size = Vector2(100, 80) layout_mode = 2 stretch_mode = 5 diff --git a/DungeonShooting_Godot/prefab/ui/MapEditorMapMark.tscn b/DungeonShooting_Godot/prefab/ui/MapEditorMapMark.tscn index b39b3e1..5980ffa 100644 --- a/DungeonShooting_Godot/prefab/ui/MapEditorMapMark.tscn +++ b/DungeonShooting_Godot/prefab/ui/MapEditorMapMark.tscn @@ -1,13 +1,26 @@ -[gd_scene load_steps=9 format=3 uid="uid://peo0n8bl15y5"] +[gd_scene load_steps=11 format=3 uid="uid://peo0n8bl15y5"] [ext_resource type="Script" path="res://src/game/ui/mapEditorMapMark/MapEditorMapMarkPanel.cs" id="1_dudey"] [ext_resource type="Texture2D" uid="uid://n4atvj5fkcpg" path="res://resource/sprite/ui/commonIcon/Add.png" id="2_osya0"] [ext_resource type="Texture2D" uid="uid://dggb6p4sdmfry" path="res://resource/sprite/ui/commonIcon/Edit.png" id="3_wwaki"] [ext_resource type="Texture2D" uid="uid://c5778ntk2rdon" path="res://resource/sprite/ui/commonIcon/Delete.png" id="4_urq7y"] [ext_resource type="Texture2D" uid="uid://d4gduco55dqpk" path="res://resource/sprite/ui/commonIcon/Down.png" id="5_x5dpw"] -[ext_resource type="Texture2D" uid="uid://cgtmjuiks7mot" path="res://resource/sprite/ui/commonIcon/WaveCell.png" id="6_eod5i"] [ext_resource type="Texture2D" uid="uid://bn47bmilcw4x0" path="res://resource/sprite/ui/commonIcon/Select2.png" id="6_jpt3y"] -[ext_resource type="Texture2D" uid="uid://bylf0kxccwgdw" path="res://resource/sprite/ui/commonIcon/MarkCell.png" id="8_xyhe6"] +[ext_resource type="Texture2D" uid="uid://dqvg18aacx6db" path="res://resource/sprite/ui/commonIcon/Visible.png" id="6_qiemx"] +[ext_resource type="Texture2D" uid="uid://btetxb0hqoifk" path="res://resource/sprite/ui/commonIcon/MarkCell_placeholder.png" id="8_p8o70"] +[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="9_vr0bo"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_xxv8l"] +resource_local_to_scene = true +shader = ExtResource("9_vr0bo") +shader_parameter/blend = Color(1, 1, 1, 1) +shader_parameter/schedule = 0.0 +shader_parameter/modulate = Color(1, 1, 1, 1) +shader_parameter/show_outline = true +shader_parameter/outline_color = Color(1, 1, 1, 1) +shader_parameter/outline_rainbow = false +shader_parameter/outline_use_blend = true +shader_parameter/grey = 0.0 [node name="MapEditorMapMark" type="Control"] layout_mode = 3 @@ -83,6 +96,7 @@ size_flags_horizontal = 3 [node name="WaveContainer" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/VBoxContainer/WaveItem"] +custom_minimum_size = Vector2(0, 68) layout_mode = 2 [node name="TextureButton" type="TextureButton" parent="VBoxContainer/ScrollContainer/VBoxContainer/WaveItem/WaveContainer"] @@ -95,7 +109,6 @@ layout_mode = 2 size_flags_horizontal = 3 text = "第1波" -icon = ExtResource("6_eod5i") alignment = 0 [node name="Select" type="NinePatchRect" parent="VBoxContainer/ScrollContainer/VBoxContainer/WaveItem/WaveContainer/WaveButton"] @@ -112,6 +125,11 @@ patch_margin_right = 3 patch_margin_bottom = 3 +[node name="WaveVisibleButton" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer/WaveItem/WaveContainer"] +custom_minimum_size = Vector2(36, 36) +layout_mode = 2 +icon = ExtResource("6_qiemx") + [node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/ScrollContainer/VBoxContainer/WaveItem"] layout_mode = 2 theme_override_constants/margin_left = 40 @@ -132,10 +150,23 @@ layout_mode = 2 size_flags_horizontal = 3 text = "1001" -icon = ExtResource("8_xyhe6") +icon = ExtResource("8_p8o70") alignment = 0 text_overrun_behavior = 3 +[node name="MarkIcon" type="TextureRect" parent="VBoxContainer/ScrollContainer/VBoxContainer/WaveItem/MarkContainer/MarkItem/MarkButton"] +material = SubResource("ShaderMaterial_xxv8l") +layout_mode = 1 +anchors_preset = 9 +anchor_bottom = 1.0 +offset_left = 3.0 +offset_top = 3.0 +offset_right = 69.0 +offset_bottom = -3.0 +grow_vertical = 2 +expand_mode = 2 +stretch_mode = 5 + [node name="Select" type="NinePatchRect" parent="VBoxContainer/ScrollContainer/VBoxContainer/WaveItem/MarkContainer/MarkItem/MarkButton"] visible = false layout_mode = 1 diff --git a/DungeonShooting_Godot/prefab/ui/MapEditorSelectObject.tscn b/DungeonShooting_Godot/prefab/ui/MapEditorSelectObject.tscn index e56477f..041820f 100644 --- a/DungeonShooting_Godot/prefab/ui/MapEditorSelectObject.tscn +++ b/DungeonShooting_Godot/prefab/ui/MapEditorSelectObject.tscn @@ -1,9 +1,21 @@ -[gd_scene load_steps=5 format=3 uid="uid://ie52mo5t6l2h"] +[gd_scene load_steps=6 format=3 uid="uid://ie52mo5t6l2h"] [ext_resource type="Script" path="res://src/game/ui/mapEditorSelectObject/MapEditorSelectObjectPanel.cs" id="1_hdfkd"] -[ext_resource type="Material" uid="uid://cces3bhds7jyi" path="res://resource/material/Blend.tres" id="2_j6gjm"] [ext_resource type="Texture2D" uid="uid://bn47bmilcw4x0" path="res://resource/sprite/ui/commonIcon/Select2.png" id="3_4nhjm"] [ext_resource type="Texture2D" uid="uid://blfvsup876agh" path="res://resource/sprite/ui/commonIcon/Search.png" id="3_laasd"] +[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="4_uomdx"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_8bgig"] +resource_local_to_scene = true +shader = ExtResource("4_uomdx") +shader_parameter/blend = Color(1, 1, 1, 1) +shader_parameter/schedule = 0.0 +shader_parameter/modulate = Color(1, 1, 1, 1) +shader_parameter/show_outline = true +shader_parameter/outline_color = Color(1, 1, 1, 1) +shader_parameter/outline_rainbow = false +shader_parameter/outline_use_blend = true +shader_parameter/grey = 0.0 [node name="MapEditorSelectObject" type="Control"] layout_mode = 3 @@ -122,7 +134,7 @@ layout_mode = 2 [node name="PreviewImage" type="TextureRect" parent="HBoxContainer/Panel2/MarginContainer/VBoxContainer2/ScrollContainer/ObjectButton"] -material = ExtResource("2_j6gjm") +material = SubResource("ShaderMaterial_8bgig") layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -134,6 +146,7 @@ grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 +expand_mode = 2 stretch_mode = 5 [node name="ObjectName" type="Label" parent="HBoxContainer/Panel2/MarginContainer/VBoxContainer2/ScrollContainer/ObjectButton"] diff --git a/DungeonShooting_Godot/prefab/ui/MapEditorTools.tscn b/DungeonShooting_Godot/prefab/ui/MapEditorTools.tscn index e22fa78..a5bcf61 100644 --- a/DungeonShooting_Godot/prefab/ui/MapEditorTools.tscn +++ b/DungeonShooting_Godot/prefab/ui/MapEditorTools.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=10 format=3 uid="uid://b4u66mxndxbrg"] +[gd_scene load_steps=12 format=3 uid="uid://b4u66mxndxbrg"] [ext_resource type="Script" path="res://src/game/ui/mapEditorTools/MapEditorToolsPanel.cs" id="1_mqp1c"] [ext_resource type="Script" path="res://src/game/ui/mapEditorTools/DoorHoverArea.cs" id="2_6qfy3"] @@ -6,10 +6,23 @@ [ext_resource type="Script" path="res://src/game/ui/mapEditorTools/DoorDragArea.cs" id="3_3w0w6"] [ext_resource type="Script" path="res://src/game/ui/mapEditorTools/DoorDragButton.cs" id="3_45muq"] [ext_resource type="Texture2D" uid="uid://4wupcp53rrpi" path="res://resource/sprite/ui/mapEditorTools/DoorDragButton.png" id="3_trbb5"] +[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="6_krtnu"] [ext_resource type="Texture2D" uid="uid://dnty1a2tcawos" path="res://resource/sprite/ui/commonIcon/Mark.png" id="6_n7h3g"] [ext_resource type="Script" path="res://src/game/ui/mapEditorTools/MarkTool.cs" id="7_ekxcj"] [ext_resource type="Texture2D" uid="uid://cuntr7hec044f" path="res://resource/sprite/ui/commonIcon/Select.png" id="7_mqmd6"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_wxp5t"] +resource_local_to_scene = true +shader = ExtResource("6_krtnu") +shader_parameter/blend = Color(1, 1, 1, 1) +shader_parameter/schedule = 0.0 +shader_parameter/modulate = Color(1, 1, 1, 1) +shader_parameter/show_outline = true +shader_parameter/outline_color = Color(0, 0, 0, 1) +shader_parameter/outline_rainbow = false +shader_parameter/outline_use_blend = true +shader_parameter/grey = 0.0 + [node name="MapEditorTools" type="Control"] layout_mode = 3 anchors_preset = 15 @@ -151,10 +164,13 @@ script = ExtResource("3_45muq") [node name="MarkTemplate" type="TextureRect" parent="ToolRoot"] +material = SubResource("ShaderMaterial_wxp5t") layout_mode = 0 -offset_right = 7.0 -offset_bottom = 7.0 +offset_right = 16.0 +offset_bottom = 16.0 texture = ExtResource("6_n7h3g") +expand_mode = 2 +stretch_mode = 5 script = ExtResource("7_ekxcj") [node name="HBoxContainer" type="HBoxContainer" parent="."] diff --git a/DungeonShooting_Godot/resource/config/ActivityBase.json b/DungeonShooting_Godot/resource/config/ActivityBase.json index cff476b..c49dbc4 100644 --- a/DungeonShooting_Godot/resource/config/ActivityBase.json +++ b/DungeonShooting_Godot/resource/config/ActivityBase.json @@ -140,7 +140,7 @@ "IsStatic": false, "__Material": "", "Prefab": "res://prefab/weapon/Weapon0009.tscn", - "Icon": "res://resource/sprite/weapon/weapon0009/Weapon0009.png", + "Icon": "res://resource/sprite/weapon/weapon0009/weapon0009.png", "ShowInMapEditor": true }, { diff --git a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle1/Preview.png b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle1/Preview.png index f359ae7..908f7ce 100644 --- a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle1/Preview.png +++ b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle1/Preview.png Binary files differ diff --git a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle3/Preview.png b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle3/Preview.png index d6290c0..7276ff0 100644 --- a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle3/Preview.png +++ b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle3/Preview.png Binary files differ diff --git a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle4/Preview.png b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle4/Preview.png index 952d28b..a8f84c1 100644 --- a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle4/Preview.png +++ b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle4/Preview.png Binary files differ diff --git a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle5/Preview.png b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle5/Preview.png index d263705..c9a72b9 100644 --- a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle5/Preview.png +++ b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle5/Preview.png Binary files differ diff --git a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/inlet/Start1/Preinstall.json b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/inlet/Start1/Preinstall.json index c401b01..d17e052 100644 --- a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/inlet/Start1/Preinstall.json +++ b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/inlet/Start1/Preinstall.json @@ -1 +1 @@ -[{"Name":"test1","Weight":100,"Remark":"","WaveList":[[{"Position":{"X":19,"Y":2},"Size":{"X":0,"Y":0},"SpecialMarkType":1,"DelayTime":0,"MarkList":[]},{"Position":{"X":24,"Y":-14},"Size":{"X":0,"Y":0},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0001","Weight":100,"Attr":{"CurrAmmon":"30","ResidueAmmo":"210"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":6,"Y":34},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0002","Weight":100,"Attr":{"CurrAmmon":"7","ResidueAmmo":"70"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-42,"Y":9},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0004","Weight":100,"Attr":{"CurrAmmon":"180","ResidueAmmo":"90"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-63,"Y":-18},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0005","Weight":100,"Attr":{"CurrAmmon":"10","ResidueAmmo":"40"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-31,"Y":-16},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0003","Weight":100,"Attr":{"CurrAmmon":"12","ResidueAmmo":"90"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-47,"Y":32},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0006","Weight":100,"Attr":{"CurrAmmon":"20","ResidueAmmo":"300"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":2,"Y":-25},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0007","Weight":100,"Attr":{"CurrAmmon":"60","ResidueAmmo":"300"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-80,"Y":14},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0008","Weight":100,"Attr":{"CurrAmmon":"10","ResidueAmmo":"120"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-75,"Y":47},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0009","Weight":100,"Attr":{"CurrAmmon":"1","ResidueAmmo":"25"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":46,"Y":1},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0011","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":36,"Y":49},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0012","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-90,"Y":-23},"Size":{"X":3,"Y":6},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0013","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-91,"Y":-6},"Size":{"X":0,"Y":0},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0014","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]}],[{"Position":{"X":57,"Y":56},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0003","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":67,"Y":28},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0.5,"MarkList":[{"Id":"prop5000","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":60,"Y":-19},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":1,"MarkList":[{"Id":"prop5001","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":34,"Y":23},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":1.5,"MarkList":[{"Id":"prop0002","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-11,"Y":8},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0010","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-20,"Y":33},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0010","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]}]]}] \ No newline at end of file +[{"Name":"test1","Weight":100,"Remark":"","WaveList":[[{"Position":{"X":15,"Y":12},"Size":{"X":14,"Y":16},"SpecialMarkType":1,"DelayTime":0,"MarkList":[]},{"Position":{"X":23,"Y":-7},"Size":{"X":30,"Y":12},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0001","Weight":100,"Attr":{"CurrAmmon":"30","ResidueAmmo":"210"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":8,"Y":32},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0002","Weight":100,"Attr":{"CurrAmmon":"7","ResidueAmmo":"70"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-40,"Y":7},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0004","Weight":100,"Attr":{"CurrAmmon":"180","ResidueAmmo":"90"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-63,"Y":-18},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0005","Weight":100,"Attr":{"CurrAmmon":"10","ResidueAmmo":"40"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-31,"Y":-16},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0003","Weight":100,"Attr":{"CurrAmmon":"12","ResidueAmmo":"90"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-54,"Y":33},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0006","Weight":100,"Attr":{"CurrAmmon":"20","ResidueAmmo":"300"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":2,"Y":-25},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0007","Weight":100,"Attr":{"CurrAmmon":"60","ResidueAmmo":"300"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-76,"Y":21},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0008","Weight":100,"Attr":{"CurrAmmon":"10","ResidueAmmo":"120"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-82,"Y":53},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0009","Weight":100,"Attr":{"CurrAmmon":"1","ResidueAmmo":"25"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":58,"Y":4},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0011","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":45,"Y":55},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0012","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-90,"Y":-26},"Size":{"X":13,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0013","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-91,"Y":-6},"Size":{"X":14,"Y":13},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0014","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]}],[{"Position":{"X":72,"Y":62},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0003","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":67,"Y":28},"Size":{"X":16,"Y":17},"SpecialMarkType":0,"DelayTime":0.5,"MarkList":[{"Id":"prop5000","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":60,"Y":-19},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":1,"MarkList":[{"Id":"prop5001","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":37,"Y":24},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":1.5,"MarkList":[{"Id":"prop0002","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-11,"Y":6},"Size":{"X":18,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0010","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-21,"Y":32},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0010","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]}]]},{"Name":"test2","Weight":100,"Remark":"","WaveList":[[{"Position":{"X":0,"Y":0},"Size":{"X":0,"Y":0},"SpecialMarkType":1,"DelayTime":0,"MarkList":[]}]]}] \ No newline at end of file diff --git a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/inlet/Start3/Preinstall.json b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/inlet/Start3/Preinstall.json index e064a98..876f2c4 100644 --- a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/inlet/Start3/Preinstall.json +++ b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/inlet/Start3/Preinstall.json @@ -1 +1 @@ -[{"Name":"test1","Weight":100,"Remark":"","WaveList":[[{"Position":{"X":-84,"Y":-46},"Size":{"X":0,"Y":0},"SpecialMarkType":1,"DelayTime":0,"MarkList":[]},{"Position":{"X":-56,"Y":-72},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0002","Weight":100,"Attr":{"CurrAmmon":"7","ResidueAmmo":"70"},"Altitude":8,"VerticalSpeed":0}]}],[{"Position":{"X":30,"Y":75},"Size":{"X":29,"Y":28},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"-1","Weapon":null},"Altitude":0,"VerticalSpeed":0}]},{"Position":{"X":25,"Y":-16},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0.8,"MarkList":[{"Id":"weapon0001","Weight":100,"Attr":{"CurrAmmon":"30","ResidueAmmo":"210"},"Altitude":8,"VerticalSpeed":0}]}]]}] \ No newline at end of file +[{"Name":"test1","Weight":100,"Remark":"","WaveList":[[{"Position":{"X":-84,"Y":-46},"Size":{"X":0,"Y":0},"SpecialMarkType":1,"DelayTime":0,"MarkList":[]},{"Position":{"X":-56,"Y":-72},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0002","Weight":100,"Attr":{"CurrAmmon":"7","ResidueAmmo":"70"},"Altitude":8,"VerticalSpeed":0}]}],[{"Position":{"X":33,"Y":65},"Size":{"X":29,"Y":28},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"-1","Weapon":null},"Altitude":0,"VerticalSpeed":0}]},{"Position":{"X":25,"Y":-16},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0.8,"MarkList":[{"Id":"weapon0001","Weight":100,"Attr":{"CurrAmmon":"30","ResidueAmmo":"210"},"Altitude":8,"VerticalSpeed":0}]}]]}] \ No newline at end of file diff --git a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/outlet/End1/Preview.png b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/outlet/End1/Preview.png index 6224d08..81b14c4 100644 --- a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/outlet/End1/Preview.png +++ b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/outlet/End1/Preview.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/ui/commonIcon/MarkCell_placeholder.png b/DungeonShooting_Godot/resource/sprite/ui/commonIcon/MarkCell_placeholder.png new file mode 100644 index 0000000..96254ab --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/ui/commonIcon/MarkCell_placeholder.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/ui/commonIcon/MarkCell_placeholder.png.import b/DungeonShooting_Godot/resource/sprite/ui/commonIcon/MarkCell_placeholder.png.import new file mode 100644 index 0000000..c831760 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/ui/commonIcon/MarkCell_placeholder.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://btetxb0hqoifk" +path="res://.godot/imported/MarkCell_placeholder.png-3a18357616f44b78a52dfd42481b4ab7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/ui/commonIcon/MarkCell_placeholder.png" +dest_files=["res://.godot/imported/MarkCell_placeholder.png-3a18357616f44b78a52dfd42481b4ab7.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 diff --git a/DungeonShooting_Godot/resource/sprite/ui/commonIcon/UnknownActivity.png b/DungeonShooting_Godot/resource/sprite/ui/commonIcon/UnknownActivity.png new file mode 100644 index 0000000..6a1506e --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/ui/commonIcon/UnknownActivity.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/ui/commonIcon/UnknownActivity.png.import b/DungeonShooting_Godot/resource/sprite/ui/commonIcon/UnknownActivity.png.import new file mode 100644 index 0000000..ffbfaed --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/ui/commonIcon/UnknownActivity.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://1eqav76paiqv" +path="res://.godot/imported/UnknownActivity.png-5fbff6de6d1cc957c18d5771c90605f2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/ui/commonIcon/UnknownActivity.png" +dest_files=["res://.godot/imported/UnknownActivity.png-5fbff6de6d1cc957c18d5771c90605f2.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 diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs index e5d9cd2..acf87b7 100644 --- a/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs +++ b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs @@ -217,11 +217,11 @@ /// public bool ShowOutline { - get => _blendShaderMaterial == null ? false : _blendShaderMaterial.GetShaderParameter(_shader_show_outline).AsBool(); + get => _blendShaderMaterial == null ? false : _blendShaderMaterial.GetShaderParameter(ShaderParamNames.ShowOutline).AsBool(); set { - _blendShaderMaterial?.SetShaderParameter(_shader_show_outline, value); - _shadowBlendShaderMaterial?.SetShaderParameter(_shader_show_outline, value); + _blendShaderMaterial?.SetShaderParameter(ShaderParamNames.ShowOutline, value); + _shadowBlendShaderMaterial?.SetShaderParameter(ShaderParamNames.ShowOutline, value); } } @@ -230,8 +230,8 @@ /// public Color OutlineColor { - get => _blendShaderMaterial == null ? Colors.Black : _blendShaderMaterial.GetShaderParameter(_shader_outline_color).AsColor(); - set => _blendShaderMaterial?.SetShaderParameter(_shader_outline_color, value); + get => _blendShaderMaterial == null ? Colors.Black : _blendShaderMaterial.GetShaderParameter(ShaderParamNames.OutlineColor).AsColor(); + set => _blendShaderMaterial?.SetShaderParameter(ShaderParamNames.OutlineColor, value); } /// @@ -239,8 +239,8 @@ /// public float Grey { - get => _blendShaderMaterial == null ? 0 : _blendShaderMaterial.GetShaderParameter(_shader_grey).AsSingle(); - set => _blendShaderMaterial?.SetShaderParameter(_shader_grey, value); + get => _blendShaderMaterial == null ? 0 : _blendShaderMaterial.GetShaderParameter(ShaderParamNames.Grey).AsSingle(); + set => _blendShaderMaterial?.SetShaderParameter(ShaderParamNames.Grey, value); } /// @@ -256,10 +256,6 @@ // -------------------------------------------------------------------------------- - private static readonly StringName _shader_grey = "grey"; - private static readonly StringName _shader_outline_color = "outline_color"; - private static readonly StringName _shader_show_outline = "show_outline"; - //是否正在调用组件 Update 函数 private bool _updatingComp = false; //组件集合 @@ -368,8 +364,8 @@ _shadowBlendShaderMaterial = ShadowSprite.Material as ShaderMaterial; if (_shadowBlendShaderMaterial != null && _blendShaderMaterial != null) { - var value = _blendShaderMaterial.GetShaderParameter(_shader_show_outline); - _shadowBlendShaderMaterial.SetShaderParameter(_shader_show_outline, value); + var value = _blendShaderMaterial.GetShaderParameter(ShaderParamNames.ShowOutline); + _shadowBlendShaderMaterial.SetShaderParameter(ShaderParamNames.ShowOutline, value); } ShadowSprite.Visible = false; diff --git a/DungeonShooting_Godot/src/game/ShaderParamNames.cs b/DungeonShooting_Godot/src/game/ShaderParamNames.cs new file mode 100644 index 0000000..e09a4c7 --- /dev/null +++ b/DungeonShooting_Godot/src/game/ShaderParamNames.cs @@ -0,0 +1,32 @@ + +using Godot; + +/// +/// Shader 中的参数名称 +/// +public static class ShaderParamNames +{ + /// + /// 灰度 + /// + public static readonly StringName Grey = "grey"; + /// + /// 轮廓颜色 + /// + public static readonly StringName OutlineColor = "outline_color"; + /// + /// 是否显示轮廓 + /// + public static readonly StringName ShowOutline = "show_outline"; + + /// + /// 快速设置一个材质的 shader 材质参数 + /// + public static void SetShaderMaterialParameter(this Material material, StringName param, Variant value) + { + if (material is ShaderMaterial shaderMaterial) + { + shaderMaterial.SetShaderParameter(param, value); + } + } +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/game/data/MarkInfoVisibleData.cs b/DungeonShooting_Godot/src/game/data/MarkInfoVisibleData.cs new file mode 100644 index 0000000..d241ac0 --- /dev/null +++ b/DungeonShooting_Godot/src/game/data/MarkInfoVisibleData.cs @@ -0,0 +1,15 @@ + +/// +/// 编辑器标记数据显示隐藏状态数据 +/// +public struct MarkInfoVisibleData +{ + public MarkInfo MarkInfo; + public bool Visible; + + public MarkInfoVisibleData(MarkInfo markInfo, bool visible) + { + MarkInfo = markInfo; + Visible = visible; + } +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/game/event/EventEnum.cs b/DungeonShooting_Godot/src/game/event/EventEnum.cs index e4e6e99..b08d418 100644 --- a/DungeonShooting_Godot/src/game/event/EventEnum.cs +++ b/DungeonShooting_Godot/src/game/event/EventEnum.cs @@ -143,4 +143,8 @@ /// 删除标记, 参数 /// OnDeleteMark, + /// + /// 设置标记显示状态, 参数 + /// + OnSetMarkVisible, } diff --git a/DungeonShooting_Godot/src/game/manager/EditorManager.cs b/DungeonShooting_Godot/src/game/manager/EditorManager.cs index 2e4e2a2..e6bc977 100644 --- a/DungeonShooting_Godot/src/game/manager/EditorManager.cs +++ b/DungeonShooting_Godot/src/game/manager/EditorManager.cs @@ -84,6 +84,10 @@ } } + /// + /// 选中预设 + /// + /// 预设索引 public static void SetSelectPreinstallIndex(int index) { if (SelectRoom == null) @@ -108,7 +112,11 @@ EventManager.EmitEvent(EventEnum.OnSelectPreinstall, SelectPreinstall); } } - + + /// + /// 选中波数 + /// + /// 波数索引 public static void SetSelectWaveIndex(int index) { if (SelectPreinstall == null) @@ -140,6 +148,9 @@ } } + /// + /// 选中某个标记 + /// public static void SetSelectMark(MarkInfo markInfo) { if (SelectMark != markInfo) diff --git a/DungeonShooting_Godot/src/game/manager/ResourceManager.cs b/DungeonShooting_Godot/src/game/manager/ResourceManager.cs index c4d4962..4220c89 100644 --- a/DungeonShooting_Godot/src/game/manager/ResourceManager.cs +++ b/DungeonShooting_Godot/src/game/manager/ResourceManager.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using Config; using Godot; /// @@ -169,6 +170,19 @@ { return Load(path, useCache); } + + /// + /// 根据 ActivityBase 表 Id 获取物体图标 + /// + public static Texture2D GetActivityIcon(string id) + { + if (id != null && ExcelConfig.ActivityBase_Map.TryGetValue(id, out var activityBase)) + { + return LoadTexture2D(activityBase.Icon); + } + + return LoadTexture2D(ResourcePath.resource_sprite_ui_commonIcon_UnknownActivity_png); + } /// /// 将普通路径转化为 Godot 资源路径 diff --git a/DungeonShooting_Godot/src/game/manager/ResourcePath.cs b/DungeonShooting_Godot/src/game/manager/ResourcePath.cs index 33f5a53..19463ca 100644 --- a/DungeonShooting_Godot/src/game/manager/ResourcePath.cs +++ b/DungeonShooting_Godot/src/game/manager/ResourcePath.cs @@ -297,6 +297,7 @@ public const string resource_sprite_ui_commonIcon_Lock_png = "res://resource/sprite/ui/commonIcon/Lock.png"; public const string resource_sprite_ui_commonIcon_Mark_png = "res://resource/sprite/ui/commonIcon/Mark.png"; public const string resource_sprite_ui_commonIcon_MarkCell_png = "res://resource/sprite/ui/commonIcon/MarkCell.png"; + public const string resource_sprite_ui_commonIcon_MarkCell_placeholder_png = "res://resource/sprite/ui/commonIcon/MarkCell_placeholder.png"; public const string resource_sprite_ui_commonIcon_PenTool_png = "res://resource/sprite/ui/commonIcon/PenTool.png"; public const string resource_sprite_ui_commonIcon_Play_png = "res://resource/sprite/ui/commonIcon/Play.png"; public const string resource_sprite_ui_commonIcon_Right_png = "res://resource/sprite/ui/commonIcon/Right.png"; @@ -306,6 +307,7 @@ public const string resource_sprite_ui_commonIcon_Select2_png = "res://resource/sprite/ui/commonIcon/Select2.png"; public const string resource_sprite_ui_commonIcon_Setting_png = "res://resource/sprite/ui/commonIcon/Setting.png"; public const string resource_sprite_ui_commonIcon_Unknown_png = "res://resource/sprite/ui/commonIcon/Unknown.png"; + public const string resource_sprite_ui_commonIcon_UnknownActivity_png = "res://resource/sprite/ui/commonIcon/UnknownActivity.png"; public const string resource_sprite_ui_commonIcon_Unlock_png = "res://resource/sprite/ui/commonIcon/Unlock.png"; public const string resource_sprite_ui_commonIcon_Visible_png = "res://resource/sprite/ui/commonIcon/Visible.png"; public const string resource_sprite_ui_commonIcon_WaveCell_png = "res://resource/sprite/ui/commonIcon/WaveCell.png"; diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorMapMark/EditorMarkCell.cs b/DungeonShooting_Godot/src/game/ui/mapEditorMapMark/EditorMarkCell.cs index 8f96ec5..f22d72c 100644 --- a/DungeonShooting_Godot/src/game/ui/mapEditorMapMark/EditorMarkCell.cs +++ b/DungeonShooting_Godot/src/game/ui/mapEditorMapMark/EditorMarkCell.cs @@ -1,5 +1,6 @@ using System; using Config; +using Godot; using UI.MapEditor; namespace UI.MapEditorMapMark; @@ -17,6 +18,7 @@ public override void OnSetData(MapEditorMapMarkPanel.MarkCellData data) { + var textureRect = CellNode.L_MarkButton.L_MarkIcon.Instance; var text = ""; //物体名称 if (data.MarkInfo.MarkList != null && data.MarkInfo.MarkList.Count > 0) @@ -33,16 +35,21 @@ str += ExcelConfig.ActivityBase_Map[markInfoItem.Id].Name; } text += str; + //显示图标 + var markInfo = data.MarkInfo.MarkList[0]; + textureRect.Texture = ResourceManager.GetActivityIcon(markInfo.Id); } else { if (data.MarkInfo.SpecialMarkType == SpecialMarkType.BirthPoint) { text = "出生标记"; + textureRect.Texture = ResourceManager.GetActivityIcon(null); } else { text += "空"; + textureRect.Texture = null; } } @@ -56,6 +63,7 @@ text += "\n" + data.MarkInfo.DelayTime + "秒"; } + //显示文本 CellNode.L_MarkButton.Instance.Text = text; } diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorMapMark/EditorWaveCell.cs b/DungeonShooting_Godot/src/game/ui/mapEditorMapMark/EditorWaveCell.cs index f03c09a..2e5786c 100644 --- a/DungeonShooting_Godot/src/game/ui/mapEditorMapMark/EditorWaveCell.cs +++ b/DungeonShooting_Godot/src/game/ui/mapEditorMapMark/EditorWaveCell.cs @@ -6,6 +6,11 @@ public class EditorWaveCell : UiCell> { + /// + /// 标记显示/隐藏状态 + /// + public bool MarkVisible { get; private set; } = true; + public UiGrid MarkGrid; public override void OnInit() @@ -13,6 +18,7 @@ //这里不绑定 Click 函数, 而是绑定 OnClickHandler, 因为 Select 交给 MapEditorMapMarkPanel 处理了 CellNode.L_WaveContainer.L_WaveButton.Instance.Pressed += OnClickHandler; CellNode.L_WaveContainer.L_TextureButton.Instance.Pressed += OnExpandOrClose; + CellNode.L_WaveContainer.L_WaveVisibleButton.Instance.Pressed += OnChangeMarkVisible; CellNode.L_MarginContainer.L_AddMarkButton.Instance.Pressed += OnAddMark; CellNode.L_MarkContainer.L_MarkItem.Instance.SetHorizontalExpand(true); @@ -34,6 +40,11 @@ MarkGrid.SetDataList(array); //执行排序操作 MarkGrid.Sort(); + + if (!MarkVisible) + { + SetWaveVisible(true); + } } public override void OnRefreshIndex() @@ -98,6 +109,40 @@ } /// + /// 点击显示/隐藏按钮 + /// + public void OnChangeMarkVisible() + { + var val = !MarkVisible; + SetWaveVisible(val); + + //通知标记隐藏 + for (var i = 0; i < MarkGrid.Count; i++) + { + var markCellData = MarkGrid.GetCell(i).Data; + EventManager.EmitEvent(EventEnum.OnSetMarkVisible, new MarkInfoVisibleData(markCellData.MarkInfo, val)); + } + } + + /// + /// 设置 WaveVisibleButton 按钮显示的图标, 显示/隐藏 + /// + public void SetWaveVisible(bool v) + { + MarkVisible = v; + if (v) + { + CellNode.L_WaveContainer.L_WaveVisibleButton.Instance.Icon = + ResourceManager.LoadTexture2D(ResourcePath.resource_sprite_ui_commonIcon_Visible_png); + } + else + { + CellNode.L_WaveContainer.L_WaveVisibleButton.Instance.Icon = + ResourceManager.LoadTexture2D(ResourcePath.resource_sprite_ui_commonIcon_Hide_png); + } + } + + /// /// 是否展开 /// public bool IsExpand() diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorMapMark/MapEditorMapMark.cs b/DungeonShooting_Godot/src/game/ui/mapEditorMapMark/MapEditorMapMark.cs index 2661fec..75f5c82 100644 --- a/DungeonShooting_Godot/src/game/ui/mapEditorMapMark/MapEditorMapMark.cs +++ b/DungeonShooting_Godot/src/game/ui/mapEditorMapMark/MapEditorMapMark.cs @@ -12,7 +12,7 @@ { get { - if (_L_VBoxContainer == null) _L_VBoxContainer = new VBoxContainer((MapEditorMapMarkPanel)this, GetNodeOrNull("VBoxContainer")); + if (_L_VBoxContainer == null) _L_VBoxContainer = new VBoxContainer((MapEditorMapMarkPanel)this, GetNode("VBoxContainer")); return _L_VBoxContainer; } } @@ -25,6 +25,7 @@ public sealed override void OnInitNestedUi() { + } /// @@ -84,7 +85,7 @@ { get { - if (_L_PreinstallOption == null) _L_PreinstallOption = new PreinstallOption(UiPanel, Instance.GetNodeOrNull("PreinstallOption")); + if (_L_PreinstallOption == null) _L_PreinstallOption = new PreinstallOption(UiPanel, Instance.GetNode("PreinstallOption")); return _L_PreinstallOption; } } @@ -97,7 +98,7 @@ { get { - if (_L_AddPreinstall == null) _L_AddPreinstall = new AddPreinstall(UiPanel, Instance.GetNodeOrNull("AddPreinstall")); + if (_L_AddPreinstall == null) _L_AddPreinstall = new AddPreinstall(UiPanel, Instance.GetNode("AddPreinstall")); return _L_AddPreinstall; } } @@ -110,7 +111,7 @@ { get { - if (_L_EditPreinstall == null) _L_EditPreinstall = new EditPreinstall(UiPanel, Instance.GetNodeOrNull("EditPreinstall")); + if (_L_EditPreinstall == null) _L_EditPreinstall = new EditPreinstall(UiPanel, Instance.GetNode("EditPreinstall")); return _L_EditPreinstall; } } @@ -123,7 +124,7 @@ { get { - if (_L_DeletePreinstall == null) _L_DeletePreinstall = new DeletePreinstall(UiPanel, Instance.GetNodeOrNull("DeletePreinstall")); + if (_L_DeletePreinstall == null) _L_DeletePreinstall = new DeletePreinstall(UiPanel, Instance.GetNode("DeletePreinstall")); return _L_DeletePreinstall; } } @@ -172,7 +173,7 @@ { get { - if (_L_EditButton == null) _L_EditButton = new EditButton(UiPanel, Instance.GetNodeOrNull("EditButton")); + if (_L_EditButton == null) _L_EditButton = new EditButton(UiPanel, Instance.GetNode("EditButton")); return _L_EditButton; } } @@ -185,7 +186,7 @@ { get { - if (_L_DeleteButton == null) _L_DeleteButton = new DeleteButton(UiPanel, Instance.GetNodeOrNull("DeleteButton")); + if (_L_DeleteButton == null) _L_DeleteButton = new DeleteButton(UiPanel, Instance.GetNode("DeleteButton")); return _L_DeleteButton; } } @@ -234,7 +235,7 @@ { get { - if (_L_Select == null) _L_Select = new Select(UiPanel, Instance.GetNodeOrNull("Select")); + if (_L_Select == null) _L_Select = new Select(UiPanel, Instance.GetNode("Select")); return _L_Select; } } @@ -245,6 +246,15 @@ } /// + /// 类型: , 路径: MapEditorMapMark.VBoxContainer.ScrollContainer.VBoxContainer.WaveItem.WaveContainer.WaveVisibleButton + /// + public class WaveVisibleButton : UiNode + { + public WaveVisibleButton(MapEditorMapMarkPanel uiPanel, Godot.Button node) : base(uiPanel, node) { } + public override WaveVisibleButton Clone() => new (UiPanel, (Godot.Button)Instance.Duplicate()); + } + + /// /// 类型: , 路径: MapEditorMapMark.VBoxContainer.ScrollContainer.VBoxContainer.WaveItem.WaveContainer /// public class WaveContainer : UiNode @@ -256,7 +266,7 @@ { get { - if (_L_TextureButton == null) _L_TextureButton = new TextureButton(UiPanel, Instance.GetNodeOrNull("TextureButton")); + if (_L_TextureButton == null) _L_TextureButton = new TextureButton(UiPanel, Instance.GetNode("TextureButton")); return _L_TextureButton; } } @@ -269,12 +279,25 @@ { get { - if (_L_WaveButton == null) _L_WaveButton = new WaveButton(UiPanel, Instance.GetNodeOrNull("WaveButton")); + if (_L_WaveButton == null) _L_WaveButton = new WaveButton(UiPanel, Instance.GetNode("WaveButton")); return _L_WaveButton; } } private WaveButton _L_WaveButton; + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorMapMark.VBoxContainer.ScrollContainer.VBoxContainer.WaveItem.WaveVisibleButton + /// + public WaveVisibleButton L_WaveVisibleButton + { + get + { + if (_L_WaveVisibleButton == null) _L_WaveVisibleButton = new WaveVisibleButton(UiPanel, Instance.GetNode("WaveVisibleButton")); + return _L_WaveVisibleButton; + } + } + private WaveVisibleButton _L_WaveVisibleButton; + public WaveContainer(MapEditorMapMarkPanel uiPanel, Godot.HBoxContainer node) : base(uiPanel, node) { } public override WaveContainer Clone() => new (UiPanel, (Godot.HBoxContainer)Instance.Duplicate()); } @@ -300,7 +323,7 @@ { get { - if (_L_AddMarkButton == null) _L_AddMarkButton = new AddMarkButton(UiPanel, Instance.GetNodeOrNull("AddMarkButton")); + if (_L_AddMarkButton == null) _L_AddMarkButton = new AddMarkButton(UiPanel, Instance.GetNode("AddMarkButton")); return _L_AddMarkButton; } } @@ -311,6 +334,15 @@ } /// + /// 类型: , 路径: MapEditorMapMark.VBoxContainer.ScrollContainer.VBoxContainer.WaveItem.MarkContainer.MarkItem.MarkButton.MarkIcon + /// + public class MarkIcon : UiNode + { + public MarkIcon(MapEditorMapMarkPanel uiPanel, Godot.TextureRect node) : base(uiPanel, node) { } + public override MarkIcon Clone() => new (UiPanel, (Godot.TextureRect)Instance.Duplicate()); + } + + /// /// 类型: , 路径: MapEditorMapMark.VBoxContainer.ScrollContainer.VBoxContainer.WaveItem.MarkContainer.MarkItem.MarkButton.Select /// public class Select_1 : UiNode @@ -325,13 +357,26 @@ public class MarkButton : UiNode { /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorMapMark.VBoxContainer.ScrollContainer.VBoxContainer.WaveItem.MarkContainer.MarkItem.MarkIcon + /// + public MarkIcon L_MarkIcon + { + get + { + if (_L_MarkIcon == null) _L_MarkIcon = new MarkIcon(UiPanel, Instance.GetNode("MarkIcon")); + return _L_MarkIcon; + } + } + private MarkIcon _L_MarkIcon; + + /// /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: MapEditorMapMark.VBoxContainer.ScrollContainer.VBoxContainer.WaveItem.MarkContainer.MarkItem.Select /// public Select_1 L_Select { get { - if (_L_Select == null) _L_Select = new Select_1(UiPanel, Instance.GetNodeOrNull("Select")); + if (_L_Select == null) _L_Select = new Select_1(UiPanel, Instance.GetNode("Select")); return _L_Select; } } @@ -353,7 +398,7 @@ { get { - if (_L_MarkButton == null) _L_MarkButton = new MarkButton(UiPanel, Instance.GetNodeOrNull("MarkButton")); + if (_L_MarkButton == null) _L_MarkButton = new MarkButton(UiPanel, Instance.GetNode("MarkButton")); return _L_MarkButton; } } @@ -375,7 +420,7 @@ { get { - if (_L_MarkItem == null) _L_MarkItem = new MarkItem(UiPanel, Instance.GetNodeOrNull("MarkItem")); + if (_L_MarkItem == null) _L_MarkItem = new MarkItem(UiPanel, Instance.GetNode("MarkItem")); return _L_MarkItem; } } @@ -397,7 +442,7 @@ { get { - if (_L_WaveContainer == null) _L_WaveContainer = new WaveContainer(UiPanel, Instance.GetNodeOrNull("WaveContainer")); + if (_L_WaveContainer == null) _L_WaveContainer = new WaveContainer(UiPanel, Instance.GetNode("WaveContainer")); return _L_WaveContainer; } } @@ -410,7 +455,7 @@ { get { - if (_L_MarginContainer == null) _L_MarginContainer = new MarginContainer(UiPanel, Instance.GetNodeOrNull("MarginContainer")); + if (_L_MarginContainer == null) _L_MarginContainer = new MarginContainer(UiPanel, Instance.GetNode("MarginContainer")); return _L_MarginContainer; } } @@ -423,7 +468,7 @@ { get { - if (_L_MarkContainer == null) _L_MarkContainer = new MarkContainer(UiPanel, Instance.GetNodeOrNull("MarkContainer")); + if (_L_MarkContainer == null) _L_MarkContainer = new MarkContainer(UiPanel, Instance.GetNode("MarkContainer")); return _L_MarkContainer; } } @@ -445,7 +490,7 @@ { get { - if (_L_AddWaveButton == null) _L_AddWaveButton = new AddWaveButton(UiPanel, Instance.GetNodeOrNull("AddWaveButton")); + if (_L_AddWaveButton == null) _L_AddWaveButton = new AddWaveButton(UiPanel, Instance.GetNode("AddWaveButton")); return _L_AddWaveButton; } } @@ -458,7 +503,7 @@ { get { - if (_L_WaveItem == null) _L_WaveItem = new WaveItem(UiPanel, Instance.GetNodeOrNull("WaveItem")); + if (_L_WaveItem == null) _L_WaveItem = new WaveItem(UiPanel, Instance.GetNode("WaveItem")); return _L_WaveItem; } } @@ -480,7 +525,7 @@ { get { - if (_L_VBoxContainer == null) _L_VBoxContainer = new VBoxContainer_1(UiPanel, Instance.GetNodeOrNull("VBoxContainer")); + if (_L_VBoxContainer == null) _L_VBoxContainer = new VBoxContainer_1(UiPanel, Instance.GetNode("VBoxContainer")); return _L_VBoxContainer; } } @@ -502,7 +547,7 @@ { get { - if (_L_MarkLabel == null) _L_MarkLabel = new MarkLabel(UiPanel, Instance.GetNodeOrNull("MarkLabel")); + if (_L_MarkLabel == null) _L_MarkLabel = new MarkLabel(UiPanel, Instance.GetNode("MarkLabel")); return _L_MarkLabel; } } @@ -515,7 +560,7 @@ { get { - if (_L_HBoxContainer == null) _L_HBoxContainer = new HBoxContainer(UiPanel, Instance.GetNodeOrNull("HBoxContainer")); + if (_L_HBoxContainer == null) _L_HBoxContainer = new HBoxContainer(UiPanel, Instance.GetNode("HBoxContainer")); return _L_HBoxContainer; } } @@ -528,7 +573,7 @@ { get { - if (_L_MarkLabel2 == null) _L_MarkLabel2 = new MarkLabel2(UiPanel, Instance.GetNodeOrNull("MarkLabel2")); + if (_L_MarkLabel2 == null) _L_MarkLabel2 = new MarkLabel2(UiPanel, Instance.GetNode("MarkLabel2")); return _L_MarkLabel2; } } @@ -541,7 +586,7 @@ { get { - if (_L_DynamicTool == null) _L_DynamicTool = new DynamicTool(UiPanel, Instance.GetNodeOrNull("DynamicTool")); + if (_L_DynamicTool == null) _L_DynamicTool = new DynamicTool(UiPanel, Instance.GetNode("DynamicTool")); return _L_DynamicTool; } } @@ -554,7 +599,7 @@ { get { - if (_L_ScrollContainer == null) _L_ScrollContainer = new ScrollContainer(UiPanel, Instance.GetNodeOrNull("ScrollContainer")); + if (_L_ScrollContainer == null) _L_ScrollContainer = new ScrollContainer(UiPanel, Instance.GetNode("ScrollContainer")); return _L_ScrollContainer; } } @@ -631,6 +676,11 @@ public WaveButton S_WaveButton => L_VBoxContainer.L_ScrollContainer.L_VBoxContainer.L_WaveItem.L_WaveContainer.L_WaveButton; /// + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorMapMark.VBoxContainer.ScrollContainer.VBoxContainer.WaveItem.WaveContainer.WaveVisibleButton + /// + public WaveVisibleButton S_WaveVisibleButton => L_VBoxContainer.L_ScrollContainer.L_VBoxContainer.L_WaveItem.L_WaveContainer.L_WaveVisibleButton; + + /// /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorMapMark.VBoxContainer.ScrollContainer.VBoxContainer.WaveItem.WaveContainer /// public WaveContainer S_WaveContainer => L_VBoxContainer.L_ScrollContainer.L_VBoxContainer.L_WaveItem.L_WaveContainer; @@ -646,6 +696,11 @@ public MarginContainer S_MarginContainer => L_VBoxContainer.L_ScrollContainer.L_VBoxContainer.L_WaveItem.L_MarginContainer; /// + /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorMapMark.VBoxContainer.ScrollContainer.VBoxContainer.WaveItem.MarkContainer.MarkItem.MarkButton.MarkIcon + /// + public MarkIcon S_MarkIcon => L_VBoxContainer.L_ScrollContainer.L_VBoxContainer.L_WaveItem.L_MarkContainer.L_MarkItem.L_MarkButton.L_MarkIcon; + + /// /// 场景中唯一名称的节点, 节点类型: , 节点路径: MapEditorMapMark.VBoxContainer.ScrollContainer.VBoxContainer.WaveItem.MarkContainer.MarkItem.MarkButton /// public MarkButton S_MarkButton => L_VBoxContainer.L_ScrollContainer.L_VBoxContainer.L_WaveItem.L_MarkContainer.L_MarkItem.L_MarkButton; diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorMapMark/MapEditorMapMarkPanel.cs b/DungeonShooting_Godot/src/game/ui/mapEditorMapMark/MapEditorMapMarkPanel.cs index 41ed879..4bd798e 100644 --- a/DungeonShooting_Godot/src/game/ui/mapEditorMapMark/MapEditorMapMarkPanel.cs +++ b/DungeonShooting_Godot/src/game/ui/mapEditorMapMark/MapEditorMapMarkPanel.cs @@ -85,6 +85,7 @@ _eventFactory.RemoveAllEventListener(); _eventFactory = null; _grid.Destroy(); + S_DynamicTool.QueueFree(); } //选中标记回调 @@ -165,8 +166,9 @@ { //清除选中项 RemoveSelectCell(); - EditorManager.SetSelectWaveIndex(-1); //记录选中波数 + EditorManager.SetSelectWaveIndex(-1); + //记录选中的预设 EditorManager.SetSelectPreinstallIndex((int)index); var preinstall = EditorManager.SelectRoom.Preinstall; if (index >= 0 && index <= preinstall.Count) diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorTools/MapEditorToolsPanel.cs b/DungeonShooting_Godot/src/game/ui/mapEditorTools/MapEditorToolsPanel.cs index 0e97028..d0eee19 100644 --- a/DungeonShooting_Godot/src/game/ui/mapEditorTools/MapEditorToolsPanel.cs +++ b/DungeonShooting_Godot/src/game/ui/mapEditorTools/MapEditorToolsPanel.cs @@ -97,6 +97,7 @@ _eventFactory.AddEventListener(EventEnum.OnCreateMark, OnCreateMarkTool); _eventFactory.AddEventListener(EventEnum.OnSelectMark, OnSelectMarkTool); _eventFactory.AddEventListener(EventEnum.OnDeleteMark, OnDeleteMarkTool); + _eventFactory.AddEventListener(EventEnum.OnSetMarkVisible, OnSetMarkVisible); _eventFactory.AddEventListener(EventEnum.OnEditMark, OnEditMarkTool); _eventFactory.AddEventListener(EventEnum.OnSelectPreinstall, RefreshMark); } @@ -237,6 +238,16 @@ } } + //设置标记显示状态 + private void OnSetMarkVisible(object arg) + { + var data = (MarkInfoVisibleData)arg; + if (_currMarkToolsMap.TryGetValue(data.MarkInfo, out var markTemplate)) + { + markTemplate.Instance.Visible = data.Visible; + } + } + //编辑标记 private void OnEditMarkTool(object arg) { diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorTools/MarkAreaTool.cs b/DungeonShooting_Godot/src/game/ui/mapEditorTools/MarkAreaTool.cs index 1d6d223..b52324f 100644 --- a/DungeonShooting_Godot/src/game/ui/mapEditorTools/MarkAreaTool.cs +++ b/DungeonShooting_Godot/src/game/ui/mapEditorTools/MarkAreaTool.cs @@ -4,6 +4,9 @@ namespace UI.MapEditorTools; +/// +/// 标记区域工具 +/// public partial class MarkAreaTool : Node2D { //鼠标悬停颜色 diff --git a/DungeonShooting_Godot/src/game/ui/mapEditorTools/MarkTool.cs b/DungeonShooting_Godot/src/game/ui/mapEditorTools/MarkTool.cs index b95df0a..47b3843 100644 --- a/DungeonShooting_Godot/src/game/ui/mapEditorTools/MarkTool.cs +++ b/DungeonShooting_Godot/src/game/ui/mapEditorTools/MarkTool.cs @@ -117,6 +117,15 @@ Position = markInfo.Position.AsVector2() - (Size / 2).Ceil(); _startPos = GlobalPosition; MarkAreaTool.InitData(_toolNode.UiPanel.S_ToolRoot, this); + //显示图标 + if (markInfo.MarkList.Count > 0) + { + Texture = ResourceManager.GetActivityIcon(markInfo.MarkList[0].Id); + } + else + { + Texture = ResourceManager.GetActivityIcon(null); + } } private void OnMouseEntered()