diff --git a/DungeonShooting_Godot/excel/ActivePropBase.xlsx b/DungeonShooting_Godot/excel/ActivePropBase.xlsx index 57b881b..65bdb9c 100644 --- a/DungeonShooting_Godot/excel/ActivePropBase.xlsx +++ b/DungeonShooting_Godot/excel/ActivePropBase.xlsx Binary files differ diff --git a/DungeonShooting_Godot/excel/ActivityBase.xlsx b/DungeonShooting_Godot/excel/ActivityBase.xlsx index 1053ed8..f6b3513 100644 --- a/DungeonShooting_Godot/excel/ActivityBase.xlsx +++ b/DungeonShooting_Godot/excel/ActivityBase.xlsx Binary files differ diff --git a/DungeonShooting_Godot/excel/WeaponBase.xlsx b/DungeonShooting_Godot/excel/WeaponBase.xlsx index 8f61a7a..0cc8e45 100644 --- a/DungeonShooting_Godot/excel/WeaponBase.xlsx +++ b/DungeonShooting_Godot/excel/WeaponBase.xlsx Binary files differ diff --git a/DungeonShooting_Godot/prefab/prop/activeComp/Prop5003_Area.tscn b/DungeonShooting_Godot/prefab/prop/activeComp/Prop5003_Area.tscn new file mode 100644 index 0000000..e5612df --- /dev/null +++ b/DungeonShooting_Godot/prefab/prop/activeComp/Prop5003_Area.tscn @@ -0,0 +1,31 @@ +[gd_scene load_steps=5 format=3 uid="uid://bb7xvumnivsho"] + +[ext_resource type="Script" path="res://src/game/buffComp/active/Prop5003Area.cs" id="1_nxrjx"] + +[sub_resource type="Gradient" id="Gradient_41obf"] +colors = PackedColorArray(1, 0, 0, 0.392157, 1, 0, 0, 0) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_ih8qw"] +gradient = SubResource("Gradient_41obf") +width = 128 +height = 128 +fill = 1 +fill_from = Vector2(0.5, 0.5) +fill_to = Vector2(1, 0.5) + +[sub_resource type="CircleShape2D" id="CircleShape2D_1llif"] +radius = 15.0333 + +[node name="Prop5003Area" type="Area2D" node_paths=PackedStringArray("CircleSprite", "Collision")] +collision_layer = 0 +collision_mask = 4 +monitorable = false +script = ExtResource("1_nxrjx") +CircleSprite = NodePath("Circle") +Collision = NodePath("CollisionShape2D") + +[node name="Circle" type="Sprite2D" parent="."] +texture = SubResource("GradientTexture2D_ih8qw") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("CircleShape2D_1llif") diff --git a/DungeonShooting_Godot/resource/config/ActivePropBase.json b/DungeonShooting_Godot/resource/config/ActivePropBase.json index a60b2c5..b43aeff 100644 --- a/DungeonShooting_Godot/resource/config/ActivePropBase.json +++ b/DungeonShooting_Godot/resource/config/ActivePropBase.json @@ -14,7 +14,9 @@ 2 ] }, - "CooldownTime": 0, + "Charge": null, + "Duration": 0, + "CooldownTime": 2, "IsConsumables": true, "MaxCount": 10 }, @@ -31,8 +33,48 @@ "Effect": { "TotalAmmo": [] }, - "CooldownTime": 0, + "Charge": null, + "Duration": 0, + "CooldownTime": 2, "IsConsumables": true, "MaxCount": 10 + }, + { + "Id": "0003", + "Remark": "\u732A\u732A\u5B58\u94B1\u7F50", + "__Activity": "prop5002", + "Buff": null, + "Condition": null, + "Effect": { + "PiggyBank": [ + 2 + ] + }, + "Charge": null, + "Duration": 0, + "CooldownTime": 0, + "IsConsumables": true, + "MaxCount": 1 + }, + { + "Id": "0004", + "Remark": "\u7EA2\u5916\u9065\u63A7\u5668", + "__Activity": "prop5003", + "Buff": null, + "Condition": null, + "Effect": { + "AreaTrigger": [ + 200 + ] + }, + "Charge": { + "Hurt": [ + 250 + ] + }, + "Duration": 6, + "CooldownTime": 0, + "IsConsumables": false, + "MaxCount": 1 } ] \ No newline at end of file diff --git a/DungeonShooting_Godot/resource/config/ActivityBase.json b/DungeonShooting_Godot/resource/config/ActivityBase.json index 5dcad8d..501c22b 100644 --- a/DungeonShooting_Godot/resource/config/ActivityBase.json +++ b/DungeonShooting_Godot/resource/config/ActivityBase.json @@ -672,6 +672,34 @@ "ShowInMapEditor": true }, { + "Id": "prop5002", + "Name": "\u732A\u732A\u5B58\u94B1\u7F50", + "Type": 9, + "Quality": 1, + "Price": 0, + "Intro": "\u62FE\u8D77\u8BE5\u9053\u5177\u540E\u73A9\u5BB6\u6361\u5230\u7684\u6240\u6709\u91D1\u5E01\u5C06\u4F1A\u88AB\u5B58\u5165\u5230\u5B58\u94B1\u7F50\u4E2D, \u4F7F\u7528\u8BE5\u9053\u5177, \u4F1A\u6467\u6BC1\u5B58\u94B1\u7F50, \u5E76\u8FD4\u56DE\u53CC\u500D\u7684\u91D1\u5E01", + "Details": "", + "IsStatic": false, + "__Material": "", + "Prefab": "res://prefab/prop/ActiveProp.tscn", + "Icon": "res://resource/sprite/prop/active/ActiveProp5002.png", + "ShowInMapEditor": true + }, + { + "Id": "prop5003", + "Name": "\u7EA2\u5916\u9065\u63A7\u5668", + "Type": 9, + "Quality": 1, + "Price": 0, + "Intro": "\u4F7F\u7528\u540E\u4F1A\u89E6\u53D1\u9644\u8FD1\u5730\u4E0A\u7684\u6B66\u5668\u5F00\u706B", + "Details": "", + "IsStatic": false, + "__Material": "", + "Prefab": "res://prefab/prop/ActiveProp.tscn", + "Icon": "res://resource/sprite/prop/active/ActiveProp5003.png", + "ShowInMapEditor": true + }, + { "Id": "treasure_box0001", "Name": "\u6728\u8D28\u5B9D\u7BB1", "Type": 10, diff --git a/DungeonShooting_Godot/resource/config/WeaponBase.json b/DungeonShooting_Godot/resource/config/WeaponBase.json index e8e4f61..de1e6f0 100644 --- a/DungeonShooting_Godot/resource/config/WeaponBase.json +++ b/DungeonShooting_Godot/resource/config/WeaponBase.json @@ -1714,7 +1714,7 @@ "CameraShake": 2, "BacklashRange": [ 1, - 1 + 2 ], "BacklashRegressionSpeed": 35, "UpliftAngle": 3, @@ -1790,7 +1790,7 @@ "CameraShake": 2, "BacklashRange": [ 1, - 1 + 2 ], "BacklashRegressionSpeed": 35, "UpliftAngle": 3, diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/inlet/Start/Preinstall.json b/DungeonShooting_Godot/resource/map/tileMaps/Test1/inlet/Start/Preinstall.json index a2e1c92..caaa543 100644 --- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/inlet/Start/Preinstall.json +++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/inlet/Start/Preinstall.json @@ -1 +1 @@ -[{"Name":"Preinstall1","Weight":100,"Remark":"","AutoFill":false,"WaveList":[[{"Position":{"X":39,"Y":8},"Size":{"X":0,"Y":0},"SpecialMarkType":1,"DelayTime":0,"MarkList":[]},{"Position":{"X":-16,"Y":-18},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0001","Weight":100,"Attr":{"CurrAmmon":"30","ResidueAmmo":"210"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":66,"Y":6},"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":66,"Y":47},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0010","Weight":100,"Attr":{"CurrAmmon":"10","ResidueAmmo":"120"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":47,"Y":-32},"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":23,"Y":37},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0010","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":2,"Y":18},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0005","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":24,"Y":-30},"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":40,"Y":-10},"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":2,"Y":-37},"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":-2,"Y":47},"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":29,"Y":63},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0013","Weight":100,"Attr":{"CurrAmmon":"50","ResidueAmmo":"250"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-30,"Y":39},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0003","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-19,"Y":71},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0003","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":48,"Y":29},"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":20,"Y":94},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0014","Weight":100,"Attr":{"CurrAmmon":"5","ResidueAmmo":"60"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-14,"Y":97},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0011","Weight":100,"Attr":{"CurrAmmon":"20","ResidueAmmo":"300"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":9,"Y":-7},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0011","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-41,"Y":61},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0016","Weight":100,"Attr":{"CurrAmmon":"5","ResidueAmmo":"60"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":73,"Y":-19},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0005","Weight":100,"Attr":{"CurrAmmon":"10","ResidueAmmo":"40"},"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-72,"Y":71},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0001","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-67,"Y":50},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop5001","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-91,"Y":46},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop5001","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-92,"Y":74},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop5001","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-26,"Y":-46},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop5000","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-52,"Y":-33},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop5000","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-79,"Y":-28},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop5000","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]}]]}] \ No newline at end of file +[{"Name":"Preinstall1","Weight":100,"Remark":"","AutoFill":false,"WaveList":[[{"Position":{"X":39,"Y":8},"Size":{"X":0,"Y":0},"SpecialMarkType":1,"DelayTime":0,"MarkList":[]},{"Position":{"X":-16,"Y":-18},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0001","Weight":100,"Attr":{"CurrAmmon":"30","ResidueAmmo":"210"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":66,"Y":6},"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":66,"Y":47},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0010","Weight":100,"Attr":{"CurrAmmon":"10","ResidueAmmo":"120"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":47,"Y":-32},"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":23,"Y":37},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0010","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":2,"Y":18},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0005","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":24,"Y":-30},"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":40,"Y":-10},"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":2,"Y":-37},"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":-2,"Y":47},"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":29,"Y":63},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0013","Weight":100,"Attr":{"CurrAmmon":"50","ResidueAmmo":"250"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-30,"Y":39},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0003","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-19,"Y":71},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0003","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":48,"Y":29},"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":20,"Y":94},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0014","Weight":100,"Attr":{"CurrAmmon":"5","ResidueAmmo":"60"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-14,"Y":97},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0011","Weight":100,"Attr":{"CurrAmmon":"20","ResidueAmmo":"300"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":9,"Y":-7},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0011","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-41,"Y":61},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0016","Weight":100,"Attr":{"CurrAmmon":"5","ResidueAmmo":"60"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":73,"Y":-19},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0005","Weight":100,"Attr":{"CurrAmmon":"10","ResidueAmmo":"40"},"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-72,"Y":71},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0001","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-67,"Y":50},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop5001","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-91,"Y":46},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop5001","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-92,"Y":74},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop5001","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-26,"Y":-46},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop5000","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-52,"Y":-33},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop5000","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-79,"Y":-28},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop5000","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-38,"Y":107},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop5002","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":62,"Y":71},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop5003","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]}]]}] \ No newline at end of file diff --git a/DungeonShooting_Godot/resource/sprite/brush/Brush2.png b/DungeonShooting_Godot/resource/sprite/brush/Brush2.png index b74c0ed..a2dbff1 100644 --- a/DungeonShooting_Godot/resource/sprite/brush/Brush2.png +++ b/DungeonShooting_Godot/resource/sprite/brush/Brush2.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/brush/Brush3.png b/DungeonShooting_Godot/resource/sprite/brush/Brush3.png index c77fef5..7fda7b3 100644 --- a/DungeonShooting_Godot/resource/sprite/brush/Brush3.png +++ b/DungeonShooting_Godot/resource/sprite/brush/Brush3.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/brush/Brush4.png b/DungeonShooting_Godot/resource/sprite/brush/Brush4.png index 5a7a53d..2ad96ea 100644 --- a/DungeonShooting_Godot/resource/sprite/brush/Brush4.png +++ b/DungeonShooting_Godot/resource/sprite/brush/Brush4.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/brush/Brush5.png b/DungeonShooting_Godot/resource/sprite/brush/Brush5.png index 0d36bb0..97f25ca 100644 --- a/DungeonShooting_Godot/resource/sprite/brush/Brush5.png +++ b/DungeonShooting_Godot/resource/sprite/brush/Brush5.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/prop/active/ActiveProp5002.png b/DungeonShooting_Godot/resource/sprite/prop/active/ActiveProp5002.png new file mode 100644 index 0000000..51f0012 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/prop/active/ActiveProp5002.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/prop/active/ActiveProp5002.png.import b/DungeonShooting_Godot/resource/sprite/prop/active/ActiveProp5002.png.import new file mode 100644 index 0000000..4ff3842 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/prop/active/ActiveProp5002.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dxffht13og4ag" +path="res://.godot/imported/ActiveProp5002.png-add857fab665afd62103e2bff145b98c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/prop/active/ActiveProp5002.png" +dest_files=["res://.godot/imported/ActiveProp5002.png-add857fab665afd62103e2bff145b98c.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/prop/active/ActiveProp5003.png b/DungeonShooting_Godot/resource/sprite/prop/active/ActiveProp5003.png new file mode 100644 index 0000000..ec4e4d5 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/prop/active/ActiveProp5003.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/prop/active/ActiveProp5003.png.import b/DungeonShooting_Godot/resource/sprite/prop/active/ActiveProp5003.png.import new file mode 100644 index 0000000..59ce905 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/prop/active/ActiveProp5003.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cjf00ob376y3e" +path="res://.godot/imported/ActiveProp5003.png-26abcb759a746b5ad719977590650d45.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/prop/active/ActiveProp5003.png" +dest_files=["res://.godot/imported/ActiveProp5003.png-26abcb759a746b5ad719977590650d45.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/config/ExcelConfig_ActivePropBase.cs b/DungeonShooting_Godot/src/config/ExcelConfig_ActivePropBase.cs index db856d5..f4f6479 100644 --- a/DungeonShooting_Godot/src/config/ExcelConfig_ActivePropBase.cs +++ b/DungeonShooting_Godot/src/config/ExcelConfig_ActivePropBase.cs @@ -50,6 +50,22 @@ public Dictionary Effect; /// + /// 道具充能效果
+ /// 参数配置方式与buff字段相同
+ /// 性名称请参阅charge属性表
+ /// 注意: 仅当'IsConsumables'为false是生效 + ///
+ [JsonInclude] + public Dictionary Charge; + + /// + /// 使用道具的效果持续时间
+ /// 单位: 秒 + ///
+ [JsonInclude] + public float Duration; + + /// /// 使用一次后的冷却时间
/// 单位: 秒 ///
@@ -63,7 +79,7 @@ public bool IsConsumables; /// - /// 最大叠加次数, 仅当IsConsumables为true时有效 + /// 最大叠加次数, 仅当'IsConsumables'为true时有效 /// [JsonInclude] public uint MaxCount; @@ -80,6 +96,8 @@ inst.Buff = Buff; inst.Condition = Condition; inst.Effect = Effect; + inst.Charge = Charge; + inst.Duration = Duration; inst.CooldownTime = CooldownTime; inst.IsConsumables = IsConsumables; inst.MaxCount = MaxCount; diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs index 9b341a7..2169f4a 100644 --- a/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs +++ b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs @@ -1043,42 +1043,11 @@ } #endif var newDelta = (float)delta; - if (EnableCustomBehavior) - { - Process(newDelta); - } + UpdateProcess(newDelta); //更新组件 - if (_components.Count > 0) - { - _updatingComp = true; - if (EnableCustomBehavior) //启用所有组件 - { - for (int i = 0; i < _components.Count; i++) - { - if (IsDestroyed) return; - var temp = _components[i].Value; - if (temp != null && temp.Enable) - { - temp.Process(newDelta); - } - } - } - else //只更新 MoveController 组件 - { - if (MoveController.Enable) - { - MoveController.Process(newDelta); - } - } - _updatingComp = false; - - if (_changeComponents.Count > 0) - { - RefreshComponent(); - } - } - + UpdateComponentProcess(newDelta); + // 更新下坠处理逻辑 UpdateFall(newDelta); @@ -1109,7 +1078,7 @@ } //协程更新 - ProxyCoroutineHandler.ProxyUpdateCoroutine(ref _coroutineList, newDelta); + UpdateCoroutine(newDelta); //调试绘制 if (IsDebug) @@ -1119,6 +1088,110 @@ } /// + /// 触发调用 Process() 函数 + /// + public void UpdateProcess(float delta) + { + if (EnableCustomBehavior) + { + Process(delta); + } + } + + /// + /// 触发调用 PhysicsProcess() 函数 + /// + public void UpdatePhysicsProcess(float delta) + { + if (EnableCustomBehavior) + { + PhysicsProcess(delta); + } + } + + /// + /// 更新组件 + /// + public void UpdateComponentProcess(float delta) + { + //更新组件 + if (_components.Count > 0) + { + _updatingComp = true; + if (EnableCustomBehavior) //启用所有组件 + { + for (int i = 0; i < _components.Count; i++) + { + if (IsDestroyed) return; + var temp = _components[i].Value; + if (temp != null && temp.Enable) + { + temp.Process(delta); + } + } + } + else //只更新 MoveController 组件 + { + if (MoveController.Enable) + { + MoveController.Process(delta); + } + } + _updatingComp = false; + + if (_changeComponents.Count > 0) + { + RefreshComponent(); + } + } + + } + + /// + /// 物理帧更新组件 + /// + public void UpdateComponentPhysicsProcess(float delta) + { + if (_components.Count > 0) + { + _updatingComp = true; + if (EnableCustomBehavior) //启用所有组件 + { + for (int i = 0; i < _components.Count; i++) + { + if (IsDestroyed) return; + var temp = _components[i].Value; + if (temp != null && temp.Enable) + { + temp.PhysicsProcess(delta); + } + } + } + else //只更新 MoveController 组件 + { + if (MoveController.Enable) + { + MoveController.PhysicsProcess(delta); + } + } + _updatingComp = false; + + if (_changeComponents.Count > 0) + { + RefreshComponent(); + } + } + } + + /// + /// 更新协程 + /// + public void UpdateCoroutine(float delta) + { + ProxyCoroutineHandler.ProxyUpdateCoroutine(ref _coroutineList, delta); + } + + /// /// 更新下坠处理逻辑 /// public void UpdateFall(float delta) @@ -1275,41 +1348,10 @@ } #endif var newDelta = (float)delta; - if (EnableCustomBehavior) - { - PhysicsProcess(newDelta); - } + UpdatePhysicsProcess(newDelta); //更新组件 - if (_components.Count > 0) - { - _updatingComp = true; - if (EnableCustomBehavior) //启用所有组件 - { - for (int i = 0; i < _components.Count; i++) - { - if (IsDestroyed) return; - var temp = _components[i].Value; - if (temp != null && temp.Enable) - { - temp.PhysicsProcess(newDelta); - } - } - } - else //只更新 MoveController 组件 - { - if (MoveController.Enable) - { - MoveController.PhysicsProcess(newDelta); - } - } - _updatingComp = false; - - if (_changeComponents.Count > 0) - { - RefreshComponent(); - } - } + UpdateComponentPhysicsProcess(newDelta); } //更新新增/移除的组件 diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs b/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs index bbeec0f..e051a61 100644 --- a/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs +++ b/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs @@ -249,6 +249,16 @@ /// public const string Id_prop5001 = "prop5001"; /// + /// 名称: 猪猪存钱罐
+ /// 简介: 拾起该道具后玩家捡到的所有金币将会被存入到存钱罐中, 使用该道具, 会摧毁存钱罐, 并返回双倍的金币 + ///
+ public const string Id_prop5002 = "prop5002"; + /// + /// 名称: 红外遥控器
+ /// 简介: 使用后会触发附近地上的武器开火 + ///
+ public const string Id_prop5003 = "prop5003"; + /// /// 名称: 木质宝箱
/// 简介: 木质宝箱 ///
diff --git a/DungeonShooting_Godot/src/game/activity/prop/ActiveProp.cs b/DungeonShooting_Godot/src/game/activity/prop/ActiveProp.cs index 0b5daab..6a9cafb 100644 --- a/DungeonShooting_Godot/src/game/activity/prop/ActiveProp.cs +++ b/DungeonShooting_Godot/src/game/activity/prop/ActiveProp.cs @@ -84,8 +84,20 @@ /// public float AutoChargeSpeed { get; set; } + /// + /// 是否正使用中 + /// + public bool IsUsing => _durationTimer > 0; + + /// + /// 道具使用时间进度 (0 - 1) + /// + public float UsingProgress => 1 - _durationTimer / Attribute.Duration; + //冷却计时器 private float _cooldownTimer = 0; + //持续时间计时器 + private float _durationTimer = 0; //被动属性 private readonly List _buffFragment = new List(); @@ -93,6 +105,8 @@ private readonly List _conditionFragment = new List(); //效果 private readonly List _effectFragment = new List(); + //充能 + private readonly List _chargeFragment = new List(); public override void OnInit() { @@ -241,6 +255,53 @@ } } + //初始化道具冷却属性数据 + if (!buffAttribute.IsConsumables && buffAttribute.Charge != null) + { + foreach (var keyValuePair in buffAttribute.Charge) + { + var buffInfo = PropFragmentRegister.ChargeFragmentInfos[keyValuePair.Key]; + var item = keyValuePair.Value; + switch (item.Length) + { + case 0: + { + var buff = (ChargeFragment)AddComponent(buffInfo.Type); + _chargeFragment.Add(buff); + } + break; + case 1: + { + var buff = (ChargeFragment)AddComponent(buffInfo.Type); + buff.InitParam(item[0]); + _chargeFragment.Add(buff); + } + break; + case 2: + { + var buff = (ChargeFragment)AddComponent(buffInfo.Type); + buff.InitParam(item[0], item[1]); + _chargeFragment.Add(buff); + } + break; + case 3: + { + var buff = (ChargeFragment)AddComponent(buffInfo.Type); + buff.InitParam(item[0], item[1], item[2]); + _chargeFragment.Add(buff); + } + break; + case 4: + { + var buff = (ChargeFragment)AddComponent(buffInfo.Type); + buff.InitParam(item[0], item[1], item[2], item[3]); + _chargeFragment.Add(buff); + } + break; + } + } + } + //显示纹理 if (!string.IsNullOrEmpty(ActivityBase.Icon)) { @@ -259,6 +320,11 @@ { if (!fragment.OnCheckUse()) return false; } + + foreach (var fragment in _effectFragment) + { + if (!fragment.OnCheckUse()) return false; + } return true; } @@ -272,6 +338,19 @@ { fragment.OnUse(); } + + foreach (var fragment in _chargeFragment) + { + fragment.OnUse(); + } + + } + + /// + /// 道具使用持续时间完成时调用 + /// + protected virtual void OnUsingFinish() + { } /// @@ -304,22 +383,27 @@ protected override void Process(float delta) { - RunUpdate(delta); - } - - public override void PackProcess(float delta) - { - RunUpdate(delta); - } - - private void RunUpdate(float delta) - { if (CheckAutoDestroy()) { return; } + + //持续时间 + if (_durationTimer > 0) + { + _durationTimer -= delta; + + //持续时间完成 + if (_durationTimer <= 0) + { + _durationTimer = 0; + //冷却计时器 + _cooldownTimer = Attribute.CooldownTime; + UsingFinish(); + } + } //冷却 - if (_cooldownTimer > 0) + else if (_cooldownTimer > 0) { _cooldownTimer -= delta; @@ -337,7 +421,7 @@ ChargeProgress += AutoChargeSpeed * delta; } } - + //检测是否达到自动销毁的条件 private bool CheckAutoDestroy() { @@ -367,7 +451,7 @@ /// public void Use() { - if (Master == null) + if (Master == null || IsUsing) { return; } @@ -379,8 +463,16 @@ Count -= 1; } - //冷却计时器 - _cooldownTimer = Attribute.CooldownTime; + if (Attribute.Duration > 0) //持续时间 + { + _durationTimer = Attribute.Duration; + } + else + { + //冷却计时器 + _cooldownTimer = Attribute.CooldownTime; + UsingFinish(); + } } } @@ -481,6 +573,21 @@ { buffFragment.OnPickUpItem(); } + + foreach (var conditionFragment in _conditionFragment) + { + conditionFragment.OnPickUpItem(); + } + + foreach (var effectFragment in _effectFragment) + { + effectFragment.OnPickUpItem(); + } + + foreach (var chargeFragment in _chargeFragment) + { + chargeFragment.OnPickUpItem(); + } } public override void OnRemoveItem() @@ -489,6 +596,21 @@ { buffFragment.OnRemoveItem(); } + + foreach (var conditionFragment in _conditionFragment) + { + conditionFragment.OnRemoveItem(); + } + + foreach (var effectFragment in _effectFragment) + { + effectFragment.OnRemoveItem(); + } + + foreach (var chargeFragment in _chargeFragment) + { + chargeFragment.OnRemoveItem(); + } } public virtual void OnActiveItem() @@ -573,6 +695,22 @@ fragment.OnPickUpItem(); } } + + //持续时间完成 + private void UsingFinish() + { + OnUsingFinish(); + + foreach (var effectFragment in _effectFragment) + { + effectFragment.OnUsingFinish(); + } + + foreach (var chargeFragment in _chargeFragment) + { + chargeFragment.OnUsingFinish(); + } + } private static bool _init = false; diff --git a/DungeonShooting_Godot/src/game/activity/prop/PropActivity.cs b/DungeonShooting_Godot/src/game/activity/prop/PropActivity.cs index d9ff654..dc05bae 100644 --- a/DungeonShooting_Godot/src/game/activity/prop/PropActivity.cs +++ b/DungeonShooting_Godot/src/game/activity/prop/PropActivity.cs @@ -27,13 +27,6 @@ } /// - /// 如果道具放入了角色背包中, 则每帧调用 - /// - public virtual void PackProcess(float delta) - { - } - - /// /// 触发扔掉道具效果, 并不会管道具是否在道具背包中 /// /// 触发扔掉该道具的的角色 diff --git a/DungeonShooting_Godot/src/game/activity/role/Role.cs b/DungeonShooting_Godot/src/game/activity/role/Role.cs index f383169..ecb1011 100644 --- a/DungeonShooting_Godot/src/game/activity/role/Role.cs +++ b/DungeonShooting_Godot/src/game/activity/role/Role.cs @@ -611,12 +611,15 @@ //被动道具更新 if (BuffPropPack.Count > 0) { - var buffProps = BuffPropPack.ToArray(); - foreach (var prop in buffProps) + var buffProps = BuffPropPack; + for (var i = 0; i < buffProps.Count; i++) { - if (!prop.IsDestroyed) + var prop = buffProps[i]; + if (!prop.IsDestroyed && prop.Master != null) { - prop.PackProcess(delta); + prop.UpdateProcess(delta); + prop.UpdateComponentProcess(delta); + prop.UpdateCoroutine(delta); } } } @@ -625,12 +628,14 @@ var props = ActivePropsPack.ItemSlot; if (props.Length > 0) { - props = (ActiveProp[])props.Clone(); - foreach (var prop in props) + for (var i = 0; i < props.Length; i++) { - if (prop != null && !prop.IsDestroyed) + var prop = props[i]; + if (prop != null && !prop.IsDestroyed && prop.Master != null) { - prop.PackProcess(delta); + prop.UpdateProcess(delta); + prop.UpdateComponentProcess(delta); + prop.UpdateCoroutine(delta); } } } @@ -644,7 +649,40 @@ TipRoot.Scale = new Vector2(-1, 1); } } - + + protected override void PhysicsProcess(float delta) + { + //被动道具更新 + if (BuffPropPack.Count > 0) + { + var buffProps = BuffPropPack; + for (var i = 0; i < buffProps.Count; i++) + { + var prop = buffProps[i]; + if (!prop.IsDestroyed && prop.Master != null) + { + prop.UpdatePhysicsProcess(delta); + prop.UpdateComponentPhysicsProcess(delta); + } + } + } + + //主动道具调用更新 + var props = ActivePropsPack.ItemSlot; + if (props.Length > 0) + { + for (var i = 0; i < props.Length; i++) + { + var prop = props[i]; + if (prop != null && !prop.IsDestroyed && prop.Master != null) + { + prop.UpdatePhysicsProcess(delta); + prop.UpdateComponentPhysicsProcess(delta); + } + } + } + } + /// /// 初始化瞄准辅助线 /// @@ -687,6 +725,7 @@ { if (ActivePropsPack.PickupItem(activeProp, exchange) != -1) { + activeProp.MoveController.Enable = false; //从可互动队列中移除 InteractiveItemList.Remove(activeProp); OnPickUpActiveProp(activeProp); @@ -715,6 +754,7 @@ return; } + activeProp.MoveController.Enable = true; ActivePropsPack.RemoveItem(index); OnRemoveActiveProp(activeProp); //播放抛出效果 @@ -1296,7 +1336,7 @@ /// public virtual void AddGold(int goldCount) { - RoleState.Gold += goldCount; + RoleState.Gold += RoleState.CalcGetGold(goldCount); //播放音效 SoundManager.PlaySoundByConfig(ExcelConfig.Sound_Map["gold"], Position, this); } diff --git a/DungeonShooting_Godot/src/game/activity/role/RoleState.cs b/DungeonShooting_Godot/src/game/activity/role/RoleState.cs index f974546..3a328e4 100644 --- a/DungeonShooting_Godot/src/game/activity/role/RoleState.cs +++ b/DungeonShooting_Godot/src/game/activity/role/RoleState.cs @@ -226,4 +226,20 @@ return distance; } + + /// + /// 计算获取的金币 + /// + public event Action> CalcGetGoldEvent; + public int CalcGetGold(int gold) + { + if (CalcGetGoldEvent != null) + { + var result = new RefValue(gold); + CalcGetGoldEvent(gold, result); + return result.Value; + } + + return gold; + } } \ No newline at end of file diff --git a/DungeonShooting_Godot/src/game/activity/weapon/Weapon.cs b/DungeonShooting_Godot/src/game/activity/weapon/Weapon.cs index 584c4c9..edb144a 100644 --- a/DungeonShooting_Godot/src/game/activity/weapon/Weapon.cs +++ b/DungeonShooting_Godot/src/game/activity/weapon/Weapon.cs @@ -161,6 +161,9 @@ //-------------------------------------------------------------------------------------------- + //触发板机是是否计算弹药消耗 + private bool _triggerCalcAmmon = true; + //用于记录是否有角色操作过这把武器 private bool _triggerRoleFlag = false; @@ -254,6 +257,9 @@ //抖动计时器 private float _shakeTimer = 0; + + //换弹完成后播放的动画 + private string _reloadNextAnimation; // ---------------------------------------------- private uint _tempLayer; @@ -802,10 +808,30 @@ } /// + /// 清除触发角色开火标记数据 + /// + public void ClearTriggerRole() + { + _triggerRoleFlag = false; + if (Master == null) + { + if (Reloading) + { + _reloadNextAnimation = AnimatorNames.Floodlight; + } + else + { + AnimationPlayer.Play(AnimatorNames.Floodlight); + } + } + } + + /// /// 扳机函数, 调用即视为按下扳机 /// /// 按下扳机的角色, 如果传 null, 则视为走火 - public void Trigger(Role triggerRole) + /// 是否计算弹药消耗 + public void Trigger(Role triggerRole, bool calcAmmo = true) { //不能触发扳机 if (!NoMasterCanTrigger && Master == null) return; @@ -815,7 +841,12 @@ //更新武器属性信息 _triggerFlag = true; + if (!_triggerRoleFlag && AnimationPlayer.CurrentAnimation == AnimatorNames.Floodlight) + { + AnimationPlayer.Play(AnimatorNames.Reset); + } _triggerRoleFlag = true; + _triggerCalcAmmon = calcAmmo; if (triggerRole != null) { TriggerRole = triggerRole; @@ -1098,18 +1129,27 @@ _reloadShellFlag = false; //减子弹数量 - if (_playerWeaponAttribute != _weaponAttribute) //Ai使用该武器, 有一定概率不消耗弹药 + if (_triggerCalcAmmon) + { + if (_playerWeaponAttribute != _weaponAttribute) //Ai使用该武器, 有一定概率不消耗弹药 + { + var count = UseAmmoCount(); + CurrAmmo -= count; + if (Utils.Random.RandomRangeFloat(0, 1) >= _weaponAttribute.AiAttackAttr.AmmoConsumptionProbability) //不消耗弹药 + { + ResidueAmmo += count; + } + } + else + { + CurrAmmo -= UseAmmoCount(); + } + } + else //不消耗弹药 { var count = UseAmmoCount(); CurrAmmo -= count; - if (Utils.Random.RandomRangeFloat(0, 1) >= _weaponAttribute.AiAttackAttr.AmmoConsumptionProbability) //不消耗弹药 - { - ResidueAmmo += count; - } - } - else - { - CurrAmmo -= UseAmmoCount(); + ResidueAmmo += count; } if (CurrAmmo == 0) @@ -1195,9 +1235,9 @@ } else //在地上 { - var v = Utils.Random.RandomConfigRange(Attribute.BacklashRange) * 5; + var v = Utils.Random.RandomConfigRange(Attribute.BacklashRange) * 15; var externalForce = MoveController.AddForce(new Vector2(-v, 0).Rotated(Rotation)); - externalForce.RotationSpeed = -Mathf.DegToRad(40); + externalForce.RotationSpeed = -Mathf.DegToRad(50); externalForce.RotationResistance = Mathf.DegToRad(80); } @@ -1584,6 +1624,11 @@ private void ReloadFinishHandler() { // Debug.Log("装弹完成."); + if (_reloadNextAnimation != null) + { + AnimationPlayer.Play(_reloadNextAnimation); + _reloadNextAnimation = null; + } OnReloadFinish(); } diff --git a/DungeonShooting_Godot/src/game/activity/weapon/bow/Bow.cs b/DungeonShooting_Godot/src/game/activity/weapon/bow/Bow.cs index 9371e39..983d6e2 100644 --- a/DungeonShooting_Godot/src/game/activity/weapon/bow/Bow.cs +++ b/DungeonShooting_Godot/src/game/activity/weapon/bow/Bow.cs @@ -66,7 +66,7 @@ protected override void OnFire() { - if (Master.IsPlayer()) + if (TriggerRole != null && TriggerRole.IsPlayer()) { //创建抖动 GameCamera.Main.DirectionalShake(Vector2.Right.Rotated(GlobalRotation) * Attribute.CameraShake); diff --git a/DungeonShooting_Godot/src/game/buff/BuffFragment.cs b/DungeonShooting_Godot/src/game/buff/BuffFragment.cs index 7599706..82dd69d 100644 --- a/DungeonShooting_Godot/src/game/buff/BuffFragment.cs +++ b/DungeonShooting_Godot/src/game/buff/BuffFragment.cs @@ -6,13 +6,4 @@ /// public abstract class BuffFragment : PropFragment { - /// - /// 当道具被拾起时调用 (在 Master 赋值之后调用) - /// - public abstract void OnPickUpItem(); - - /// - /// 当道具被移除时调用 (在 Master 置为 null 之前调用) - /// - public abstract void OnRemoveItem(); } \ No newline at end of file diff --git a/DungeonShooting_Godot/src/game/buff/ChargeFragment.cs b/DungeonShooting_Godot/src/game/buff/ChargeFragment.cs new file mode 100644 index 0000000..2ee8130 --- /dev/null +++ b/DungeonShooting_Godot/src/game/buff/ChargeFragment.cs @@ -0,0 +1,31 @@ + +/// +/// 主动道具充能基类 +/// +public abstract class ChargeFragment : PropFragment +{ + /// + /// 当前组件所挂载的游戏对象 + /// + public new ActiveProp Master => (ActiveProp)base.Master; + + /// + /// 当道具被使用是调用 + /// + public abstract void OnUse(); + + /// + /// 道具持续时间完成时调用 + /// + public virtual void OnUsingFinish() + { + } + + public override void OnPickUpItem() + { + } + + public override void OnRemoveItem() + { + } +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/game/buff/ChargeFragmentAttribute.cs b/DungeonShooting_Godot/src/game/buff/ChargeFragmentAttribute.cs new file mode 100644 index 0000000..4cf3f9c --- /dev/null +++ b/DungeonShooting_Godot/src/game/buff/ChargeFragmentAttribute.cs @@ -0,0 +1,21 @@ +using System; + +[AttributeUsage(AttributeTargets.Class)] +public class ChargeFragmentAttribute : Attribute +{ + /// + /// 充能属性名称 + /// + public string ChargeName { get; set; } + + /// + /// 描述 + /// + public string Description { get; set; } + + public ChargeFragmentAttribute(string chargeName, string description) + { + ChargeName = chargeName; + Description = description; + } +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/game/buff/ConditionFragment.cs b/DungeonShooting_Godot/src/game/buff/ConditionFragment.cs index c8b8d45..2e5ce51 100644 --- a/DungeonShooting_Godot/src/game/buff/ConditionFragment.cs +++ b/DungeonShooting_Godot/src/game/buff/ConditionFragment.cs @@ -5,7 +5,20 @@ public abstract class ConditionFragment : PropFragment { /// + /// 当前组件所挂载的游戏对象 + /// + public new ActiveProp Master => (ActiveProp)base.Master; + + /// /// 当检测是否可以使用时调用 /// public abstract bool OnCheckUse(); + + public override void OnPickUpItem() + { + } + + public override void OnRemoveItem() + { + } } \ No newline at end of file diff --git a/DungeonShooting_Godot/src/game/buff/EffectFragment.cs b/DungeonShooting_Godot/src/game/buff/EffectFragment.cs index d971d8f..a38bc0d 100644 --- a/DungeonShooting_Godot/src/game/buff/EffectFragment.cs +++ b/DungeonShooting_Godot/src/game/buff/EffectFragment.cs @@ -5,7 +5,43 @@ public abstract class EffectFragment : PropFragment { /// + /// 当前组件所挂载的游戏对象 + /// + public new ActiveProp Master => (ActiveProp)base.Master; + + /// + /// 当检测是否可以使用时调用 + /// + public virtual bool OnCheckUse() + { + return true; + } + + /// /// 使用道具的回调 /// public abstract void OnUse(); + + /// + /// 道具持续时间完成时调用 + /// + public virtual void OnUsingFinish() + { + } + + public override void OnPickUpItem() + { + } + + public override void OnRemoveItem() + { + } + + /// + /// 返回是否正在使用当前道具 + /// + public bool IsActive() + { + return Role != null && Role.ActivePropsPack.ActiveItem == Master; + } } \ No newline at end of file diff --git a/DungeonShooting_Godot/src/game/buff/PropFragment.cs b/DungeonShooting_Godot/src/game/buff/PropFragment.cs index 5dcd749..927ee2e 100644 --- a/DungeonShooting_Godot/src/game/buff/PropFragment.cs +++ b/DungeonShooting_Godot/src/game/buff/PropFragment.cs @@ -10,6 +10,24 @@ public Role Role => Master?.Master; /// + /// 当道具被拾起时调用 (在 Role 赋值之后调用) + /// + public abstract void OnPickUpItem(); + + /// + /// 当道具被移除时调用 (在 Role 置为 null 之前调用) + /// + public abstract void OnRemoveItem(); + + /// + /// 返回道具是否在背包中 + /// + public bool IsInPackage() + { + return Master != null; + } + + /// /// 初始化被动属性参数 /// public virtual void InitParam(float arg1) diff --git a/DungeonShooting_Godot/src/game/buff/buff/Buff_GetGold.cs b/DungeonShooting_Godot/src/game/buff/buff/Buff_GetGold.cs new file mode 100644 index 0000000..d3cff87 --- /dev/null +++ b/DungeonShooting_Godot/src/game/buff/buff/Buff_GetGold.cs @@ -0,0 +1,52 @@ + +using Godot; + +[BuffFragment("GetGold", "计算获取的金币buff, " + + "参数‘1’为金币数量添加类型, 1: 具体数量, 2:百分比(小数), " + + "参数‘2’为增加金币的数量值")] +public class Buff_GetGold : BuffFragment +{ + private int _type; + private float _value; + + public override void InitParam(float arg1, float arg2) + { + _type = (int)arg1; + _value = arg2; + } + + public override void OnPickUpItem() + { + if (_type == 1) + { + Role.RoleState.CalcGetGoldEvent += OnCalcGetGoldEvent1; + } + else + { + Role.RoleState.CalcGetGoldEvent += OnCalcGetGoldEvent2; + } + } + + public override void OnRemoveItem() + { + if (_type == 1) + { + Role.RoleState.CalcGetGoldEvent -= OnCalcGetGoldEvent1; + } + else + { + Role.RoleState.CalcGetGoldEvent -= OnCalcGetGoldEvent2; + } + } + + private void OnCalcGetGoldEvent1(int origin, RefValue refValue) + { + refValue.Value += Mathf.CeilToInt(_value); + } + + private void OnCalcGetGoldEvent2(int origin, RefValue refValue) + { + refValue.Value += Mathf.CeilToInt(origin * _value); + } + +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/game/buff/charge/Cha_Hurt.cs b/DungeonShooting_Godot/src/game/buff/charge/Cha_Hurt.cs new file mode 100644 index 0000000..36c7885 --- /dev/null +++ b/DungeonShooting_Godot/src/game/buff/charge/Cha_Hurt.cs @@ -0,0 +1,49 @@ + +[ChargeFragment("Hurt", + "造成伤害充能, 参数1为充满能量需要造成的伤害值")] +public class Cha_Hurt : ChargeFragment +{ + private int _value = 100; + + public override void InitParam(float arg1) + { + _value = (int)arg1; + } + + public override void OnUse() + { + + } + + public override void Process(float delta) + { + if (Master.IsUsing) + { + Master.ChargeProgress = 1 - Master.UsingProgress; + } + } + + public override void OnUsingFinish() + { + Master.ChargeProgress = 0; + } + + public override void OnPickUpItem() + { + Role.OnDamageEvent += OnDamageEvent; + } + + public override void OnRemoveItem() + { + Role.OnDamageEvent -= OnDamageEvent; + } + + private void OnDamageEvent(Role role, int value) + { + if (Master.IsUsing) + { + return; + } + Master.ChargeProgress += 1f / _value * value; + } +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/game/buff/effect/Eff_AreaTrigger.cs b/DungeonShooting_Godot/src/game/buff/effect/Eff_AreaTrigger.cs new file mode 100644 index 0000000..69c0e16 --- /dev/null +++ b/DungeonShooting_Godot/src/game/buff/effect/Eff_AreaTrigger.cs @@ -0,0 +1,124 @@ + +using System.Collections.Generic; +using Godot; + +[EffectFragment("AreaTrigger", + "触发附近地上的武器开火, " + + "参数1为最大作用半径, ")] +public class Eff_AreaTrigger : EffectFragment +{ + private Prop5003Area _areaNode; + private List _weaponList = new List(); + private float _time = 0; + + private int _radius = 250; + + public override void InitParam(float arg1) + { + _radius = (int)arg1; + } + + public override void Ready() + { + _areaNode = ResourceManager.LoadAndInstantiate(ResourcePath.prefab_prop_activeComp_Prop5003_Area_tscn); + _areaNode.BodyEntered += OnBodyEntered; + _areaNode.BodyExited += OnBodyExited; + AddChild(_areaNode); + } + + public override void OnDestroy() + { + _areaNode.QueueFree(); + } + + public override void OnUse() + { + _areaNode.PlayEffect(0, _radius, Master.Attribute.Duration); + } + + public override void OnUsingFinish() + { + foreach (var weapon in _weaponList) + { + weapon.ClearTriggerRole(); + } + _weaponList.Clear(); + } + + public override void Process(float delta) + { + if (!Master.IsUsing) + { + _time = 0; + return; + } + _time += delta; + var flag = false; + if (_time >= 0.5f) + { + flag = true; + _time %= 0.5f; + } + for (var i = 0; i < _weaponList.Count; i++) + { + var weapon = _weaponList[i]; + if (weapon.Master != null) + { + _weaponList.RemoveAt(i--); + weapon.ClearTriggerRole(); + continue; + } + + if (flag) + { + var weaponBase = weapon.GetUseAttribute(Role); + if (!weaponBase.ContinuousShoot) + { + if (!weaponBase.LooseShoot) + { + continue; + } + else if (!weapon.IsCharging || weapon.IsChargeFinish()) + { + continue; + } + } + } + weapon.Trigger(Role, false); + } + } + + public override void OnPickUpItem() + { + RemoveChild(_areaNode); + Role.AnimatedSprite.AddChild(_areaNode); + } + + public override void OnRemoveItem() + { + Role.AnimatedSprite.RemoveChild(_areaNode); + AddChild(_areaNode); + } + + private void OnBodyEntered(Node2D node) + { + if (node is Weapon weapon && weapon.Master == null) + { + if (!_weaponList.Contains(weapon)) + { + _weaponList.Add(weapon); + } + } + } + + private void OnBodyExited(Node2D node) + { + if (node is Weapon weapon && weapon.Master == null) + { + if (_weaponList.Remove(weapon)) + { + weapon.ClearTriggerRole(); + } + } + } +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/game/buff/effect/Eff_PiggyBank.cs b/DungeonShooting_Godot/src/game/buff/effect/Eff_PiggyBank.cs new file mode 100644 index 0000000..1e80544 --- /dev/null +++ b/DungeonShooting_Godot/src/game/buff/effect/Eff_PiggyBank.cs @@ -0,0 +1,53 @@ + +using Godot; + +[EffectFragment("PiggyBank", "存钱罐, 使用后返还存入的金币, 参数1为返还金币的倍率(小数)")] +public class Eff_PiggyBank : EffectFragment +{ + private float _value; + //当前存入的金币数量 + private float _currValue; + + public override void InitParam(float arg1) + { + _value = arg1; + } + + public override bool OnCheckUse() + { + return _currValue > 0; + } + + public override void OnUse() + { + var goldList = Utils.GetGoldList(Mathf.FloorToInt(_currValue * _value)); + foreach (var id in goldList) + { + var o = ObjectManager.GetActivityObject(id); + o.Position = Role.Position; + o.Throw(0, + Utils.Random.RandomRangeInt(50, 110), + new Vector2(Utils.Random.RandomRangeInt(-20, 20), Utils.Random.RandomRangeInt(-20, 20)), + 0 + ); + } + + _currValue = 0; + } + + public override void OnPickUpItem() + { + Role.RoleState.CalcGetGoldEvent += OnCalcGetGoldEvent; + } + + public override void OnRemoveItem() + { + Role.RoleState.CalcGetGoldEvent -= OnCalcGetGoldEvent; + } + + private void OnCalcGetGoldEvent(int origin, RefValue refValue) + { + _currValue += refValue.Value; + refValue.Value = 0; + } +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/game/buffComp/active/Prop5003Area.cs b/DungeonShooting_Godot/src/game/buffComp/active/Prop5003Area.cs new file mode 100644 index 0000000..8177940 --- /dev/null +++ b/DungeonShooting_Godot/src/game/buffComp/active/Prop5003Area.cs @@ -0,0 +1,63 @@ + +using System; +using Godot; + +public partial class Prop5003Area : Area2D +{ + [Export] + public Sprite2D CircleSprite; + + [Export] + public CollisionShape2D Collision; + + public CircleShape2D CircleShape; + public GradientTexture2D Gradient; + + public override void _Ready() + { + CircleShape = (CircleShape2D)Collision.Shape; + Gradient = (GradientTexture2D)CircleSprite.Texture; + SetEnable(false); + } + + public void PlayEffect(int startRadius, int endRadius, float time) + { + var tween = CreateTween(); + tween.SetParallel(); + tween.TweenCallback(Callable.From(() => + { + SetEnable(true); + Modulate = Colors.White; + })); + tween.Chain(); + + tween.TweenMethod(Callable.From(SetRadius), startRadius, endRadius * 0.75f, time * 0.2f); + tween.Chain(); + + tween.TweenInterval(time * 0.55f); + tween.Chain(); + + tween.TweenMethod(Callable.From(SetRadius), endRadius * 0.75f, endRadius, time * 0.25f); + tween.TweenProperty(this, "modulate", new Color(1, 1, 1, 0), time * 0.25f); + tween.Chain(); + + tween.TweenCallback(Callable.From(() => + { + SetEnable(false); + })); + tween.Play(); + } + + private void SetRadius(int radius) + { + Gradient.Width = radius * 2; + Gradient.Height = radius * 2; + CircleShape.Radius = radius; + } + + private void SetEnable(bool value) + { + Monitoring = value; + CircleSprite.Visible = value; + } +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/game/manager/PropFragmentRegister.cs b/DungeonShooting_Godot/src/game/manager/PropFragmentRegister.cs index 3dcb7e5..f13989b 100644 --- a/DungeonShooting_Godot/src/game/manager/PropFragmentRegister.cs +++ b/DungeonShooting_Godot/src/game/manager/PropFragmentRegister.cs @@ -14,7 +14,7 @@ public static Dictionary BuffFragmentInfos { get; private set; } /// - /// 所有主动道具条件数据 + /// 所有主动道具使用条件数据 /// public static Dictionary ConditionFragmentInfos { get; private set; } @@ -22,6 +22,11 @@ /// 所有主动道具效果数据 /// public static Dictionary EffectFragmentInfos { get; private set; } + + /// + /// 所有主动道具充能条件数据 + /// + public static Dictionary ChargeFragmentInfos { get; private set; } /// /// 初始化 buff @@ -31,6 +36,7 @@ BuffFragmentInfos = new Dictionary(); ConditionFragmentInfos = new Dictionary(); EffectFragmentInfos = new Dictionary(); + ChargeFragmentInfos = new Dictionary(); var types = typeof(PropFragmentRegister).Assembly.GetTypes(); //包含[BuffAttribute]特性 @@ -87,5 +93,23 @@ EffectFragmentInfos.Add(attribute.EffectName, effectInfo); } } + //包含[ChargeAttribute]特性 + var charges = types.Where(type => + type.IsClass && !type.IsAbstract && type.IsAssignableTo(typeof(ChargeFragment))); + foreach (var type in charges) + { + var attribute = (ChargeFragmentAttribute)type.GetCustomAttribute(typeof(ChargeFragmentAttribute), false); + if (attribute != null) + { + if (ChargeFragmentInfos.ContainsKey(attribute.ChargeName)) + { + GD.PrintErr($"Charge '{attribute.ChargeName}' 重名!"); + continue; + } + + var chargeInfo = new PropFragmentInfo(attribute.ChargeName, attribute.Description, type); + ChargeFragmentInfos.Add(attribute.ChargeName, chargeInfo); + } + } } } \ No newline at end of file diff --git a/DungeonShooting_Godot/src/game/manager/ResourcePath.cs b/DungeonShooting_Godot/src/game/manager/ResourcePath.cs index 2eef041..5c58cc5 100644 --- a/DungeonShooting_Godot/src/game/manager/ResourcePath.cs +++ b/DungeonShooting_Godot/src/game/manager/ResourcePath.cs @@ -45,22 +45,9 @@ public const string prefab_ui_EditorColorPicker_tscn = "res://prefab/ui/EditorColorPicker.tscn"; public const string prefab_ui_RoomUI_tscn = "res://prefab/ui/RoomUI.tscn"; public const string prefab_prop_PropTemplate_tscn = "res://prefab/prop/PropTemplate.tscn"; - public const string prefab_prop_buff_BuffProp0003_tscn = "res://prefab/prop/buff/BuffProp0003.tscn"; - public const string prefab_prop_buff_BuffProp0014_tscn = "res://prefab/prop/buff/BuffProp0014.tscn"; - public const string prefab_prop_buff_BuffProp0002_tscn = "res://prefab/prop/buff/BuffProp0002.tscn"; - public const string prefab_prop_buff_BuffProp0009_tscn = "res://prefab/prop/buff/BuffProp0009.tscn"; - public const string prefab_prop_buff_BuffProp0005_tscn = "res://prefab/prop/buff/BuffProp0005.tscn"; - public const string prefab_prop_buff_BuffProp0013_tscn = "res://prefab/prop/buff/BuffProp0013.tscn"; - public const string prefab_prop_buff_BuffProp0012_tscn = "res://prefab/prop/buff/BuffProp0012.tscn"; - public const string prefab_prop_buff_BuffProp0004_tscn = "res://prefab/prop/buff/BuffProp0004.tscn"; - public const string prefab_prop_buff_BuffProp0008_tscn = "res://prefab/prop/buff/BuffProp0008.tscn"; - public const string prefab_prop_buff_BuffProp0011_tscn = "res://prefab/prop/buff/BuffProp0011.tscn"; - public const string prefab_prop_buff_BuffProp0007_tscn = "res://prefab/prop/buff/BuffProp0007.tscn"; - public const string prefab_prop_buff_BuffProp0006_tscn = "res://prefab/prop/buff/BuffProp0006.tscn"; - public const string prefab_prop_buff_BuffProp0010_tscn = "res://prefab/prop/buff/BuffProp0010.tscn"; - public const string prefab_prop_buff_BuffProp0001_tscn = "res://prefab/prop/buff/BuffProp0001.tscn"; - public const string prefab_prop_active_ActiveProp5001_tscn = "res://prefab/prop/active/ActiveProp5001.tscn"; - public const string prefab_prop_active_ActiveProp5000_tscn = "res://prefab/prop/active/ActiveProp5000.tscn"; + public const string prefab_prop_ActiveProp_tscn = "res://prefab/prop/ActiveProp.tscn"; + public const string prefab_prop_BuffProp_tscn = "res://prefab/prop/BuffProp.tscn"; + public const string prefab_prop_activeComp_Prop5003_Area_tscn = "res://prefab/prop/activeComp/Prop5003_Area.tscn"; public const string prefab_weapon_Weapon0008_tscn = "res://prefab/weapon/Weapon0008.tscn"; public const string prefab_weapon_Weapon0004_tscn = "res://prefab/weapon/Weapon0004.tscn"; public const string prefab_weapon_Weapon0005_tscn = "res://prefab/weapon/Weapon0005.tscn"; @@ -175,22 +162,6 @@ public const string scene_test_TestNavigation2_tscn = "res://scene/test/TestNavigation2.tscn"; public const string scene_test_TestLoadTileSetConfig_tscn = "res://scene/test/TestLoadTileSetConfig.tscn"; public const string scene_test_TestDrawSprite_tscn = "res://scene/test/TestDrawSprite.tscn"; - public const string resource_spriteFrames_prop_buff_BuffProp0009_tres = "res://resource/spriteFrames/prop/buff/BuffProp0009.tres"; - public const string resource_spriteFrames_prop_buff_BuffProp0013_tres = "res://resource/spriteFrames/prop/buff/BuffProp0013.tres"; - public const string resource_spriteFrames_prop_buff_BuffProp0005_tres = "res://resource/spriteFrames/prop/buff/BuffProp0005.tres"; - public const string resource_spriteFrames_prop_buff_BuffProp0004_tres = "res://resource/spriteFrames/prop/buff/BuffProp0004.tres"; - public const string resource_spriteFrames_prop_buff_BuffProp0012_tres = "res://resource/spriteFrames/prop/buff/BuffProp0012.tres"; - public const string resource_spriteFrames_prop_buff_BuffProp0008_tres = "res://resource/spriteFrames/prop/buff/BuffProp0008.tres"; - public const string resource_spriteFrames_prop_buff_BuffProp0003_tres = "res://resource/spriteFrames/prop/buff/BuffProp0003.tres"; - public const string resource_spriteFrames_prop_buff_BuffProp0002_tres = "res://resource/spriteFrames/prop/buff/BuffProp0002.tres"; - public const string resource_spriteFrames_prop_buff_BuffProp0014_tres = "res://resource/spriteFrames/prop/buff/BuffProp0014.tres"; - public const string resource_spriteFrames_prop_buff_BuffProp0001_tres = "res://resource/spriteFrames/prop/buff/BuffProp0001.tres"; - public const string resource_spriteFrames_prop_buff_BuffProp0007_tres = "res://resource/spriteFrames/prop/buff/BuffProp0007.tres"; - public const string resource_spriteFrames_prop_buff_BuffProp0011_tres = "res://resource/spriteFrames/prop/buff/BuffProp0011.tres"; - public const string resource_spriteFrames_prop_buff_BuffProp0010_tres = "res://resource/spriteFrames/prop/buff/BuffProp0010.tres"; - public const string resource_spriteFrames_prop_buff_BuffProp0006_tres = "res://resource/spriteFrames/prop/buff/BuffProp0006.tres"; - public const string resource_spriteFrames_prop_active_ActiveProp5001_tres = "res://resource/spriteFrames/prop/active/ActiveProp5001.tres"; - public const string resource_spriteFrames_prop_active_ActiveProp5000_tres = "res://resource/spriteFrames/prop/active/ActiveProp5000.tres"; public const string resource_spriteFrames_weapon_Weapon0002_tres = "res://resource/spriteFrames/weapon/Weapon0002.tres"; public const string resource_spriteFrames_weapon_Weapon0014_tres = "res://resource/spriteFrames/weapon/Weapon0014.tres"; public const string resource_spriteFrames_weapon_Weapon0004_hit_tres = "res://resource/spriteFrames/weapon/Weapon0004_hit.tres"; @@ -231,11 +202,13 @@ public const string resource_config_LiquidMaterial_json = "res://resource/config/LiquidMaterial.json"; public const string resource_config_ActivityBase_json = "res://resource/config/ActivityBase.json"; public const string resource_config_EnemyBase_json = "res://resource/config/EnemyBase.json"; + public const string resource_config_ActivePropBase_json = "res://resource/config/ActivePropBase.json"; public const string resource_config_BulletBase_json = "res://resource/config/BulletBase.json"; public const string resource_config_AiAttackAttr_json = "res://resource/config/AiAttackAttr.json"; public const string resource_config_ActivityMaterial_json = "res://resource/config/ActivityMaterial.json"; public const string resource_config_WeaponBase_json = "res://resource/config/WeaponBase.json"; public const string resource_config_Sound_json = "res://resource/config/Sound.json"; + public const string resource_config_BuffPropBase_json = "res://resource/config/BuffPropBase.json"; public const string resource_navigation_NavigationPolygon_tres = "res://resource/navigation/NavigationPolygon.tres"; public const string resource_curve_Curve1_tres = "res://resource/curve/Curve1.tres"; public const string resource_theme_theme1_tres = "res://resource/theme/theme1.tres"; @@ -306,7 +279,9 @@ public const string resource_sprite_ui_encyclopedia_Item_png = "res://resource/sprite/ui/encyclopedia/Item.png"; public const string resource_sprite_ui_encyclopedia_TabSelect_png = "res://resource/sprite/ui/encyclopedia/TabSelect.png"; public const string resource_sprite_ui_encyclopedia_Select_png = "res://resource/sprite/ui/encyclopedia/Select.png"; + public const string resource_sprite_ui_encyclopedia_CloseSelect_png = "res://resource/sprite/ui/encyclopedia/CloseSelect.png"; public const string resource_sprite_ui_encyclopedia_TabIcon1_png = "res://resource/sprite/ui/encyclopedia/TabIcon1.png"; + public const string resource_sprite_ui_encyclopedia_Close_png = "res://resource/sprite/ui/encyclopedia/Close.png"; public const string resource_sprite_ui_mapEditorTools_DoorDragButton_png = "res://resource/sprite/ui/mapEditorTools/DoorDragButton.png"; public const string resource_sprite_ui_mapEditorTools_DoorDragButton_hover_png = "res://resource/sprite/ui/mapEditorTools/DoorDragButton_hover.png"; public const string resource_sprite_ui_mapEditorTools_DoorDragButton_down_png = "res://resource/sprite/ui/mapEditorTools/DoorDragButton_down.png"; @@ -330,6 +305,8 @@ public const string resource_sprite_prop_buff_BuffProp0001export_png = "res://resource/sprite/prop/buff/BuffProp0001-export.png"; public const string resource_sprite_prop_active_ActiveProp5001_png = "res://resource/sprite/prop/active/ActiveProp5001.png"; public const string resource_sprite_prop_active_ActiveProp5000_png = "res://resource/sprite/prop/active/ActiveProp5000.png"; + public const string resource_sprite_prop_active_ActiveProp5002_png = "res://resource/sprite/prop/active/ActiveProp5002.png"; + public const string resource_sprite_prop_active_ActiveProp5003_png = "res://resource/sprite/prop/active/ActiveProp5003.png"; public const string resource_sprite_weapon_weapon0014_Weapon0014_png = "res://resource/sprite/weapon/weapon0014/Weapon0014.png"; public const string resource_sprite_weapon_weapon0013_weapon0014export_png = "res://resource/sprite/weapon/weapon0013/weapon0014-export.png"; public const string resource_sprite_weapon_weapon0013_weapon0014_png = "res://resource/sprite/weapon/weapon0013/weapon0014.png";