diff --git a/DungeonShooting_Godot/DungeonShooting.csproj b/DungeonShooting_Godot/DungeonShooting.csproj index 4e093b1..f88bca0 100644 --- a/DungeonShooting_Godot/DungeonShooting.csproj +++ b/DungeonShooting_Godot/DungeonShooting.csproj @@ -1,4 +1,4 @@ - + net6.0 true diff --git a/DungeonShooting_Godot/DungeonShooting.csproj.old.1 b/DungeonShooting_Godot/DungeonShooting.csproj.old.1 new file mode 100644 index 0000000..4e093b1 --- /dev/null +++ b/DungeonShooting_Godot/DungeonShooting.csproj.old.1 @@ -0,0 +1,11 @@ + + + net6.0 + true + + + + + + + \ No newline at end of file diff --git a/DungeonShooting_Godot/excel/excelFile/ActivityObject.xlsx b/DungeonShooting_Godot/excel/excelFile/ActivityObject.xlsx index 24e11a1..4eda85d 100644 --- a/DungeonShooting_Godot/excel/excelFile/ActivityObject.xlsx +++ b/DungeonShooting_Godot/excel/excelFile/ActivityObject.xlsx Binary files differ diff --git a/DungeonShooting_Godot/excel/excelFile/Sound.xlsx b/DungeonShooting_Godot/excel/excelFile/Sound.xlsx index 6679fea..73dc578 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/Weapon.xlsx b/DungeonShooting_Godot/excel/excelFile/Weapon.xlsx index a2bd8f8..675749f 100644 --- a/DungeonShooting_Godot/excel/excelFile/Weapon.xlsx +++ b/DungeonShooting_Godot/excel/excelFile/Weapon.xlsx Binary files differ diff --git a/DungeonShooting_Godot/prefab/bullet/Bullet0001.tscn b/DungeonShooting_Godot/prefab/bullet/Bullet0001.tscn index 4081afc..040a995 100644 --- a/DungeonShooting_Godot/prefab/bullet/Bullet0001.tscn +++ b/DungeonShooting_Godot/prefab/bullet/Bullet0001.tscn @@ -1,21 +1,20 @@ [gd_scene load_steps=9 format=3 uid="uid://bj4kmvt8jg1cf"] [ext_resource type="Script" path="res://src/game/activity/bullet/Bullet.cs" id="1_82ma0"] -[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="2_p12d3"] +[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="2_6wvtu"] [ext_resource type="Texture2D" uid="uid://bu0b11hiuecxy" path="res://resource/sprite/bullet/bullet.png" id="3_hjgpe"] - -[sub_resource type="ShaderMaterial" id="ShaderMaterial_5a4f2"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_w5w0i"] resource_local_to_scene = true -shader = ExtResource("2_p12d3") +shader = ExtResource("2_6wvtu") shader_parameter/blend = Color(0, 0, 0, 0.470588) -shader_parameter/schedule = 1 +shader_parameter/schedule = 1.0 -[sub_resource type="ShaderMaterial" id="ShaderMaterial_o0655"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_qhkgc"] resource_local_to_scene = true -shader = ExtResource("2_p12d3") +shader = ExtResource("2_6wvtu") shader_parameter/blend = Color(1, 1, 1, 1) -shader_parameter/schedule = 0 +shader_parameter/schedule = 0.0 [sub_resource type="SpriteFrames" id="SpriteFrames_5wvmf"] animations = [{ @@ -44,11 +43,11 @@ [node name="ShadowSprite" type="Sprite2D" parent="."] z_index = -1 -material = SubResource("ShaderMaterial_5a4f2") +material = SubResource("ShaderMaterial_w5w0i") [node name="AnimatedSprite" type="AnimatedSprite2D" parent="."] modulate = Color(1.8, 1.8, 1.8, 1) -material = SubResource("ShaderMaterial_o0655") +material = SubResource("ShaderMaterial_qhkgc") sprite_frames = SubResource("SpriteFrames_5wvmf") [node name="CollisionArea" type="Area2D" parent="."] diff --git a/DungeonShooting_Godot/prefab/bullet/Bullet0002.tscn b/DungeonShooting_Godot/prefab/bullet/Bullet0002.tscn index da195d0..e2bbb87 100644 --- a/DungeonShooting_Godot/prefab/bullet/Bullet0002.tscn +++ b/DungeonShooting_Godot/prefab/bullet/Bullet0002.tscn @@ -4,17 +4,17 @@ [ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="2_n44pd"] [ext_resource type="SpriteFrames" uid="uid://bpeodjqiy3mil" path="res://resource/spriteFrames/Bullet0002.tres" id="3_uvuj8"] -[sub_resource type="ShaderMaterial" id="ShaderMaterial_5a4f2"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_v77gw"] resource_local_to_scene = true shader = ExtResource("2_n44pd") shader_parameter/blend = Color(0, 0, 0, 0.470588) -shader_parameter/schedule = 1 +shader_parameter/schedule = 1.0 -[sub_resource type="ShaderMaterial" id="ShaderMaterial_o0655"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_p0wfd"] resource_local_to_scene = true shader = ExtResource("2_n44pd") shader_parameter/blend = Color(1, 1, 1, 1) -shader_parameter/schedule = 0 +shader_parameter/schedule = 0.0 [sub_resource type="RectangleShape2D" id="RectangleShape2D_c0onq"] size = Vector2(44.72, 12) @@ -32,11 +32,11 @@ [node name="ShadowSprite" type="Sprite2D" parent="."] z_index = -1 -material = SubResource("ShaderMaterial_5a4f2") +material = SubResource("ShaderMaterial_v77gw") [node name="AnimatedSprite" type="AnimatedSprite2D" parent="."] modulate = Color(1.8, 1.8, 1.8, 1) -material = SubResource("ShaderMaterial_o0655") +material = SubResource("ShaderMaterial_p0wfd") sprite_frames = ExtResource("3_uvuj8") [node name="CollisionArea" type="Area2D" parent="."] diff --git a/DungeonShooting_Godot/prefab/effect/activityObject/Effect0001.tscn b/DungeonShooting_Godot/prefab/effect/activityObject/Effect0001.tscn index bf30d58..e530d24 100644 --- a/DungeonShooting_Godot/prefab/effect/activityObject/Effect0001.tscn +++ b/DungeonShooting_Godot/prefab/effect/activityObject/Effect0001.tscn @@ -9,13 +9,13 @@ resource_local_to_scene = true shader = ExtResource("2_b3d83") shader_parameter/blend = Color(0, 0, 0, 0.470588) -shader_parameter/schedule = 1 +shader_parameter/schedule = 1.0 [sub_resource type="ShaderMaterial" id="ShaderMaterial_08fn3"] resource_local_to_scene = true shader = ExtResource("2_b3d83") shader_parameter/blend = Color(1, 1, 1, 1) -shader_parameter/schedule = 0 +shader_parameter/schedule = 0.0 [sub_resource type="AtlasTexture" id="AtlasTexture_cldwb"] atlas = ExtResource("3_ntutm") diff --git a/DungeonShooting_Godot/prefab/map/RoomDoor_E.tscn b/DungeonShooting_Godot/prefab/map/RoomDoor_E.tscn index 6ade137..1c4997b 100644 --- a/DungeonShooting_Godot/prefab/map/RoomDoor_E.tscn +++ b/DungeonShooting_Godot/prefab/map/RoomDoor_E.tscn @@ -8,13 +8,13 @@ resource_local_to_scene = true shader = ExtResource("2_lwx51") shader_parameter/blend = Color(0, 0, 0, 0.470588) -shader_parameter/schedule = 1 +shader_parameter/schedule = 1.0 [sub_resource type="ShaderMaterial" id="ShaderMaterial_t4ayq"] resource_local_to_scene = true shader = ExtResource("2_lwx51") shader_parameter/blend = Color(1, 1, 1, 1) -shader_parameter/schedule = 0 +shader_parameter/schedule = 0.0 [sub_resource type="RectangleShape2D" id="RectangleShape2D_opsb6"] resource_local_to_scene = true diff --git a/DungeonShooting_Godot/prefab/map/RoomDoor_N.tscn b/DungeonShooting_Godot/prefab/map/RoomDoor_N.tscn index 54aa32f..77fcfce 100644 --- a/DungeonShooting_Godot/prefab/map/RoomDoor_N.tscn +++ b/DungeonShooting_Godot/prefab/map/RoomDoor_N.tscn @@ -8,13 +8,13 @@ resource_local_to_scene = true shader = ExtResource("2_h5ru6") shader_parameter/blend = Color(0, 0, 0, 0.470588) -shader_parameter/schedule = 1 +shader_parameter/schedule = 1.0 [sub_resource type="ShaderMaterial" id="ShaderMaterial_t4ayq"] resource_local_to_scene = true shader = ExtResource("2_h5ru6") shader_parameter/blend = Color(1, 1, 1, 1) -shader_parameter/schedule = 0 +shader_parameter/schedule = 0.0 [sub_resource type="RectangleShape2D" id="RectangleShape2D_opsb6"] resource_local_to_scene = true diff --git a/DungeonShooting_Godot/prefab/map/RoomDoor_S.tscn b/DungeonShooting_Godot/prefab/map/RoomDoor_S.tscn index e3b5afb..f7a1217 100644 --- a/DungeonShooting_Godot/prefab/map/RoomDoor_S.tscn +++ b/DungeonShooting_Godot/prefab/map/RoomDoor_S.tscn @@ -8,13 +8,13 @@ resource_local_to_scene = true shader = ExtResource("2_6vvcd") shader_parameter/blend = Color(0, 0, 0, 0.470588) -shader_parameter/schedule = 1 +shader_parameter/schedule = 1.0 [sub_resource type="ShaderMaterial" id="ShaderMaterial_t4ayq"] resource_local_to_scene = true shader = ExtResource("2_6vvcd") shader_parameter/blend = Color(1, 1, 1, 1) -shader_parameter/schedule = 0 +shader_parameter/schedule = 0.0 [sub_resource type="RectangleShape2D" id="RectangleShape2D_opsb6"] resource_local_to_scene = true diff --git a/DungeonShooting_Godot/prefab/map/RoomDoor_W.tscn b/DungeonShooting_Godot/prefab/map/RoomDoor_W.tscn index e32ebf8..0e5a557 100644 --- a/DungeonShooting_Godot/prefab/map/RoomDoor_W.tscn +++ b/DungeonShooting_Godot/prefab/map/RoomDoor_W.tscn @@ -8,13 +8,13 @@ resource_local_to_scene = true shader = ExtResource("2_wx2w3") shader_parameter/blend = Color(0, 0, 0, 0.470588) -shader_parameter/schedule = 1 +shader_parameter/schedule = 1.0 [sub_resource type="ShaderMaterial" id="ShaderMaterial_t4ayq"] resource_local_to_scene = true shader = ExtResource("2_wx2w3") shader_parameter/blend = Color(1, 1, 1, 1) -shader_parameter/schedule = 0 +shader_parameter/schedule = 0.0 [sub_resource type="RectangleShape2D" id="RectangleShape2D_2ko2r"] resource_local_to_scene = true diff --git a/DungeonShooting_Godot/prefab/role/Enemy0001.tscn b/DungeonShooting_Godot/prefab/role/Enemy0001.tscn index b40cbfa..8673633 100644 --- a/DungeonShooting_Godot/prefab/role/Enemy0001.tscn +++ b/DungeonShooting_Godot/prefab/role/Enemy0001.tscn @@ -9,13 +9,13 @@ resource_local_to_scene = true shader = ExtResource("3_x8agd") shader_parameter/blend = Color(0, 0, 0, 0.470588) -shader_parameter/schedule = 1 +shader_parameter/schedule = 1.0 [sub_resource type="ShaderMaterial" id="ShaderMaterial_k8mt5"] resource_local_to_scene = true shader = ExtResource("3_x8agd") shader_parameter/blend = Color(1, 1, 1, 1) -shader_parameter/schedule = 0 +shader_parameter/schedule = 0.0 [node name="Enemy0001" node_paths=PackedStringArray("HurtArea", "MountPoint", "BackMountPoint", "InteractiveArea", "ShadowSprite", "AnimatedSprite", "Collision") instance=ExtResource("1_5po38")] collision_layer = 16 diff --git a/DungeonShooting_Godot/prefab/role/Role0001.tscn b/DungeonShooting_Godot/prefab/role/Role0001.tscn index 4190ab6..497896e 100644 --- a/DungeonShooting_Godot/prefab/role/Role0001.tscn +++ b/DungeonShooting_Godot/prefab/role/Role0001.tscn @@ -9,13 +9,13 @@ resource_local_to_scene = true shader = ExtResource("3_rk4gg") shader_parameter/blend = Color(0, 0, 0, 0.470588) -shader_parameter/schedule = 1 +shader_parameter/schedule = 1.0 [sub_resource type="ShaderMaterial" id="ShaderMaterial_5ok5s"] resource_local_to_scene = true shader = ExtResource("3_rk4gg") shader_parameter/blend = Color(1, 1, 1, 1) -shader_parameter/schedule = 0 +shader_parameter/schedule = 0.0 [node name="Role0001" node_paths=PackedStringArray("HurtArea", "MountPoint", "BackMountPoint", "InteractiveArea", "ShadowSprite", "AnimatedSprite", "Collision") instance=ExtResource("1_10c2n")] collision_layer = 8 diff --git a/DungeonShooting_Godot/prefab/shell/Shell0001.tscn b/DungeonShooting_Godot/prefab/shell/Shell0001.tscn index 1d7c32b..b7f2eb4 100644 --- a/DungeonShooting_Godot/prefab/shell/Shell0001.tscn +++ b/DungeonShooting_Godot/prefab/shell/Shell0001.tscn @@ -8,15 +8,16 @@ resource_local_to_scene = true shader = ExtResource("2_tdny6") shader_parameter/blend = Color(0, 0, 0, 0.470588) -shader_parameter/schedule = 1 +shader_parameter/schedule = 1.0 [sub_resource type="ShaderMaterial" id="ShaderMaterial_7e6fo"] resource_local_to_scene = true shader = ExtResource("2_tdny6") shader_parameter/blend = Color(1, 1, 1, 1) -shader_parameter/schedule = 0 +shader_parameter/schedule = 0.0 [node name="Shell0001" type="CharacterBody2D" node_paths=PackedStringArray("ShadowSprite", "AnimatedSprite", "Collision")] +collision_layer = 128 script = ExtResource("1_2g70c") ShadowSprite = NodePath("ShadowSprite") AnimatedSprite = NodePath("AnimatedSprite") diff --git a/DungeonShooting_Godot/prefab/weapon/Weapon0001.tscn b/DungeonShooting_Godot/prefab/weapon/Weapon0001.tscn index ef51173..ae6e01b 100644 --- a/DungeonShooting_Godot/prefab/weapon/Weapon0001.tscn +++ b/DungeonShooting_Godot/prefab/weapon/Weapon0001.tscn @@ -9,13 +9,13 @@ resource_local_to_scene = true shader = ExtResource("3_x1q03") shader_parameter/blend = Color(0, 0, 0, 0.470588) -shader_parameter/schedule = 1 +shader_parameter/schedule = 1.0 [sub_resource type="ShaderMaterial" id="ShaderMaterial_bj7y3"] resource_local_to_scene = true shader = ExtResource("3_x1q03") shader_parameter/blend = Color(1, 1, 1, 1) -shader_parameter/schedule = 0 +shader_parameter/schedule = 0.0 [node name="Weapon0001" node_paths=PackedStringArray("FirePoint", "ShellPoint", "GripPoint", "AnimationPlayer", "ShadowSprite", "AnimatedSprite", "Collision") instance=ExtResource("1_ykl0r")] script = ExtResource("2_t56pk") diff --git a/DungeonShooting_Godot/prefab/weapon/Weapon0002.tscn b/DungeonShooting_Godot/prefab/weapon/Weapon0002.tscn index 543177a..2aa969b 100644 --- a/DungeonShooting_Godot/prefab/weapon/Weapon0002.tscn +++ b/DungeonShooting_Godot/prefab/weapon/Weapon0002.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=10 format=3 uid="uid://doj2eilx1xtxf"] -[ext_resource type="Script" path="res://src/game/activity/weapon/gun/Shotgun.cs" id="1_8kiv4"] +[ext_resource type="Script" path="res://src/game/activity/weapon/gun/Gun.cs" id="1_hgtyo"] [ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="2_8nvny"] [ext_resource type="SpriteFrames" uid="uid://domhmo4flmlt0" path="res://resource/spriteFrames/Weapon0002.tres" id="3_4h3je"] @@ -8,13 +8,13 @@ resource_local_to_scene = true shader = ExtResource("2_8nvny") shader_parameter/blend = Color(0, 0, 0, 0.470588) -shader_parameter/schedule = 1 +shader_parameter/schedule = 1.0 [sub_resource type="ShaderMaterial" id="ShaderMaterial_o36tv"] resource_local_to_scene = true shader = ExtResource("2_8nvny") shader_parameter/blend = Color(1, 1, 1, 1) -shader_parameter/schedule = 0 +shader_parameter/schedule = 0.0 [sub_resource type="RectangleShape2D" id="RectangleShape2D_3p5jk"] size = Vector2(19.5, 8.75) @@ -59,7 +59,7 @@ [node name="Weapon0002" type="CharacterBody2D" node_paths=PackedStringArray("FirePoint", "ShellPoint", "GripPoint", "AnimationPlayer", "ShadowSprite", "AnimatedSprite", "Collision")] collision_layer = 4 -script = ExtResource("1_8kiv4") +script = ExtResource("1_hgtyo") FirePoint = NodePath("AnimatedSprite/FirePoint") ShellPoint = NodePath("AnimatedSprite/ShellPoint") GripPoint = NodePath("GripPoint") diff --git a/DungeonShooting_Godot/prefab/weapon/Weapon0003.tscn b/DungeonShooting_Godot/prefab/weapon/Weapon0003.tscn index a4548d1..6a19802 100644 --- a/DungeonShooting_Godot/prefab/weapon/Weapon0003.tscn +++ b/DungeonShooting_Godot/prefab/weapon/Weapon0003.tscn @@ -8,13 +8,13 @@ resource_local_to_scene = true shader = ExtResource("2_4yjnk") shader_parameter/blend = Color(0, 0, 0, 0.470588) -shader_parameter/schedule = 1 +shader_parameter/schedule = 1.0 [sub_resource type="ShaderMaterial" id="ShaderMaterial_o36tv"] resource_local_to_scene = true shader = ExtResource("2_4yjnk") shader_parameter/blend = Color(1, 1, 1, 1) -shader_parameter/schedule = 0 +shader_parameter/schedule = 0.0 [sub_resource type="RectangleShape2D" id="RectangleShape2D_3p5jk"] size = Vector2(14, 8) diff --git a/DungeonShooting_Godot/prefab/weapon/Weapon0004.tscn b/DungeonShooting_Godot/prefab/weapon/Weapon0004.tscn index 40556be..7843a77 100644 --- a/DungeonShooting_Godot/prefab/weapon/Weapon0004.tscn +++ b/DungeonShooting_Godot/prefab/weapon/Weapon0004.tscn @@ -10,13 +10,13 @@ resource_local_to_scene = true shader = ExtResource("3_63s5g") shader_parameter/blend = Color(0, 0, 0, 0.470588) -shader_parameter/schedule = 1 +shader_parameter/schedule = 1.0 [sub_resource type="ShaderMaterial" id="ShaderMaterial_rtliw"] resource_local_to_scene = true shader = ExtResource("3_63s5g") shader_parameter/blend = Color(1, 1, 1, 1) -shader_parameter/schedule = 0 +shader_parameter/schedule = 0.0 [node name="Weapon0004" node_paths=PackedStringArray("FirePoint", "ShellPoint", "GripPoint", "AnimationPlayer", "ShadowSprite", "AnimatedSprite", "Collision") instance=ExtResource("1_kg172")] script = ExtResource("2_v1wer") diff --git a/DungeonShooting_Godot/prefab/weapon/Weapon0005.tscn b/DungeonShooting_Godot/prefab/weapon/Weapon0005.tscn index 7237343..342ee85 100644 --- a/DungeonShooting_Godot/prefab/weapon/Weapon0005.tscn +++ b/DungeonShooting_Godot/prefab/weapon/Weapon0005.tscn @@ -8,13 +8,13 @@ resource_local_to_scene = true shader = ExtResource("1_466gw") shader_parameter/blend = Color(0, 0, 0, 0.470588) -shader_parameter/schedule = 1 +shader_parameter/schedule = 1.0 [sub_resource type="ShaderMaterial" id="ShaderMaterial_o36tv"] resource_local_to_scene = true shader = ExtResource("1_466gw") shader_parameter/blend = Color(1, 1, 1, 1) -shader_parameter/schedule = 0 +shader_parameter/schedule = 0.0 [sub_resource type="RectangleShape2D" id="RectangleShape2D_3p5jk"] size = Vector2(26, 8) diff --git a/DungeonShooting_Godot/prefab/weapon/Weapon0006.tscn b/DungeonShooting_Godot/prefab/weapon/Weapon0006.tscn new file mode 100644 index 0000000..c6c2e9b --- /dev/null +++ b/DungeonShooting_Godot/prefab/weapon/Weapon0006.tscn @@ -0,0 +1,94 @@ +[gd_scene load_steps=10 format=3 uid="uid://uydtgdanj0kx"] + +[ext_resource type="Script" path="res://src/game/activity/weapon/gun/Gun.cs" id="1_5nx8j"] +[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="1_rp1bw"] +[ext_resource type="SpriteFrames" uid="uid://dx1mjbx4acs3q" path="res://resource/spriteFrames/Weapon0006.tres" id="2_j3sji"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_cbiyh"] +resource_local_to_scene = true +shader = ExtResource("1_rp1bw") +shader_parameter/blend = Color(0, 0, 0, 0.470588) +shader_parameter/schedule = 1.0 + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_o36tv"] +resource_local_to_scene = true +shader = ExtResource("1_rp1bw") +shader_parameter/blend = Color(1, 1, 1, 1) +shader_parameter/schedule = 0.0 + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_3p5jk"] +size = Vector2(12, 10) + +[sub_resource type="Animation" id="Animation_x136i"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("AnimatedSprite:material:shader_parameter/schedule") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0] +} + +[sub_resource type="Animation" id="Animation_3piau"] +resource_name = "floodlight" +length = 3.0 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("AnimatedSprite:material:shader_parameter/schedule") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 2.3, 2.6, 2.7, 3), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 0, +"values": [0, 0, 0.5, 0.5, 0] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_trkjd"] +_data = { +"RESET": SubResource("Animation_x136i"), +"floodlight": SubResource("Animation_3piau") +} + +[node name="Weapon0006" type="CharacterBody2D" node_paths=PackedStringArray("FirePoint", "ShellPoint", "GripPoint", "AnimationPlayer", "ShadowSprite", "AnimatedSprite", "Collision")] +collision_layer = 4 +script = ExtResource("1_5nx8j") +FirePoint = NodePath("AnimatedSprite/FirePoint") +ShellPoint = NodePath("AnimatedSprite/ShellPoint") +GripPoint = NodePath("GripPoint") +AnimationPlayer = NodePath("AnimationPlayer") +ShadowSprite = NodePath("ShadowSprite") +AnimatedSprite = NodePath("AnimatedSprite") +Collision = NodePath("Collision") + +[node name="ShadowSprite" type="Sprite2D" parent="."] +z_index = -1 +material = SubResource("ShaderMaterial_cbiyh") + +[node name="AnimatedSprite" type="AnimatedSprite2D" parent="."] +material = SubResource("ShaderMaterial_o36tv") +sprite_frames = ExtResource("2_j3sji") + +[node name="ShellPoint" type="Marker2D" parent="AnimatedSprite"] +position = Vector2(-3, -2.5) + +[node name="FirePoint" type="Marker2D" parent="AnimatedSprite"] +position = Vector2(8, -2.5) + +[node name="GripPoint" type="Marker2D" parent="."] +position = Vector2(-4, 1) + +[node name="Collision" type="CollisionShape2D" parent="."] +shape = SubResource("RectangleShape2D_3p5jk") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +"": SubResource("AnimationLibrary_trkjd") +} diff --git a/DungeonShooting_Godot/prefab/weapon/WeaponTemplate.tscn b/DungeonShooting_Godot/prefab/weapon/WeaponTemplate.tscn index 6af9687..254e507 100644 --- a/DungeonShooting_Godot/prefab/weapon/WeaponTemplate.tscn +++ b/DungeonShooting_Godot/prefab/weapon/WeaponTemplate.tscn @@ -6,13 +6,13 @@ resource_local_to_scene = true shader = ExtResource("1_3p8rg") shader_parameter/blend = Color(0, 0, 0, 0.470588) -shader_parameter/schedule = 1 +shader_parameter/schedule = 1.0 [sub_resource type="ShaderMaterial" id="ShaderMaterial_o36tv"] resource_local_to_scene = true shader = ExtResource("1_3p8rg") shader_parameter/blend = Color(1, 1, 1, 1) -shader_parameter/schedule = 0 +shader_parameter/schedule = 0.0 [sub_resource type="RectangleShape2D" id="RectangleShape2D_3p5jk"] size = Vector2(19.5, 8.75) diff --git a/DungeonShooting_Godot/project.godot b/DungeonShooting_Godot/project.godot index 601f8cb..3e12ec5 100644 --- a/DungeonShooting_Godot/project.godot +++ b/DungeonShooting_Godot/project.godot @@ -182,7 +182,8 @@ 2d_physics/layer_5="enemy" 2d_physics/layer_6="affiliation" 2d_physics/layer_7="onHead" -2d_physics/layer_8="In hand" +2d_physics/layer_8="shell" +2d_physics/layer_9="throwing" [mono] diff --git a/DungeonShooting_Godot/resource/config/ActivityObject.json b/DungeonShooting_Godot/resource/config/ActivityObject.json index d44e410..81bc791 100644 --- a/DungeonShooting_Godot/resource/config/ActivityObject.json +++ b/DungeonShooting_Godot/resource/config/ActivityObject.json @@ -42,6 +42,12 @@ "Remark": "" }, { + "Id": "weapon0006", + "Type": 5, + "Prefab": "res://prefab/weapon/Weapon0006.tscn", + "Remark": "" + }, + { "Id": "bullet0001", "Type": 6, "Prefab": "res://prefab/bullet/Bullet0001.tscn", diff --git a/DungeonShooting_Godot/resource/config/Sound.json b/DungeonShooting_Godot/resource/config/Sound.json index 0dd2fff..19ebaaf 100644 --- a/DungeonShooting_Godot/resource/config/Sound.json +++ b/DungeonShooting_Godot/resource/config/Sound.json @@ -1,80 +1,194 @@ [ { "Id": "shooting0001", - "Path": "res://resource/sound/sfx/Shooting0001.ogg", + "Path": "res://resource/sound/sfx/shooting/Shooting0001.ogg", "Volume": 1, "Remark": "\u624B\u67AA" }, { "Id": "shooting0002", - "Path": "res://resource/sound/sfx/Shooting0002.mp3", + "Path": "res://resource/sound/sfx/shooting/Shooting0002.ogg", "Volume": 1, "Remark": "\u6B65\u67AA(\u6D88\u97F3)" }, { "Id": "shooting0003", - "Path": "res://resource/sound/sfx/Shooting0003.mp3", - "Volume": 1, + "Path": "res://resource/sound/sfx/shooting/Shooting0003.ogg", + "Volume": 0.8, "Remark": "\u9730\u5F39\u67AA" }, { + "Id": "shooting0004", + "Path": "res://resource/sound/sfx/shooting/Shooting0004.ogg", + "Volume": 1, + "Remark": "\u624B\u67AA" + }, + { + "Id": "shooting0005", + "Path": "res://resource/sound/sfx/shooting/Shooting0005.ogg", + "Volume": 1, + "Remark": "\u6B65\u67AA" + }, + { + "Id": "shooting0006", + "Path": "res://resource/sound/sfx/shooting/Shooting0006.ogg", + "Volume": 1, + "Remark": "\u51B2\u950B\u67AA" + }, + { + "Id": "shooting0007", + "Path": "res://resource/sound/sfx/shooting/Shooting0007.ogg", + "Volume": 1, + "Remark": "\u6B65\u67AA" + }, + { + "Id": "shooting0008", + "Path": "res://resource/sound/sfx/shooting/Shooting0008.ogg", + "Volume": 1, + "Remark": "\u72D9\u51FB\u67AA" + }, + { "Id": "reloading0001", - "Path": "res://resource/sound/sfx/Reloading0001.mp3", + "Path": "res://resource/sound/sfx/reloading/Reloading0001.ogg", "Volume": 1, "Remark": "\u624B\u67AA" }, { "Id": "reloading0002", - "Path": "res://resource/sound/sfx/Reloading0002.ogg", + "Path": "res://resource/sound/sfx/reloading/Reloading0002.ogg", "Volume": 1, "Remark": "\u9730\u5F39\u67AA\u5355\u72EC\u88C5\u5F39" }, { "Id": "reloadBegin0002", - "Path": "res://resource/sound/sfx/Reloading_begin0002.ogg", + "Path": "res://resource/sound/sfx/reloading/Reloading_begin0002.ogg", "Volume": 1, "Remark": "\u9730\u5F39\u67AA" }, { + "Id": "reloadBegin0003", + "Path": "res://resource/sound/sfx/reloading/Reloading_begin0003.ogg", + "Volume": 1, + "Remark": "\u6B65\u67AA" + }, + { + "Id": "reloadBegin0004", + "Path": "res://resource/sound/sfx/reloading/Reloading_begin0004.ogg", + "Volume": 1, + "Remark": "\u6B65\u67AA" + }, + { + "Id": "reloadBegin0005", + "Path": "res://resource/sound/sfx/reloading/Reloading_begin0005.ogg", + "Volume": 1, + "Remark": "\u51B2\u950B\u67AA" + }, + { + "Id": "reloadBegin0009", + "Path": "res://resource/sound/sfx/reloading/Reloading_begin0009.ogg", + "Volume": 1, + "Remark": "\u72D9\u51FB\u67AA" + }, + { "Id": "reloadFinish0002", - "Path": "res://resource/sound/sfx/Reloading_finish0002.ogg", + "Path": "res://resource/sound/sfx/reloading/Reloading_finish0002.ogg", "Volume": 1, "Remark": "\u9730\u5F39\u67AA" }, { "Id": "equip0001", - "Path": "res://resource/sound/sfx/Equip0001.ogg", + "Path": "res://resource/sound/sfx/equip/Equip0001.ogg", "Volume": 1, "Remark": "" }, { "Id": "equip0002", - "Path": "res://resource/sound/sfx/Equip0002.ogg", + "Path": "res://resource/sound/sfx/equip/Equip0002.ogg", "Volume": 1, "Remark": "" }, { "Id": "equip0003", - "Path": "res://resource/sound/sfx/Equip0003.ogg", + "Path": "res://resource/sound/sfx/equip/Equip0003.ogg", "Volume": 1, "Remark": "" }, { "Id": "equip0004", - "Path": "res://resource/sound/sfx/Equip0004.ogg", + "Path": "res://resource/sound/sfx/equip/Equip0004.ogg", "Volume": 1, "Remark": "\u9730\u5F39\u67AA" }, { "Id": "equip0005", - "Path": "res://resource/sound/sfx/Equip0005.ogg", + "Path": "res://resource/sound/sfx/equip/Equip0005.ogg", "Volume": 1, "Remark": "\u9730\u5F39\u67AA" }, { "Id": "equip0006", - "Path": "res://resource/sound/sfx/Equip0006.ogg", + "Path": "res://resource/sound/sfx/equip/Equip0006.ogg", "Volume": 1, "Remark": "\u9730\u5F39\u67AA" + }, + { + "Id": "equip0007", + "Path": "res://resource/sound/sfx/equip/Equip0007.ogg", + "Volume": 1, + "Remark": "\u72D9\u51FB\u67AA" + }, + { + "Id": "equip0008", + "Path": "res://resource/sound/sfx/equip/Equip0008.ogg", + "Volume": 1, + "Remark": "\u72D9\u51FB\u67AA" + }, + { + "Id": "equip0009", + "Path": "res://resource/sound/sfx/equip/Equip0009.ogg", + "Volume": 1, + "Remark": "\u72D9\u51FB\u67AA" + }, + { + "Id": "equip0010", + "Path": "res://resource/sound/sfx/equip/Equip0010.ogg", + "Volume": 1, + "Remark": "\u6B65\u67AA" + }, + { + "Id": "equip0011", + "Path": "res://resource/sound/sfx/equip/Equip0011.ogg", + "Volume": 1, + "Remark": "\u6B65\u67AA" + }, + { + "Id": "equip0012", + "Path": "res://resource/sound/sfx/equip/Equip0012.ogg", + "Volume": 1, + "Remark": "\u6B65\u67AA" + }, + { + "Id": "equip0013", + "Path": "res://resource/sound/sfx/equip/Equip0013.ogg", + "Volume": 1, + "Remark": "\u6B65\u67AA" + }, + { + "Id": "equip0014", + "Path": "res://resource/sound/sfx/equip/Equip0014.ogg", + "Volume": 1, + "Remark": "\u624B\u67AA" + }, + { + "Id": "equip0015", + "Path": "res://resource/sound/sfx/equip/Equip0015.ogg", + "Volume": 1, + "Remark": "\u624B\u67AA" + }, + { + "Id": "equip0016", + "Path": "res://resource/sound/sfx/equip/Equip0016.ogg", + "Volume": 1, + "Remark": "\u51B2\u950B\u67AA" } ] \ No newline at end of file diff --git a/DungeonShooting_Godot/resource/config/Weapon.json b/DungeonShooting_Godot/resource/config/Weapon.json index 9d5b78e..6855a9c 100644 --- a/DungeonShooting_Godot/resource/config/Weapon.json +++ b/DungeonShooting_Godot/resource/config/Weapon.json @@ -8,9 +8,9 @@ "WeightType": 2, "ContinuousShoot": true, "AmmoCapacity": 30, - "MaxAmmoCapacity": 90, - "StandbyAmmoCapacity": 90, - "ReloadTime": 2, + "MaxAmmoCapacity": 1800, + "StandbyAmmoCapacity": 1500, + "ReloadTime": 2.2, "AloneReload": false, "AloneReloadCount": 1, "AloneReloadBeginIntervalTime": 0, @@ -28,13 +28,11 @@ "MinFireBulletCount": 1, "MaxFireBulletCount": 1, "DelayedTime": 0, - "StartScatteringRange": 10, - "FinalScatteringRange": 60, + "StartScatteringRange": 5, + "FinalScatteringRange": 50, "ScatteringRangeAddValue": 3, "ScatteringRangeBackSpeed": 40, "ScatteringRangeBackDelayTime": 0.5, - "MinDistance": 300, - "MaxDistance": 400, "MinBacklash": 2, "MaxBacklash": 4, "BacklashRegressionSpeed": 35, @@ -42,17 +40,23 @@ "DefaultAngle": 0, "UpliftAngleRestore": 1, "BulletId": "bullet0001", + "BulletMinDeviationAngle": 0, + "BulletMaxDeviationAngle": 0, + "BulletMaxSpeed": 350, + "BulletMinSpeed": 350, + "BulletMinDistance": 300, + "BulletMaxDistance": 400, "ThrowCollisionSize": { "X": 20, "Y": 15 }, - "__ShootSound": "shooting0002", - "__BeginReloadSound": "", - "BeginReloadSoundDelayTime": 0, + "__ShootSound": "shooting0005", + "__BeginReloadSound": "reloadBegin0004", + "BeginReloadSoundDelayTime": 0.2, "__ReloadSound": "", "ReloadSoundDelayTime": 0, - "__ReloadFinishSound": "", - "ReloadFinishSoundAdvanceTime": 0, + "__ReloadFinishSound": "equip0011", + "ReloadFinishSoundAdvanceTime": 0.4, "__EquipSound": "", "EquipSoundDelayTime": 0, "__OtherSoundMap": null, @@ -70,9 +74,9 @@ "WeightType": 2, "ContinuousShoot": false, "AmmoCapacity": 30, - "MaxAmmoCapacity": 90, - "StandbyAmmoCapacity": 30, - "ReloadTime": 2, + "MaxAmmoCapacity": 1800, + "StandbyAmmoCapacity": 1500, + "ReloadTime": 2.2, "AloneReload": false, "AloneReloadCount": 1, "AloneReloadBeginIntervalTime": 0, @@ -90,13 +94,11 @@ "MinFireBulletCount": 1, "MaxFireBulletCount": 1, "DelayedTime": 0, - "StartScatteringRange": 30, - "FinalScatteringRange": 60, + "StartScatteringRange": 5, + "FinalScatteringRange": 50, "ScatteringRangeAddValue": 3, "ScatteringRangeBackSpeed": 40, "ScatteringRangeBackDelayTime": 0.5, - "MinDistance": 300, - "MaxDistance": 400, "MinBacklash": 2, "MaxBacklash": 4, "BacklashRegressionSpeed": 35, @@ -104,23 +106,29 @@ "DefaultAngle": 0, "UpliftAngleRestore": 1, "BulletId": "bullet0001", + "BulletMinDeviationAngle": 0, + "BulletMaxDeviationAngle": 0, + "BulletMaxSpeed": 350, + "BulletMinSpeed": 350, + "BulletMinDistance": 300, + "BulletMaxDistance": 400, "ThrowCollisionSize": { "X": 20, "Y": 15 }, - "__ShootSound": "shooting0002", - "__BeginReloadSound": "", - "BeginReloadSoundDelayTime": 0, + "__ShootSound": "shooting0005", + "__BeginReloadSound": "reloadBegin0004", + "BeginReloadSoundDelayTime": 0.2, "__ReloadSound": "", "ReloadSoundDelayTime": 0, - "__ReloadFinishSound": "", - "ReloadFinishSoundAdvanceTime": 0, + "__ReloadFinishSound": "equip0011", + "ReloadFinishSoundAdvanceTime": 0.4, "__EquipSound": "", "EquipSoundDelayTime": 0, "__OtherSoundMap": null, "__AiUseAttribute": "", "AiTargetLockingTime": 0.5, - "AiBulletSpeedScale": 0.7, + "AiBulletSpeedScale": 0.6, "AiAmmoConsumptionProbability": 0 }, { @@ -132,8 +140,8 @@ "WeightType": 2, "ContinuousShoot": false, "AmmoCapacity": 7, - "MaxAmmoCapacity": 42, - "StandbyAmmoCapacity": 42, + "MaxAmmoCapacity": 63, + "StandbyAmmoCapacity": 56, "ReloadTime": 0.4, "AloneReload": true, "AloneReloadCount": 1, @@ -157,8 +165,6 @@ "ScatteringRangeAddValue": 20, "ScatteringRangeBackSpeed": 40, "ScatteringRangeBackDelayTime": 0.5, - "MinDistance": 200, - "MaxDistance": 250, "MinBacklash": 5, "MaxBacklash": 6, "BacklashRegressionSpeed": 35, @@ -166,6 +172,12 @@ "DefaultAngle": 0, "UpliftAngleRestore": 2.5, "BulletId": "bullet0002", + "BulletMinDeviationAngle": -10, + "BulletMaxDeviationAngle": 10, + "BulletMaxSpeed": 280, + "BulletMinSpeed": 380, + "BulletMinDistance": 200, + "BulletMaxDistance": 250, "ThrowCollisionSize": { "X": 20, "Y": 15 @@ -194,8 +206,8 @@ "WeightType": 2, "ContinuousShoot": false, "AmmoCapacity": 7, - "MaxAmmoCapacity": 42, - "StandbyAmmoCapacity": 42, + "MaxAmmoCapacity": 63, + "StandbyAmmoCapacity": 56, "ReloadTime": 0.4, "AloneReload": true, "AloneReloadCount": 1, @@ -219,8 +231,6 @@ "ScatteringRangeAddValue": 20, "ScatteringRangeBackSpeed": 40, "ScatteringRangeBackDelayTime": 0.5, - "MinDistance": 200, - "MaxDistance": 250, "MinBacklash": 5, "MaxBacklash": 6, "BacklashRegressionSpeed": 35, @@ -228,6 +238,12 @@ "DefaultAngle": 0, "UpliftAngleRestore": 2.5, "BulletId": "bullet0002", + "BulletMinDeviationAngle": -10, + "BulletMaxDeviationAngle": 10, + "BulletMaxSpeed": 280, + "BulletMinSpeed": 380, + "BulletMinDistance": 200, + "BulletMaxDistance": 250, "ThrowCollisionSize": { "X": 20, "Y": 15 @@ -244,7 +260,7 @@ "__OtherSoundMap": null, "__AiUseAttribute": "", "AiTargetLockingTime": 0.4, - "AiBulletSpeedScale": 0.7, + "AiBulletSpeedScale": 0.6, "AiAmmoConsumptionProbability": 0 }, { @@ -256,7 +272,7 @@ "WeightType": 1, "ContinuousShoot": false, "AmmoCapacity": 12, - "MaxAmmoCapacity": 72, + "MaxAmmoCapacity": 84, "StandbyAmmoCapacity": 72, "ReloadTime": 1.5, "AloneReload": false, @@ -281,8 +297,6 @@ "ScatteringRangeAddValue": 8, "ScatteringRangeBackSpeed": 40, "ScatteringRangeBackDelayTime": 0.5, - "MinDistance": 250, - "MaxDistance": 300, "MinBacklash": 3, "MaxBacklash": 5, "BacklashRegressionSpeed": 35, @@ -290,17 +304,23 @@ "DefaultAngle": 0, "UpliftAngleRestore": 1, "BulletId": "bullet0001", + "BulletMinDeviationAngle": 0, + "BulletMaxDeviationAngle": 0, + "BulletMaxSpeed": 350, + "BulletMinSpeed": 350, + "BulletMinDistance": 250, + "BulletMaxDistance": 300, "ThrowCollisionSize": { "X": 20, "Y": 15 }, - "__ShootSound": "shooting0001", + "__ShootSound": "shooting0004", "__BeginReloadSound": "reloading0001", - "BeginReloadSoundDelayTime": 0.3, + "BeginReloadSoundDelayTime": 0, "__ReloadSound": "", "ReloadSoundDelayTime": 0, - "__ReloadFinishSound": "", - "ReloadFinishSoundAdvanceTime": 0, + "__ReloadFinishSound": "equip0015", + "ReloadFinishSoundAdvanceTime": 0.43, "__EquipSound": "", "EquipSoundDelayTime": 0, "__OtherSoundMap": null, @@ -318,7 +338,7 @@ "WeightType": 1, "ContinuousShoot": false, "AmmoCapacity": 12, - "MaxAmmoCapacity": 72, + "MaxAmmoCapacity": 84, "StandbyAmmoCapacity": 72, "ReloadTime": 1.5, "AloneReload": false, @@ -343,8 +363,6 @@ "ScatteringRangeAddValue": 8, "ScatteringRangeBackSpeed": 40, "ScatteringRangeBackDelayTime": 0.5, - "MinDistance": 250, - "MaxDistance": 300, "MinBacklash": 3, "MaxBacklash": 5, "BacklashRegressionSpeed": 35, @@ -352,23 +370,29 @@ "DefaultAngle": 0, "UpliftAngleRestore": 1, "BulletId": "bullet0001", + "BulletMinDeviationAngle": 0, + "BulletMaxDeviationAngle": 0, + "BulletMaxSpeed": 350, + "BulletMinSpeed": 350, + "BulletMinDistance": 250, + "BulletMaxDistance": 300, "ThrowCollisionSize": { "X": 20, "Y": 15 }, - "__ShootSound": "shooting0001", + "__ShootSound": "shooting0004", "__BeginReloadSound": "reloading0001", - "BeginReloadSoundDelayTime": 0.3, + "BeginReloadSoundDelayTime": 0, "__ReloadSound": "", "ReloadSoundDelayTime": 0, - "__ReloadFinishSound": "", - "ReloadFinishSoundAdvanceTime": 0, + "__ReloadFinishSound": "equip0015", + "ReloadFinishSoundAdvanceTime": 0.43, "__EquipSound": "", "EquipSoundDelayTime": 0, "__OtherSoundMap": null, "__AiUseAttribute": "", "AiTargetLockingTime": 1, - "AiBulletSpeedScale": 0.7, + "AiBulletSpeedScale": 0.6, "AiAmmoConsumptionProbability": 0 }, { @@ -405,8 +429,6 @@ "ScatteringRangeAddValue": 0, "ScatteringRangeBackSpeed": 0, "ScatteringRangeBackDelayTime": 0, - "MinDistance": 35, - "MaxDistance": 35, "MinBacklash": -8, "MaxBacklash": -8, "BacklashRegressionSpeed": 24, @@ -414,6 +436,12 @@ "DefaultAngle": 0, "UpliftAngleRestore": 1, "BulletId": "bullet0001", + "BulletMinDeviationAngle": 0, + "BulletMaxDeviationAngle": 0, + "BulletMaxSpeed": 350, + "BulletMinSpeed": 350, + "BulletMinDistance": 35, + "BulletMaxDistance": 35, "ThrowCollisionSize": { "X": 20, "Y": 15 @@ -467,8 +495,6 @@ "ScatteringRangeAddValue": 0, "ScatteringRangeBackSpeed": 0, "ScatteringRangeBackDelayTime": 0, - "MinDistance": 35, - "MaxDistance": 35, "MinBacklash": -8, "MaxBacklash": -8, "BacklashRegressionSpeed": 24, @@ -476,6 +502,12 @@ "DefaultAngle": 0, "UpliftAngleRestore": 1, "BulletId": "bullet0001", + "BulletMinDeviationAngle": 0, + "BulletMaxDeviationAngle": 0, + "BulletMaxSpeed": 350, + "BulletMinSpeed": 350, + "BulletMinDistance": 35, + "BulletMaxDistance": 35, "ThrowCollisionSize": { "X": 20, "Y": 15 @@ -492,7 +524,7 @@ "__OtherSoundMap": null, "__AiUseAttribute": "", "AiTargetLockingTime": 0.7, - "AiBulletSpeedScale": 0.7, + "AiBulletSpeedScale": 0.6, "AiAmmoConsumptionProbability": 0 }, { @@ -504,7 +536,7 @@ "WeightType": 2, "ContinuousShoot": false, "AmmoCapacity": 10, - "MaxAmmoCapacity": 40, + "MaxAmmoCapacity": 50, "StandbyAmmoCapacity": 40, "ReloadTime": 2.5, "AloneReload": false, @@ -529,32 +561,102 @@ "ScatteringRangeAddValue": 40, "ScatteringRangeBackSpeed": 40, "ScatteringRangeBackDelayTime": 0.8, - "MinDistance": 700, - "MaxDistance": 900, "MinBacklash": 5, "MaxBacklash": 7, "BacklashRegressionSpeed": 20, - "UpliftAngle": 20, + "UpliftAngle": 15, "DefaultAngle": 0, - "UpliftAngleRestore": 3, + "UpliftAngleRestore": 4, "BulletId": "bullet0001", + "BulletMinDeviationAngle": 0, + "BulletMaxDeviationAngle": 0, + "BulletMaxSpeed": 600, + "BulletMinSpeed": 600, + "BulletMinDistance": 700, + "BulletMaxDistance": 900, "ThrowCollisionSize": { "X": 20, "Y": 15 }, - "__ShootSound": "shooting0003", - "__BeginReloadSound": "", - "BeginReloadSoundDelayTime": 0, + "__ShootSound": "shooting0008", + "__BeginReloadSound": "reloadBegin0009", + "BeginReloadSoundDelayTime": 0.3, "__ReloadSound": "", - "ReloadSoundDelayTime": 1.2, - "__ReloadFinishSound": "", - "ReloadFinishSoundAdvanceTime": 0, - "__EquipSound": "", - "EquipSoundDelayTime": 0.7, + "ReloadSoundDelayTime": 0, + "__ReloadFinishSound": "equip0007", + "ReloadFinishSoundAdvanceTime": 1, + "__EquipSound": "equip0007", + "EquipSoundDelayTime": 0.5, "__OtherSoundMap": null, "__AiUseAttribute": "", "AiTargetLockingTime": 0.6, - "AiBulletSpeedScale": 0.7, + "AiBulletSpeedScale": 0.6, + "AiAmmoConsumptionProbability": 0 + }, + { + "Id": "0011", + "WeaponId": "weapon0006", + "Name": "\u51B2\u950B\u67AA", + "Icon": "res://resource/sprite/gun/gun4.png", + "Weight": 30, + "WeightType": 2, + "ContinuousShoot": true, + "AmmoCapacity": 20, + "MaxAmmoCapacity": 2600, + "StandbyAmmoCapacity": 2600, + "ReloadTime": 2.2, + "AloneReload": false, + "AloneReloadCount": 1, + "AloneReloadBeginIntervalTime": 0, + "AloneReloadFinishIntervalTime": 0, + "AloneReloadCanShoot": false, + "LooseShoot": false, + "MinChargeTime": 0, + "MinContinuousCount": 1, + "MaxContinuousCount": 1, + "TriggerInterval": 0, + "StartFiringSpeed": 700, + "FinalFiringSpeed": 700, + "FiringSpeedAddSpeed": 0, + "FiringSpeedBackSpeed": 0, + "MinFireBulletCount": 1, + "MaxFireBulletCount": 1, + "DelayedTime": 0, + "StartScatteringRange": 3, + "FinalScatteringRange": 40, + "ScatteringRangeAddValue": 2, + "ScatteringRangeBackSpeed": 40, + "ScatteringRangeBackDelayTime": 0.3, + "MinBacklash": 1, + "MaxBacklash": 2, + "BacklashRegressionSpeed": 35, + "UpliftAngle": 5, + "DefaultAngle": 0, + "UpliftAngleRestore": 1, + "BulletId": "bullet0002", + "BulletMinDeviationAngle": 0, + "BulletMaxDeviationAngle": 0, + "BulletMaxSpeed": 320, + "BulletMinSpeed": 320, + "BulletMinDistance": 300, + "BulletMaxDistance": 400, + "ThrowCollisionSize": { + "X": 20, + "Y": 15 + }, + "__ShootSound": "shooting0002", + "__BeginReloadSound": "reloadBegin0005", + "BeginReloadSoundDelayTime": 0.2, + "__ReloadSound": "", + "ReloadSoundDelayTime": 0, + "__ReloadFinishSound": "equip0016", + "ReloadFinishSoundAdvanceTime": 0.5, + "__EquipSound": "", + "EquipSoundDelayTime": 0, + "__OtherSoundMap": null, + "__AiUseAttribute": "", + "AiTargetLockingTime": 0.5, + "AiBulletSpeedScale": 0.6, "AiAmmoConsumptionProbability": 0 } ] \ No newline at end of file diff --git a/DungeonShooting_Godot/resource/map/tileMaps/testGroup/inlet/Room1.tscn b/DungeonShooting_Godot/resource/map/tileMaps/testGroup/inlet/Room1.tscn index 7d14d13..379a4bf 100644 --- a/DungeonShooting_Godot/resource/map/tileMaps/testGroup/inlet/Room1.tscn +++ b/DungeonShooting_Godot/resource/map/tileMaps/testGroup/inlet/Room1.tscn @@ -16,30 +16,37 @@ Type = 1 Altitude = 0 -[node name="ActivityMark" type="Node2D" parent="."] -position = Vector2(129, 22) +[node name="ActivityMark4" type="Node2D" parent="."] +position = Vector2(129, 68) +script = ExtResource("3_m4jrh") +Type = 5 +ItemExpression = "0002(CurrAmmon:0)" +WaveNumber = 2 + +[node name="ActivityMark5" type="Node2D" parent="."] +position = Vector2(128, 20) +script = ExtResource("3_m4jrh") +Type = 5 +ItemExpression = "0005" +WaveNumber = 2 + +[node name="ActivityMark6" type="Node2D" parent="."] +position = Vector2(31, 18) script = ExtResource("3_m4jrh") Type = 5 ItemExpression = "0001" WaveNumber = 2 -[node name="ActivityMark4" type="Node2D" parent="."] -position = Vector2(129, 68) +[node name="ActivityMark7" type="Node2D" parent="."] +position = Vector2(31, 72) script = ExtResource("3_m4jrh") Type = 5 -ItemExpression = "0002" +ItemExpression = "0003" WaveNumber = 2 -[node name="ActivityMark2" type="Node2D" parent="."] -position = Vector2(29, 75) +[node name="ActivityMark8" type="Node2D" parent="."] +position = Vector2(61, 62) script = ExtResource("3_m4jrh") Type = 5 -ItemExpression = "0003 -" -WaveNumber = 3 - -[node name="ActivityMark3" type="Node2D" parent="."] -position = Vector2(29, 22) -script = ExtResource("3_m4jrh") -Type = 5 -ItemExpression = "0005" +ItemExpression = "0006" +WaveNumber = 2 diff --git a/DungeonShooting_Godot/resource/material/Blend.gdshader b/DungeonShooting_Godot/resource/material/Blend.gdshader index 68a6001..fcc9b33 100644 --- a/DungeonShooting_Godot/resource/material/Blend.gdshader +++ b/DungeonShooting_Godot/resource/material/Blend.gdshader @@ -1,7 +1,7 @@ shader_type canvas_item; uniform vec4 blend : source_color = vec4(1.0, 1.0, 1.0, 1.0); -uniform float schedule = 1.0; +uniform float schedule = 0.0; void fragment() { vec4 textureColor = texture(TEXTURE, UV); diff --git a/DungeonShooting_Godot/resource/sound/sfx/Equip0001.ogg b/DungeonShooting_Godot/resource/sound/sfx/Equip0001.ogg deleted file mode 100644 index 5921758..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Equip0001.ogg +++ /dev/null Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/Equip0001.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/Equip0001.ogg.import deleted file mode 100644 index cb89324..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Equip0001.ogg.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="oggvorbisstr" -type="AudioStreamOggVorbis" -uid="uid://dip1xa8wpxdjo" -path="res://.godot/imported/Equip0001.ogg-0f060e55a565fb3d05f50f4d89e22394.oggvorbisstr" - -[deps] - -source_file="res://resource/sound/sfx/Equip0001.ogg" -dest_files=["res://.godot/imported/Equip0001.ogg-0f060e55a565fb3d05f50f4d89e22394.oggvorbisstr"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/Equip0002.ogg b/DungeonShooting_Godot/resource/sound/sfx/Equip0002.ogg deleted file mode 100644 index 69130e6..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Equip0002.ogg +++ /dev/null Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/Equip0002.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/Equip0002.ogg.import deleted file mode 100644 index cc0121d..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Equip0002.ogg.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="oggvorbisstr" -type="AudioStreamOggVorbis" -uid="uid://dkrjt31o0eucf" -path="res://.godot/imported/Equip0002.ogg-18b2612fbdcea05574238dd2355d78e7.oggvorbisstr" - -[deps] - -source_file="res://resource/sound/sfx/Equip0002.ogg" -dest_files=["res://.godot/imported/Equip0002.ogg-18b2612fbdcea05574238dd2355d78e7.oggvorbisstr"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/Equip0003.ogg b/DungeonShooting_Godot/resource/sound/sfx/Equip0003.ogg deleted file mode 100644 index 997de27..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Equip0003.ogg +++ /dev/null Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/Equip0003.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/Equip0003.ogg.import deleted file mode 100644 index b040c80..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Equip0003.ogg.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="oggvorbisstr" -type="AudioStreamOggVorbis" -uid="uid://djrsm2nwhxcug" -path="res://.godot/imported/Equip0003.ogg-dae81fb10e5b44c75fe894bbe95f75de.oggvorbisstr" - -[deps] - -source_file="res://resource/sound/sfx/Equip0003.ogg" -dest_files=["res://.godot/imported/Equip0003.ogg-dae81fb10e5b44c75fe894bbe95f75de.oggvorbisstr"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/Equip0004.ogg b/DungeonShooting_Godot/resource/sound/sfx/Equip0004.ogg deleted file mode 100644 index 5d48d01..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Equip0004.ogg +++ /dev/null Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/Equip0004.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/Equip0004.ogg.import deleted file mode 100644 index 353e29d..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Equip0004.ogg.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="oggvorbisstr" -type="AudioStreamOggVorbis" -uid="uid://lf1ylcyoem5j" -path="res://.godot/imported/Equip0004.ogg-bde6d107d90fe969a7d4debb6f1f4268.oggvorbisstr" - -[deps] - -source_file="res://resource/sound/sfx/Equip0004.ogg" -dest_files=["res://.godot/imported/Equip0004.ogg-bde6d107d90fe969a7d4debb6f1f4268.oggvorbisstr"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/Equip0005.ogg b/DungeonShooting_Godot/resource/sound/sfx/Equip0005.ogg deleted file mode 100644 index 8b80080..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Equip0005.ogg +++ /dev/null Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/Equip0005.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/Equip0005.ogg.import deleted file mode 100644 index d5f184e..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Equip0005.ogg.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="oggvorbisstr" -type="AudioStreamOggVorbis" -uid="uid://cthbancmpyj7" -path="res://.godot/imported/Equip0005.ogg-3ca997c2676e6c9bd4391911f7d5f68c.oggvorbisstr" - -[deps] - -source_file="res://resource/sound/sfx/Equip0005.ogg" -dest_files=["res://.godot/imported/Equip0005.ogg-3ca997c2676e6c9bd4391911f7d5f68c.oggvorbisstr"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/Equip0006.ogg b/DungeonShooting_Godot/resource/sound/sfx/Equip0006.ogg deleted file mode 100644 index d33e2b6..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Equip0006.ogg +++ /dev/null Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/Equip0006.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/Equip0006.ogg.import deleted file mode 100644 index f77a0ca..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Equip0006.ogg.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="oggvorbisstr" -type="AudioStreamOggVorbis" -uid="uid://b8md3alwndnnd" -path="res://.godot/imported/Equip0006.ogg-6694e0194fc473d2e74f0f21b8efe115.oggvorbisstr" - -[deps] - -source_file="res://resource/sound/sfx/Equip0006.ogg" -dest_files=["res://.godot/imported/Equip0006.ogg-6694e0194fc473d2e74f0f21b8efe115.oggvorbisstr"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/Explosion0001.ogg b/DungeonShooting_Godot/resource/sound/sfx/Explosion0001.ogg deleted file mode 100644 index 57a9ec2..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Explosion0001.ogg +++ /dev/null Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/Explosion0001.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/Explosion0001.ogg.import deleted file mode 100644 index 03200cf..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Explosion0001.ogg.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="oggvorbisstr" -type="AudioStreamOggVorbis" -uid="uid://dif1ehqqak60r" -path="res://.godot/imported/Explosion0001.ogg-3998886713ed22da0f09534afefebbf4.oggvorbisstr" - -[deps] - -source_file="res://resource/sound/sfx/Explosion0001.ogg" -dest_files=["res://.godot/imported/Explosion0001.ogg-3998886713ed22da0f09534afefebbf4.oggvorbisstr"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/Explosion0002.ogg b/DungeonShooting_Godot/resource/sound/sfx/Explosion0002.ogg deleted file mode 100644 index 31f8f34..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Explosion0002.ogg +++ /dev/null Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/Explosion0002.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/Explosion0002.ogg.import deleted file mode 100644 index 71af49d..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Explosion0002.ogg.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="oggvorbisstr" -type="AudioStreamOggVorbis" -uid="uid://bhesqipwmgvtg" -path="res://.godot/imported/Explosion0002.ogg-e3e0d2c66b67aa61f8a61877ec95b9be.oggvorbisstr" - -[deps] - -source_file="res://resource/sound/sfx/Explosion0002.ogg" -dest_files=["res://.godot/imported/Explosion0002.ogg-e3e0d2c66b67aa61f8a61877ec95b9be.oggvorbisstr"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/Explosion0003.ogg b/DungeonShooting_Godot/resource/sound/sfx/Explosion0003.ogg deleted file mode 100644 index 0edc916..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Explosion0003.ogg +++ /dev/null Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/Explosion0003.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/Explosion0003.ogg.import deleted file mode 100644 index 3429b65..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Explosion0003.ogg.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="oggvorbisstr" -type="AudioStreamOggVorbis" -uid="uid://dbnu0nwcie1oq" -path="res://.godot/imported/Explosion0003.ogg-2285833a7bd7d651bfa22c9d4e13ccc5.oggvorbisstr" - -[deps] - -source_file="res://resource/sound/sfx/Explosion0003.ogg" -dest_files=["res://.godot/imported/Explosion0003.ogg-2285833a7bd7d651bfa22c9d4e13ccc5.oggvorbisstr"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/Reloading0001.mp3 b/DungeonShooting_Godot/resource/sound/sfx/Reloading0001.mp3 deleted file mode 100644 index 586e772..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Reloading0001.mp3 +++ /dev/null Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/Reloading0001.mp3.import b/DungeonShooting_Godot/resource/sound/sfx/Reloading0001.mp3.import deleted file mode 100644 index 0a49000..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Reloading0001.mp3.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="mp3" -type="AudioStreamMP3" -uid="uid://cubladp3u8jbj" -path="res://.godot/imported/Reloading0001.mp3-e0aa400da581f2f6ebdc337714439d82.mp3str" - -[deps] - -source_file="res://resource/sound/sfx/Reloading0001.mp3" -dest_files=["res://.godot/imported/Reloading0001.mp3-e0aa400da581f2f6ebdc337714439d82.mp3str"] - -[params] - -loop=false -loop_offset=0.0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/Reloading0002.ogg b/DungeonShooting_Godot/resource/sound/sfx/Reloading0002.ogg deleted file mode 100644 index 6754397..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Reloading0002.ogg +++ /dev/null Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/Reloading0002.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/Reloading0002.ogg.import deleted file mode 100644 index 60bb83c..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Reloading0002.ogg.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="oggvorbisstr" -type="AudioStreamOggVorbis" -uid="uid://c107t2g7g38l" -path="res://.godot/imported/Reloading0002.ogg-1b8209757ee63ea95fa23f03c6f3caaa.oggvorbisstr" - -[deps] - -source_file="res://resource/sound/sfx/Reloading0002.ogg" -dest_files=["res://.godot/imported/Reloading0002.ogg-1b8209757ee63ea95fa23f03c6f3caaa.oggvorbisstr"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/Reloading_begin0001.ogg b/DungeonShooting_Godot/resource/sound/sfx/Reloading_begin0001.ogg deleted file mode 100644 index 801ab54..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Reloading_begin0001.ogg +++ /dev/null Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/Reloading_begin0001.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/Reloading_begin0001.ogg.import deleted file mode 100644 index 238d7bd..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Reloading_begin0001.ogg.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="oggvorbisstr" -type="AudioStreamOggVorbis" -uid="uid://hpyer4baoptl" -path="res://.godot/imported/Reloading_begin0001.ogg-b3c0c7d63c726e7dfdd556cc41bbecf1.oggvorbisstr" - -[deps] - -source_file="res://resource/sound/sfx/Reloading_begin0001.ogg" -dest_files=["res://.godot/imported/Reloading_begin0001.ogg-b3c0c7d63c726e7dfdd556cc41bbecf1.oggvorbisstr"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/Reloading_begin0002.ogg b/DungeonShooting_Godot/resource/sound/sfx/Reloading_begin0002.ogg deleted file mode 100644 index 4a62dd2..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Reloading_begin0002.ogg +++ /dev/null Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/Reloading_begin0002.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/Reloading_begin0002.ogg.import deleted file mode 100644 index 87870eb..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Reloading_begin0002.ogg.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="oggvorbisstr" -type="AudioStreamOggVorbis" -uid="uid://c6ab4vp7bexl7" -path="res://.godot/imported/Reloading_begin0002.ogg-4b4a29283a1ac5b7a0e46beefca82e64.oggvorbisstr" - -[deps] - -source_file="res://resource/sound/sfx/Reloading_begin0002.ogg" -dest_files=["res://.godot/imported/Reloading_begin0002.ogg-4b4a29283a1ac5b7a0e46beefca82e64.oggvorbisstr"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/Reloading_finish0001.ogg b/DungeonShooting_Godot/resource/sound/sfx/Reloading_finish0001.ogg deleted file mode 100644 index 7e149a1..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Reloading_finish0001.ogg +++ /dev/null Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/Reloading_finish0001.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/Reloading_finish0001.ogg.import deleted file mode 100644 index e31095e..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Reloading_finish0001.ogg.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="oggvorbisstr" -type="AudioStreamOggVorbis" -uid="uid://cxu23trqe00ij" -path="res://.godot/imported/Reloading_finish0001.ogg-def829198f233ebe6b00cfbc7e4625f7.oggvorbisstr" - -[deps] - -source_file="res://resource/sound/sfx/Reloading_finish0001.ogg" -dest_files=["res://.godot/imported/Reloading_finish0001.ogg-def829198f233ebe6b00cfbc7e4625f7.oggvorbisstr"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/Reloading_finish0002.ogg b/DungeonShooting_Godot/resource/sound/sfx/Reloading_finish0002.ogg deleted file mode 100644 index 21fb101..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Reloading_finish0002.ogg +++ /dev/null Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/Reloading_finish0002.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/Reloading_finish0002.ogg.import deleted file mode 100644 index 39e715a..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Reloading_finish0002.ogg.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="oggvorbisstr" -type="AudioStreamOggVorbis" -uid="uid://kcye7mqil5g" -path="res://.godot/imported/Reloading_finish0002.ogg-d313924afb2617cd2ca2a5073e102977.oggvorbisstr" - -[deps] - -source_file="res://resource/sound/sfx/Reloading_finish0002.ogg" -dest_files=["res://.godot/imported/Reloading_finish0002.ogg-d313924afb2617cd2ca2a5073e102977.oggvorbisstr"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/Shooting0001.ogg b/DungeonShooting_Godot/resource/sound/sfx/Shooting0001.ogg deleted file mode 100644 index dca1774..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Shooting0001.ogg +++ /dev/null Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/Shooting0001.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/Shooting0001.ogg.import deleted file mode 100644 index 56e3ced..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Shooting0001.ogg.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="oggvorbisstr" -type="AudioStreamOggVorbis" -uid="uid://bnrursvt8gg11" -path="res://.godot/imported/Shooting0001.ogg-8050fb383c434d15397f2869fd9b4603.oggvorbisstr" - -[deps] - -source_file="res://resource/sound/sfx/Shooting0001.ogg" -dest_files=["res://.godot/imported/Shooting0001.ogg-8050fb383c434d15397f2869fd9b4603.oggvorbisstr"] - -[params] - -loop=false -loop_offset=0.0 -bpm=0.0 -beat_count=0 -bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/Shooting0002.mp3 b/DungeonShooting_Godot/resource/sound/sfx/Shooting0002.mp3 deleted file mode 100644 index 09faa04..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Shooting0002.mp3 +++ /dev/null Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/Shooting0002.mp3.import b/DungeonShooting_Godot/resource/sound/sfx/Shooting0002.mp3.import deleted file mode 100644 index 862df18..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Shooting0002.mp3.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="mp3" -type="AudioStreamMP3" -uid="uid://ddie4d8go1t8g" -path="res://.godot/imported/Shooting0002.mp3-2e045b269e2ea080c15811bc4f51f16d.mp3str" - -[deps] - -source_file="res://resource/sound/sfx/Shooting0002.mp3" -dest_files=["res://.godot/imported/Shooting0002.mp3-2e045b269e2ea080c15811bc4f51f16d.mp3str"] - -[params] - -loop=false -loop_offset=0.0 -bpm=0.0 -beat_count=0 -bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/Shooting0003.mp3 b/DungeonShooting_Godot/resource/sound/sfx/Shooting0003.mp3 deleted file mode 100644 index 06b18e6..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Shooting0003.mp3 +++ /dev/null Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/Shooting0003.mp3.import b/DungeonShooting_Godot/resource/sound/sfx/Shooting0003.mp3.import deleted file mode 100644 index 490e5d3..0000000 --- a/DungeonShooting_Godot/resource/sound/sfx/Shooting0003.mp3.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="mp3" -type="AudioStreamMP3" -uid="uid://j6d3n7f5rf8e" -path="res://.godot/imported/Shooting0003.mp3-d85c5b09dcaf6f48682b5dc947b8fdd4.mp3str" - -[deps] - -source_file="res://resource/sound/sfx/Shooting0003.mp3" -dest_files=["res://.godot/imported/Shooting0003.mp3-d85c5b09dcaf6f48682b5dc947b8fdd4.mp3str"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0001.ogg b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0001.ogg new file mode 100644 index 0000000..5921758 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0001.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0001.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0001.ogg.import new file mode 100644 index 0000000..928b9c7 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0001.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://dip1xa8wpxdjo" +path="res://.godot/imported/Equip0001.ogg-ce76c2685b56ca81c64a249c091b676f.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/equip/Equip0001.ogg" +dest_files=["res://.godot/imported/Equip0001.ogg-ce76c2685b56ca81c64a249c091b676f.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0002.ogg b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0002.ogg new file mode 100644 index 0000000..69130e6 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0002.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0002.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0002.ogg.import new file mode 100644 index 0000000..25b9130 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0002.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://dkrjt31o0eucf" +path="res://.godot/imported/Equip0002.ogg-3affe904bd55131140861c56f81ffb69.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/equip/Equip0002.ogg" +dest_files=["res://.godot/imported/Equip0002.ogg-3affe904bd55131140861c56f81ffb69.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0003.ogg b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0003.ogg new file mode 100644 index 0000000..997de27 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0003.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0003.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0003.ogg.import new file mode 100644 index 0000000..07ab5c4 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0003.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://djrsm2nwhxcug" +path="res://.godot/imported/Equip0003.ogg-3b4a3d3213381cdf73dc7aef46753102.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/equip/Equip0003.ogg" +dest_files=["res://.godot/imported/Equip0003.ogg-3b4a3d3213381cdf73dc7aef46753102.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0004.ogg b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0004.ogg new file mode 100644 index 0000000..5d48d01 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0004.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0004.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0004.ogg.import new file mode 100644 index 0000000..502517f --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0004.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://lf1ylcyoem5j" +path="res://.godot/imported/Equip0004.ogg-5a399a5e1e60fa268b1938640db45ef5.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/equip/Equip0004.ogg" +dest_files=["res://.godot/imported/Equip0004.ogg-5a399a5e1e60fa268b1938640db45ef5.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0005.ogg b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0005.ogg new file mode 100644 index 0000000..8b80080 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0005.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0005.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0005.ogg.import new file mode 100644 index 0000000..bd4eef6 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0005.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://cthbancmpyj7" +path="res://.godot/imported/Equip0005.ogg-8817a0fa1fd401c9c0d472a9d6beb42a.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/equip/Equip0005.ogg" +dest_files=["res://.godot/imported/Equip0005.ogg-8817a0fa1fd401c9c0d472a9d6beb42a.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0006.ogg b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0006.ogg new file mode 100644 index 0000000..d33e2b6 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0006.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0006.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0006.ogg.import new file mode 100644 index 0000000..878e90d --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0006.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://b8md3alwndnnd" +path="res://.godot/imported/Equip0006.ogg-44403eb376aa14102739085a04ea347c.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/equip/Equip0006.ogg" +dest_files=["res://.godot/imported/Equip0006.ogg-44403eb376aa14102739085a04ea347c.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0007.ogg b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0007.ogg new file mode 100644 index 0000000..7e9fb5c --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0007.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0007.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0007.ogg.import new file mode 100644 index 0000000..1263481 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0007.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://b6tnjh0oopl72" +path="res://.godot/imported/Equip0007.ogg-493fa63577155645da0dec1fcb92abfd.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/equip/Equip0007.ogg" +dest_files=["res://.godot/imported/Equip0007.ogg-493fa63577155645da0dec1fcb92abfd.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0008.ogg b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0008.ogg new file mode 100644 index 0000000..946dbb9 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0008.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0008.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0008.ogg.import new file mode 100644 index 0000000..210a331 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0008.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://c75bbsct7ba2x" +path="res://.godot/imported/Equip0008.ogg-e295816880102ab69cc8358aa6afd48d.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/equip/Equip0008.ogg" +dest_files=["res://.godot/imported/Equip0008.ogg-e295816880102ab69cc8358aa6afd48d.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0009.ogg b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0009.ogg new file mode 100644 index 0000000..5ce800d --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0009.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0009.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0009.ogg.import new file mode 100644 index 0000000..2dd8440 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0009.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://dm5wxqo12bxml" +path="res://.godot/imported/Equip0009.ogg-c7f72aa52ad71fde004dd112cdf74ddf.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/equip/Equip0009.ogg" +dest_files=["res://.godot/imported/Equip0009.ogg-c7f72aa52ad71fde004dd112cdf74ddf.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0010.ogg b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0010.ogg new file mode 100644 index 0000000..6f5c2ab --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0010.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0010.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0010.ogg.import new file mode 100644 index 0000000..8325eb0 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0010.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://c1qs6eghrnns0" +path="res://.godot/imported/Equip0010.ogg-1c2884443139ff20df30370181107612.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/equip/Equip0010.ogg" +dest_files=["res://.godot/imported/Equip0010.ogg-1c2884443139ff20df30370181107612.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0011.ogg b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0011.ogg new file mode 100644 index 0000000..7d22ebb --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0011.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0011.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0011.ogg.import new file mode 100644 index 0000000..f222a80 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0011.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://cdaw7ubg43yq4" +path="res://.godot/imported/Equip0011.ogg-836b37d079b40d32ddef1ca1b4449399.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/equip/Equip0011.ogg" +dest_files=["res://.godot/imported/Equip0011.ogg-836b37d079b40d32ddef1ca1b4449399.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0012.ogg b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0012.ogg new file mode 100644 index 0000000..3fa5bd9 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0012.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0012.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0012.ogg.import new file mode 100644 index 0000000..be6d010 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0012.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://d10jiojh35j72" +path="res://.godot/imported/Equip0012.ogg-7946a787c8709277f5993a50699304fe.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/equip/Equip0012.ogg" +dest_files=["res://.godot/imported/Equip0012.ogg-7946a787c8709277f5993a50699304fe.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0013.ogg b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0013.ogg new file mode 100644 index 0000000..cf52506 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0013.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0013.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0013.ogg.import new file mode 100644 index 0000000..0c86295 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0013.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://bwh74gdjikflw" +path="res://.godot/imported/Equip0013.ogg-731f9499790489e4de06466a632e81b6.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/equip/Equip0013.ogg" +dest_files=["res://.godot/imported/Equip0013.ogg-731f9499790489e4de06466a632e81b6.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0014.ogg b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0014.ogg new file mode 100644 index 0000000..867acdf --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0014.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0014.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0014.ogg.import new file mode 100644 index 0000000..e36585b --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0014.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://cys7pyrn1ymtk" +path="res://.godot/imported/Equip0014.ogg-adda0907dd891c1b7dba47fb2e7ebcbf.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/equip/Equip0014.ogg" +dest_files=["res://.godot/imported/Equip0014.ogg-adda0907dd891c1b7dba47fb2e7ebcbf.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0015.ogg b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0015.ogg new file mode 100644 index 0000000..a037fbd --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0015.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0015.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0015.ogg.import new file mode 100644 index 0000000..5b16332 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0015.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://b4w0okt3ajiqk" +path="res://.godot/imported/Equip0015.ogg-60c78f2d270234a19bd53c4e83d20957.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/equip/Equip0015.ogg" +dest_files=["res://.godot/imported/Equip0015.ogg-60c78f2d270234a19bd53c4e83d20957.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0016.ogg b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0016.ogg new file mode 100644 index 0000000..ba60496 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0016.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0016.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0016.ogg.import new file mode 100644 index 0000000..4364c9e --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/equip/Equip0016.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://xomfara07whg" +path="res://.godot/imported/Equip0016.ogg-d42ff1d28121c9f7725960dffc932a7c.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/equip/Equip0016.ogg" +dest_files=["res://.godot/imported/Equip0016.ogg-d42ff1d28121c9f7725960dffc932a7c.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/explosion/Explosion0001.ogg b/DungeonShooting_Godot/resource/sound/sfx/explosion/Explosion0001.ogg new file mode 100644 index 0000000..57a9ec2 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/explosion/Explosion0001.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/explosion/Explosion0001.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/explosion/Explosion0001.ogg.import new file mode 100644 index 0000000..d32644d --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/explosion/Explosion0001.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://dif1ehqqak60r" +path="res://.godot/imported/Explosion0001.ogg-75b37db224614a88db3ab6bbe0de4b40.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/explosion/Explosion0001.ogg" +dest_files=["res://.godot/imported/Explosion0001.ogg-75b37db224614a88db3ab6bbe0de4b40.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/explosion/Explosion0002.ogg b/DungeonShooting_Godot/resource/sound/sfx/explosion/Explosion0002.ogg new file mode 100644 index 0000000..31f8f34 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/explosion/Explosion0002.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/explosion/Explosion0002.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/explosion/Explosion0002.ogg.import new file mode 100644 index 0000000..74ebabc --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/explosion/Explosion0002.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://bhesqipwmgvtg" +path="res://.godot/imported/Explosion0002.ogg-37946637c531d55cd0cdf3dafcfadffb.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/explosion/Explosion0002.ogg" +dest_files=["res://.godot/imported/Explosion0002.ogg-37946637c531d55cd0cdf3dafcfadffb.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/explosion/Explosion0003.ogg b/DungeonShooting_Godot/resource/sound/sfx/explosion/Explosion0003.ogg new file mode 100644 index 0000000..0edc916 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/explosion/Explosion0003.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/explosion/Explosion0003.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/explosion/Explosion0003.ogg.import new file mode 100644 index 0000000..39b9800 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/explosion/Explosion0003.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://dbnu0nwcie1oq" +path="res://.godot/imported/Explosion0003.ogg-711ba854b1e3e1c3163b5a877ffaeecb.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/explosion/Explosion0003.ogg" +dest_files=["res://.godot/imported/Explosion0003.ogg-711ba854b1e3e1c3163b5a877ffaeecb.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading0001.ogg b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading0001.ogg new file mode 100644 index 0000000..8a56055 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading0001.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading0001.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading0001.ogg.import new file mode 100644 index 0000000..b9c5e0f --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading0001.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://0gf8skv6ao5g" +path="res://.godot/imported/Reloading0001.ogg-ba25b71afc2f988f875434a976b0e46e.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/reloading/Reloading0001.ogg" +dest_files=["res://.godot/imported/Reloading0001.ogg-ba25b71afc2f988f875434a976b0e46e.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading0002.ogg b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading0002.ogg new file mode 100644 index 0000000..6754397 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading0002.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading0002.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading0002.ogg.import new file mode 100644 index 0000000..7be4afc --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading0002.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://c107t2g7g38l" +path="res://.godot/imported/Reloading0002.ogg-f101e4f5a3284c70ec188b87237ca223.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/reloading/Reloading0002.ogg" +dest_files=["res://.godot/imported/Reloading0002.ogg-f101e4f5a3284c70ec188b87237ca223.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0001.ogg b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0001.ogg new file mode 100644 index 0000000..801ab54 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0001.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0001.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0001.ogg.import new file mode 100644 index 0000000..cdb933e --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0001.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://hpyer4baoptl" +path="res://.godot/imported/Reloading_begin0001.ogg-4a87932ddb6208342cd3d174f9087100.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/reloading/Reloading_begin0001.ogg" +dest_files=["res://.godot/imported/Reloading_begin0001.ogg-4a87932ddb6208342cd3d174f9087100.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0002.ogg b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0002.ogg new file mode 100644 index 0000000..4a62dd2 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0002.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0002.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0002.ogg.import new file mode 100644 index 0000000..c21865e --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0002.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://c6ab4vp7bexl7" +path="res://.godot/imported/Reloading_begin0002.ogg-b1869372a6115e778e70d48ef2e6210c.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/reloading/Reloading_begin0002.ogg" +dest_files=["res://.godot/imported/Reloading_begin0002.ogg-b1869372a6115e778e70d48ef2e6210c.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0003.ogg b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0003.ogg new file mode 100644 index 0000000..b68f50f --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0003.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0003.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0003.ogg.import new file mode 100644 index 0000000..8876e76 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0003.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://c0i4ekhyiwdqo" +path="res://.godot/imported/Reloading_begin0003.ogg-676b8ab332df4132a2c6e6de1b829044.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/reloading/Reloading_begin0003.ogg" +dest_files=["res://.godot/imported/Reloading_begin0003.ogg-676b8ab332df4132a2c6e6de1b829044.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0004.ogg b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0004.ogg new file mode 100644 index 0000000..4798986 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0004.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0004.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0004.ogg.import new file mode 100644 index 0000000..e856bfe --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0004.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://cgi5qbivmjc4b" +path="res://.godot/imported/Reloading_begin0004.ogg-096921d68d6fcc26a9602586d5beae37.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/reloading/Reloading_begin0004.ogg" +dest_files=["res://.godot/imported/Reloading_begin0004.ogg-096921d68d6fcc26a9602586d5beae37.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0005.ogg b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0005.ogg new file mode 100644 index 0000000..9fce25b --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0005.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0005.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0005.ogg.import new file mode 100644 index 0000000..c190c4c --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0005.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://b17duru6uydli" +path="res://.godot/imported/Reloading_begin0005.ogg-0f3cd1ba06eff8a1511f5d67e1f17b92.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/reloading/Reloading_begin0005.ogg" +dest_files=["res://.godot/imported/Reloading_begin0005.ogg-0f3cd1ba06eff8a1511f5d67e1f17b92.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0006.ogg b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0006.ogg new file mode 100644 index 0000000..afa868a --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0006.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0006.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0006.ogg.import new file mode 100644 index 0000000..a6981c3 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0006.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://bl2djmpr5xbiq" +path="res://.godot/imported/Reloading_begin0006.ogg-d58c4e94024cf584be6b054e8b267e66.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/reloading/Reloading_begin0006.ogg" +dest_files=["res://.godot/imported/Reloading_begin0006.ogg-d58c4e94024cf584be6b054e8b267e66.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0007.ogg b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0007.ogg new file mode 100644 index 0000000..096bef6 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0007.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0007.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0007.ogg.import new file mode 100644 index 0000000..49f2916 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0007.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://dnvvvpf158i0r" +path="res://.godot/imported/Reloading_begin0007.ogg-d9a0dbc9a40b125a168bb8e55b9ab66e.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/reloading/Reloading_begin0007.ogg" +dest_files=["res://.godot/imported/Reloading_begin0007.ogg-d9a0dbc9a40b125a168bb8e55b9ab66e.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0008.ogg b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0008.ogg new file mode 100644 index 0000000..83ed9ba --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0008.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0008.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0008.ogg.import new file mode 100644 index 0000000..56ea2bc --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0008.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://ns5o8yfbcfgb" +path="res://.godot/imported/Reloading_begin0008.ogg-cf6d6dc0d7d6a0e2448bfd27499b3f31.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/reloading/Reloading_begin0008.ogg" +dest_files=["res://.godot/imported/Reloading_begin0008.ogg-cf6d6dc0d7d6a0e2448bfd27499b3f31.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0009.ogg b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0009.ogg new file mode 100644 index 0000000..d089083 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0009.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0009.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0009.ogg.import new file mode 100644 index 0000000..d3a62f5 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_begin0009.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://dt8r1l1jhtawx" +path="res://.godot/imported/Reloading_begin0009.ogg-97c623025a40cf2ddf18fdc13bbf30bb.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/reloading/Reloading_begin0009.ogg" +dest_files=["res://.godot/imported/Reloading_begin0009.ogg-97c623025a40cf2ddf18fdc13bbf30bb.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_finish0001.ogg b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_finish0001.ogg new file mode 100644 index 0000000..7e149a1 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_finish0001.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_finish0001.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_finish0001.ogg.import new file mode 100644 index 0000000..70f8f4e --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_finish0001.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://cxu23trqe00ij" +path="res://.godot/imported/Reloading_finish0001.ogg-30a0876675a294f872ede36c36d5165f.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/reloading/Reloading_finish0001.ogg" +dest_files=["res://.godot/imported/Reloading_finish0001.ogg-30a0876675a294f872ede36c36d5165f.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_finish0002.ogg b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_finish0002.ogg new file mode 100644 index 0000000..21fb101 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_finish0002.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_finish0002.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_finish0002.ogg.import new file mode 100644 index 0000000..32edafd --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/reloading/Reloading_finish0002.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://kcye7mqil5g" +path="res://.godot/imported/Reloading_finish0002.ogg-473164f721380a6deb929922b9e8f6fb.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/reloading/Reloading_finish0002.ogg" +dest_files=["res://.godot/imported/Reloading_finish0002.ogg-473164f721380a6deb929922b9e8f6fb.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0001.ogg b/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0001.ogg new file mode 100644 index 0000000..dca1774 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0001.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0001.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0001.ogg.import new file mode 100644 index 0000000..eaeaab6 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0001.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://bnrursvt8gg11" +path="res://.godot/imported/Shooting0001.ogg-fe99359e797391d8099b19f754bd13c5.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/shooting/Shooting0001.ogg" +dest_files=["res://.godot/imported/Shooting0001.ogg-fe99359e797391d8099b19f754bd13c5.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0.0 +bpm=0.0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0002.ogg b/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0002.ogg new file mode 100644 index 0000000..08f2a66 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0002.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0002.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0002.ogg.import new file mode 100644 index 0000000..1cab5c6 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0002.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://bqwqefkyfws7g" +path="res://.godot/imported/Shooting0002.ogg-37d924602721e47c4fdd8c3d6b6d89dc.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/shooting/Shooting0002.ogg" +dest_files=["res://.godot/imported/Shooting0002.ogg-37d924602721e47c4fdd8c3d6b6d89dc.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0003.ogg b/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0003.ogg new file mode 100644 index 0000000..4db723a --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0003.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0003.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0003.ogg.import new file mode 100644 index 0000000..54b9b46 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0003.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://co0fe6h087gnw" +path="res://.godot/imported/Shooting0003.ogg-6bebf69ae85138e8f839645e901de476.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/shooting/Shooting0003.ogg" +dest_files=["res://.godot/imported/Shooting0003.ogg-6bebf69ae85138e8f839645e901de476.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0004.ogg b/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0004.ogg new file mode 100644 index 0000000..86f1215 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0004.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0004.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0004.ogg.import new file mode 100644 index 0000000..4b5ba68 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0004.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://xoqf41c0xklw" +path="res://.godot/imported/Shooting0004.ogg-87ef5a5d3343c4ac7cb3f8c5aab7af0b.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/shooting/Shooting0004.ogg" +dest_files=["res://.godot/imported/Shooting0004.ogg-87ef5a5d3343c4ac7cb3f8c5aab7af0b.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0005.ogg b/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0005.ogg new file mode 100644 index 0000000..24c0151 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0005.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0005.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0005.ogg.import new file mode 100644 index 0000000..0ab7bda --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0005.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://6l8c8bvb6mu7" +path="res://.godot/imported/Shooting0005.ogg-ff12f41eb25c90d1c935ba5005288858.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/shooting/Shooting0005.ogg" +dest_files=["res://.godot/imported/Shooting0005.ogg-ff12f41eb25c90d1c935ba5005288858.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0006.ogg b/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0006.ogg new file mode 100644 index 0000000..c1ece38 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0006.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0006.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0006.ogg.import new file mode 100644 index 0000000..9011116 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0006.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://co2d60k5us25p" +path="res://.godot/imported/Shooting0006.ogg-8fa4b65ad09c75b57b5b8812ac57cf26.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/shooting/Shooting0006.ogg" +dest_files=["res://.godot/imported/Shooting0006.ogg-8fa4b65ad09c75b57b5b8812ac57cf26.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0007.ogg b/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0007.ogg new file mode 100644 index 0000000..9c836fa --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0007.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0007.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0007.ogg.import new file mode 100644 index 0000000..6c84a25 --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0007.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://2uo8j3utb541" +path="res://.godot/imported/Shooting0007.ogg-cd074b539e950b5fa2282c98cb47eefd.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/shooting/Shooting0007.ogg" +dest_files=["res://.godot/imported/Shooting0007.ogg-cd074b539e950b5fa2282c98cb47eefd.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0008.ogg b/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0008.ogg new file mode 100644 index 0000000..2e2f36f --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0008.ogg Binary files differ diff --git a/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0008.ogg.import b/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0008.ogg.import new file mode 100644 index 0000000..8fd3efb --- /dev/null +++ b/DungeonShooting_Godot/resource/sound/sfx/shooting/Shooting0008.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://c2s4u2gja0bly" +path="res://.godot/imported/Shooting0008.ogg-5cf892fb27fd93f341d1ab1cb8e9b519.oggvorbisstr" + +[deps] + +source_file="res://resource/sound/sfx/shooting/Shooting0008.ogg" +dest_files=["res://.godot/imported/Shooting0008.ogg-5cf892fb27fd93f341d1ab1cb8e9b519.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/DungeonShooting_Godot/resource/sprite/shell/Shell0001.png b/DungeonShooting_Godot/resource/sprite/shell/Shell0001.png new file mode 100644 index 0000000..7a926c6 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/shell/Shell0001.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/shell/Shell0001.png.import b/DungeonShooting_Godot/resource/sprite/shell/Shell0001.png.import new file mode 100644 index 0000000..249fb0b --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/shell/Shell0001.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dto03bc2qbhnj" +path="res://.godot/imported/Shell0001.png-f6d706707815430fcb975fd0121be274.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/shell/Shell0001.png" +dest_files=["res://.godot/imported/Shell0001.png-f6d706707815430fcb975fd0121be274.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/shell/shellCase.png b/DungeonShooting_Godot/resource/sprite/shell/shellCase.png deleted file mode 100644 index 7a926c6..0000000 --- a/DungeonShooting_Godot/resource/sprite/shell/shellCase.png +++ /dev/null Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/shell/shellCase.png.import b/DungeonShooting_Godot/resource/sprite/shell/shellCase.png.import deleted file mode 100644 index 93bad38..0000000 --- a/DungeonShooting_Godot/resource/sprite/shell/shellCase.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dto03bc2qbhnj" -path="res://.godot/imported/shellCase.png-4975fbe4d212e558e86355116ac96ab2.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resource/sprite/shell/shellCase.png" -dest_files=["res://.godot/imported/shellCase.png-4975fbe4d212e558e86355116ac96ab2.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/weapon/weapon0006/Weapon0006.png b/DungeonShooting_Godot/resource/sprite/weapon/weapon0006/Weapon0006.png new file mode 100644 index 0000000..900b2e0 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/weapon/weapon0006/Weapon0006.png Binary files differ diff --git a/DungeonShooting_Godot/resource/sprite/weapon/weapon0006/Weapon0006.png.import b/DungeonShooting_Godot/resource/sprite/weapon/weapon0006/Weapon0006.png.import new file mode 100644 index 0000000..55f90d5 --- /dev/null +++ b/DungeonShooting_Godot/resource/sprite/weapon/weapon0006/Weapon0006.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dn0un05nr8xun" +path="res://.godot/imported/Weapon0006.png-2205b534edaf3418fbfc8ac8aa33267d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/sprite/weapon/weapon0006/Weapon0006.png" +dest_files=["res://.godot/imported/Weapon0006.png-2205b534edaf3418fbfc8ac8aa33267d.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/spriteFrames/Shell0001.tres b/DungeonShooting_Godot/resource/spriteFrames/Shell0001.tres index 5d2b5b6..6ab6b47 100644 --- a/DungeonShooting_Godot/resource/spriteFrames/Shell0001.tres +++ b/DungeonShooting_Godot/resource/spriteFrames/Shell0001.tres @@ -1,6 +1,6 @@ [gd_resource type="SpriteFrames" load_steps=2 format=3 uid="uid://b8gksxl7auquc"] -[ext_resource type="Texture2D" uid="uid://dto03bc2qbhnj" path="res://resource/sprite/shell/shellCase.png" id="1_4nusd"] +[ext_resource type="Texture2D" uid="uid://dto03bc2qbhnj" path="res://resource/sprite/shell/Shell0001.png" id="1_4nusd"] [resource] animations = [{ diff --git a/DungeonShooting_Godot/resource/spriteFrames/Weapon0006.tres b/DungeonShooting_Godot/resource/spriteFrames/Weapon0006.tres new file mode 100644 index 0000000..bfeb80a --- /dev/null +++ b/DungeonShooting_Godot/resource/spriteFrames/Weapon0006.tres @@ -0,0 +1,14 @@ +[gd_resource type="SpriteFrames" load_steps=2 format=3 uid="uid://dx1mjbx4acs3q"] + +[ext_resource type="Texture2D" uid="uid://dn0un05nr8xun" path="res://resource/sprite/weapon/weapon0006/Weapon0006.png" id="1_di3kf"] + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": ExtResource("1_di3kf") +}], +"loop": true, +"name": &"default", +"speed": 5.0 +}] diff --git a/DungeonShooting_Godot/resource/theme/mainTheme.tres b/DungeonShooting_Godot/resource/theme/mainTheme.tres index 42c5113..c33db4e 100644 --- a/DungeonShooting_Godot/resource/theme/mainTheme.tres +++ b/DungeonShooting_Godot/resource/theme/mainTheme.tres @@ -352,7 +352,7 @@ [sub_resource type="ImageTexture" id="58"] -[sub_resource type="Image" id="Image_flhyv"] +[sub_resource type="Image" id="Image_ji00c"] data = { "data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 1, 255, 255, 255, 39, 255, 255, 255, 67, 255, 255, 255, 67, 255, 255, 255, 39, 255, 255, 255, 1, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 39, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 39, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 66, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 66, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 66, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 66, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 39, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 39, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 1, 255, 255, 255, 39, 255, 255, 255, 67, 255, 255, 255, 67, 255, 255, 255, 39, 255, 255, 255, 1, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), "format": "RGBA8", @@ -362,7 +362,7 @@ } [sub_resource type="ImageTexture" id="60"] -image = SubResource("Image_flhyv") +image = SubResource("Image_ji00c") [sub_resource type="StyleBoxTexture" id="61"] content_margin_left = 2.0 @@ -372,7 +372,7 @@ texture = SubResource("60") region_rect = Rect2(0, 0, 12, 12) -[sub_resource type="Image" id="Image_raohe"] +[sub_resource type="Image" id="Image_g5vbn"] data = { "data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 0, 247, 247, 247, 0, 248, 248, 248, 0, 248, 248, 248, 0, 247, 247, 247, 0, 191, 191, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 0, 191, 191, 191, 4, 247, 247, 247, 98, 248, 248, 248, 167, 248, 248, 248, 167, 247, 247, 247, 98, 191, 191, 191, 4, 191, 191, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 247, 247, 247, 0, 247, 247, 247, 97, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 247, 247, 247, 97, 247, 247, 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 248, 248, 0, 248, 248, 248, 164, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 164, 248, 248, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 248, 248, 0, 248, 248, 248, 164, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 164, 248, 248, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 247, 247, 247, 0, 247, 247, 247, 97, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 247, 247, 247, 97, 247, 247, 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 0, 191, 191, 191, 4, 247, 247, 247, 98, 248, 248, 248, 167, 248, 248, 248, 167, 247, 247, 247, 98, 191, 191, 191, 4, 191, 191, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 0, 247, 247, 247, 0, 248, 248, 248, 0, 248, 248, 248, 0, 247, 247, 247, 0, 191, 191, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), "format": "RGBA8", @@ -382,7 +382,7 @@ } [sub_resource type="ImageTexture" id="63"] -image = SubResource("Image_raohe") +image = SubResource("Image_g5vbn") [sub_resource type="StyleBoxTexture" id="64"] content_margin_left = 2.0 @@ -392,7 +392,7 @@ texture = SubResource("63") region_rect = Rect2(0, 0, 12, 12) -[sub_resource type="Image" id="Image_ccid8"] +[sub_resource type="Image" id="Image_1firp"] data = { "data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 127, 0, 173, 173, 173, 0, 173, 173, 173, 0, 173, 173, 173, 0, 173, 173, 173, 0, 127, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 127, 0, 127, 127, 127, 4, 173, 173, 173, 97, 173, 173, 173, 166, 173, 173, 173, 166, 173, 173, 173, 97, 127, 127, 127, 4, 127, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 172, 172, 0, 172, 172, 172, 96, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 172, 172, 172, 96, 172, 172, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 173, 173, 0, 173, 173, 173, 163, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 163, 173, 173, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 173, 173, 0, 173, 173, 173, 163, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 163, 173, 173, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 172, 172, 0, 172, 172, 172, 96, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 172, 172, 172, 96, 172, 172, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 127, 0, 127, 127, 127, 4, 173, 173, 173, 97, 173, 173, 173, 166, 173, 173, 173, 166, 173, 173, 173, 97, 127, 127, 127, 4, 127, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 127, 0, 173, 173, 173, 0, 173, 173, 173, 0, 173, 173, 173, 0, 173, 173, 173, 0, 127, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), "format": "RGBA8", @@ -402,7 +402,7 @@ } [sub_resource type="ImageTexture" id="66"] -image = SubResource("Image_ccid8") +image = SubResource("Image_1firp") [sub_resource type="StyleBoxTexture" id="67"] content_margin_left = 2.0 @@ -412,7 +412,7 @@ texture = SubResource("66") region_rect = Rect2(0, 0, 12, 12) -[sub_resource type="Image" id="Image_vvate"] +[sub_resource type="Image" id="Image_8rrrg"] data = { "data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 4, 255, 255, 255, 16, 255, 255, 255, 16, 255, 255, 255, 4, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 16, 255, 255, 255, 21, 255, 255, 255, 21, 255, 255, 255, 16, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 16, 255, 255, 255, 21, 255, 255, 255, 21, 255, 255, 255, 16, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 4, 255, 255, 255, 16, 255, 255, 255, 16, 255, 255, 255, 4, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), "format": "RGBA8", @@ -422,7 +422,7 @@ } [sub_resource type="ImageTexture" id="69"] -image = SubResource("Image_vvate") +image = SubResource("Image_8rrrg") [sub_resource type="StyleBoxTexture" id="70"] content_margin_left = 0.0 @@ -446,7 +446,7 @@ content_margin_right = 4.0 content_margin_bottom = 4.0 -[sub_resource type="Image" id="Image_pxi6j"] +[sub_resource type="Image" id="Image_inqjn"] data = { "data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 76, 255, 255, 255, 17, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 76, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 76, 255, 255, 255, 228, 255, 255, 255, 188, 255, 255, 255, 17, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 188, 255, 255, 255, 228, 255, 255, 255, 76, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 18, 255, 255, 255, 188, 255, 255, 255, 229, 255, 255, 255, 187, 255, 255, 255, 17, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 187, 255, 255, 255, 229, 255, 255, 255, 188, 255, 255, 255, 18, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 19, 255, 255, 255, 188, 255, 255, 255, 229, 255, 255, 255, 185, 255, 255, 255, 17, 255, 255, 255, 17, 255, 255, 255, 186, 255, 255, 255, 229, 255, 255, 255, 188, 255, 255, 255, 19, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 19, 255, 255, 255, 190, 255, 255, 255, 229, 255, 255, 255, 185, 255, 255, 255, 185, 255, 255, 255, 229, 255, 255, 255, 189, 255, 255, 255, 19, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 19, 255, 255, 255, 191, 255, 255, 255, 229, 255, 255, 255, 229, 255, 255, 255, 190, 255, 255, 255, 19, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 188, 255, 255, 255, 229, 255, 255, 255, 229, 255, 255, 255, 188, 255, 255, 255, 17, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 188, 255, 255, 255, 229, 255, 255, 255, 188, 255, 255, 255, 188, 255, 255, 255, 229, 255, 255, 255, 187, 255, 255, 255, 17, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 187, 255, 255, 255, 229, 255, 255, 255, 188, 255, 255, 255, 18, 255, 255, 255, 19, 255, 255, 255, 188, 255, 255, 255, 229, 255, 255, 255, 186, 255, 255, 255, 17, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 185, 255, 255, 255, 229, 255, 255, 255, 189, 255, 255, 255, 19, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 19, 255, 255, 255, 189, 255, 255, 255, 229, 255, 255, 255, 185, 255, 255, 255, 17, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 76, 255, 255, 255, 229, 255, 255, 255, 190, 255, 255, 255, 19, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 19, 255, 255, 255, 190, 255, 255, 255, 229, 255, 255, 255, 76, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 77, 255, 255, 255, 19, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 19, 255, 255, 255, 77, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), "format": "RGBA8", @@ -456,7 +456,7 @@ } [sub_resource type="ImageTexture" id="56"] -image = SubResource("Image_pxi6j") +image = SubResource("Image_inqjn") [sub_resource type="StyleBoxFlat" id="57"] content_margin_left = 6.0 diff --git a/DungeonShooting_Godot/scene/World.tscn b/DungeonShooting_Godot/scene/World.tscn index 6c182e2..6c3084b 100644 --- a/DungeonShooting_Godot/scene/World.tscn +++ b/DungeonShooting_Godot/scene/World.tscn @@ -8,11 +8,13 @@ glow_enabled = true glow_intensity = 4.74 -[node name="World" type="Node2D" node_paths=PackedStringArray("NormalLayer", "YSortLayer", "TileRoot")] +[node name="World" type="Node2D" node_paths=PackedStringArray("NormalLayer", "YSortLayer", "TileRoot", "StaticSpriteRoot", "AffiliationAreaRoot")] script = ExtResource("1_kt3mm") NormalLayer = NodePath("NormalLayer") YSortLayer = NodePath("YSortLayer") TileRoot = NodePath("TileRoot") +StaticSpriteRoot = NodePath("StaticSpriteRoot") +AffiliationAreaRoot = NodePath("AffiliationAreaRoot") metadata/_edit_vertical_guides_ = [] [node name="WorldEnvironment" type="WorldEnvironment" parent="."] @@ -46,8 +48,13 @@ layer_3/z_index = -10 layer_3/tile_data = PackedInt32Array() +[node name="StaticSpriteRoot" type="Node2D" parent="."] +z_index = -2 + [node name="NormalLayer" type="Node2D" parent="."] z_index = -1 [node name="YSortLayer" type="Node2D" parent="."] y_sort_enabled = true + +[node name="AffiliationAreaRoot" type="Node2D" parent="."] diff --git a/DungeonShooting_Godot/scene/test/TestOptimizeSprite.tscn b/DungeonShooting_Godot/scene/test/TestOptimizeSprite.tscn new file mode 100644 index 0000000..e13f283 --- /dev/null +++ b/DungeonShooting_Godot/scene/test/TestOptimizeSprite.tscn @@ -0,0 +1,34 @@ +[gd_scene load_steps=11 format=3 uid="uid://crwmgbequhxf3"] + +[ext_resource type="Script" path="res://src/test/TestOptimizeSprite.cs" id="1_rwuav"] +[ext_resource type="Texture2D" uid="uid://civvcowt2wklr" path="res://resource/sprite/weapon/weapon0001/Weapon0001.png" id="2_qvs0g"] +[ext_resource type="Texture2D" uid="uid://b53kofmyan42g" path="res://resource/sprite/weapon/weapon0002/Weapon0002.png" id="3_jejmg"] +[ext_resource type="Texture2D" uid="uid://clgf63extg800" path="res://resource/sprite/weapon/weapon0003/Weapon0003.png" id="4_twsss"] +[ext_resource type="Texture2D" uid="uid://504f1r0mi33n" path="res://resource/sprite/weapon/weapon0005/Weapon0005.png" id="5_bdcjp"] +[ext_resource type="Texture2D" uid="uid://dn0un05nr8xun" path="res://resource/sprite/weapon/weapon0006/Weapon0006.png" id="6_sqcu7"] +[ext_resource type="Texture2D" uid="uid://bxhbsq0wb2yo1" path="res://resource/sprite/weapon/knife1.png" id="7_w4iwy"] +[ext_resource type="Texture2D" uid="uid://dto03bc2qbhnj" path="res://resource/sprite/shell/Shell0001.png" id="8_csd6d"] +[ext_resource type="Texture2D" uid="uid://yn8t7ovmt4gj" path="res://resource/sprite/weapon/gun1.png" id="9_mddgj"] +[ext_resource type="Texture2D" uid="uid://5geiuvv6hyov" path="res://resource/sprite/weapon/gun2.png" id="10_rxwsh"] + +[node name="TestOptimizeSprite" type="Node2D" node_paths=PackedStringArray("Label")] +script = ExtResource("1_rwuav") +ImageList = Array[Texture2D]([ExtResource("2_qvs0g"), ExtResource("8_csd6d"), ExtResource("3_jejmg"), ExtResource("4_twsss"), ExtResource("5_bdcjp"), ExtResource("6_sqcu7"), ExtResource("7_w4iwy"), ExtResource("9_mddgj"), ExtResource("10_rxwsh")]) +Label = NodePath("CanvasLayer/Panel/Label") + +[node name="CanvasLayer" type="CanvasLayer" parent="."] + +[node name="Panel" type="Panel" parent="CanvasLayer"] +offset_right = 439.0 +offset_bottom = 67.0 + +[node name="Label" type="Label" parent="CanvasLayer/Panel"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "当前绘制数量: 0" +horizontal_alignment = 1 +vertical_alignment = 1 diff --git a/DungeonShooting_Godot/scene/test/TestTileLayer.tscn b/DungeonShooting_Godot/scene/test/TestTileLayer.tscn index c9a97e3..f386634 100644 --- a/DungeonShooting_Godot/scene/test/TestTileLayer.tscn +++ b/DungeonShooting_Godot/scene/test/TestTileLayer.tscn @@ -3,7 +3,8 @@ [ext_resource type="Texture2D" uid="uid://dj8nrd5od4fcl" path="res://resource/sprite/map/map1/16x16 dungeon ii wall reconfig v04 spritesheet.png" id="1"] [ext_resource type="Texture2D" uid="uid://chd2vtesap5cf" path="res://resource/sprite/role/enemy0001/Enemy0001.png" id="2"] [ext_resource type="Texture2D" uid="uid://5geiuvv6hyov" path="res://resource/sprite/weapon/gun2.png" id="3"] -[ext_resource type="Texture2D" uid="uid://dto03bc2qbhnj" path="res://resource/sprite/shell/shellCase.png" id="4"] +[ext_resource type="Texture2D" uid="uid://dto03bc2qbhnj" path="res://resource/sprite/shell/Shell0001.png" id="4"] + [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_ch2b5"] diff --git a/DungeonShooting_Godot/src/config/ExcelConfig_Weapon.cs b/DungeonShooting_Godot/src/config/ExcelConfig_Weapon.cs index ac16ffc..acbe1e3 100644 --- a/DungeonShooting_Godot/src/config/ExcelConfig_Weapon.cs +++ b/DungeonShooting_Godot/src/config/ExcelConfig_Weapon.cs @@ -209,18 +209,6 @@ public float ScatteringRangeBackDelayTime; /// - /// 子弹飞行最小距离 - /// - [JsonInclude] - public float MinDistance; - - /// - /// 子弹飞行最大距离 - /// - [JsonInclude] - public float MaxDistance; - - /// /// 最小后坐力 (仅用于开火后武器身抖动) /// [JsonInclude] @@ -263,6 +251,43 @@ public string BulletId; /// + /// 子弹最小偏移角度
+ /// 用于设置子弹偏移朝向, 该属性和射半径效果类似, 但与其不同的是, 散射半径是用来控制枪口朝向的, 而该属性是控制子弹朝向的, 可用于制作霰弹枪子弹效果 + ///
+ [JsonInclude] + public float BulletMinDeviationAngle; + + /// + /// 子弹最大偏移角度 + /// + [JsonInclude] + public float BulletMaxDeviationAngle; + + /// + /// 子弹最大初速度 + /// + [JsonInclude] + public float BulletMaxSpeed; + + /// + /// 子弹最小初速度 + /// + [JsonInclude] + public float BulletMinSpeed; + + /// + /// 子弹飞行最小距离 + /// + [JsonInclude] + public float BulletMinDistance; + + /// + /// 子弹飞行最大距离 + /// + [JsonInclude] + public float BulletMaxDistance; + + /// /// 投抛状态下物体碰撞器大小 /// [JsonInclude] @@ -390,8 +415,6 @@ inst.ScatteringRangeAddValue = ScatteringRangeAddValue; inst.ScatteringRangeBackSpeed = ScatteringRangeBackSpeed; inst.ScatteringRangeBackDelayTime = ScatteringRangeBackDelayTime; - inst.MinDistance = MinDistance; - inst.MaxDistance = MaxDistance; inst.MinBacklash = MinBacklash; inst.MaxBacklash = MaxBacklash; inst.BacklashRegressionSpeed = BacklashRegressionSpeed; @@ -399,6 +422,12 @@ inst.DefaultAngle = DefaultAngle; inst.UpliftAngleRestore = UpliftAngleRestore; inst.BulletId = BulletId; + inst.BulletMinDeviationAngle = BulletMinDeviationAngle; + inst.BulletMaxDeviationAngle = BulletMaxDeviationAngle; + inst.BulletMaxSpeed = BulletMaxSpeed; + inst.BulletMinSpeed = BulletMinSpeed; + inst.BulletMinDistance = BulletMinDistance; + inst.BulletMaxDistance = BulletMaxDistance; inst.ThrowCollisionSize = ThrowCollisionSize; inst.ShootSound = ShootSound; inst.BeginReloadSound = BeginReloadSound; diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs index 49d6b0c..bd486c8 100644 --- a/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs +++ b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs @@ -5,10 +5,9 @@ using Godot; /// -/// 房间内活动物体基类, 所有物体都必须继承该类, -/// ActivityObject 使用的时候代码和场景分离的设计模式, 所以创建时必须指定模板场景路径, 这样做的好处是一个模板场景可以用在多个代码类上, 同样一个代码类也可以指定不同的目模板场景, -/// ActivityObject 子类实例化请不要直接使用 new, 而用该在类上标上 [RegisterActivity(id, prefabPath)], -/// ActivityObject 类会自动扫描并注册物体, 然后使用而是使用 ActivityObject.Create(id) 来创建实例 +/// 房间内活动物体基类, 所有物体都必须继承该类,
+/// ActivityObject 使用的时候代码和场景分离的设计模式, 所以创建时必须指定模板场景路径, 这样做的好处是一个模板场景可以用在多个代码类上, 同样一个代码类也可以指定不同的目模板场景,
+/// ActivityObject 子类实例化请不要直接使用 new, 而用该在类上标上 [Tool], 并在 ActivityObject.xlsx 配置文件中注册物体, 导出配置表后使用 ActivityObject.Create(id) 来创建实例.
///
public abstract partial class ActivityObject : CharacterBody2D, IDestroy { @@ -255,6 +254,8 @@ private bool _enableBehavior = true; private bool _enableBehaviorCollisionDisabledFlag; + private bool _processingBecomesStaticImage = false; + // -------------------------------------------------------------------------------- //实例索引 @@ -607,8 +608,8 @@ /// 初始高度 /// 纵轴速度 /// 移动速率 - /// 旋转速度 - public void Throw(float altitude, float verticalSpeed, Vector2 velocity, float rotate) + /// 旋转速度 + public void Throw(float altitude, float verticalSpeed, Vector2 velocity, float rotateSpeed) { var parent = GetParent(); if (parent == null) @@ -624,7 +625,7 @@ Altitude = altitude; //Position = Position + new Vector2(0, altitude); VerticalSpeed = verticalSpeed; - ThrowRotationDegreesSpeed = rotate; + ThrowRotationDegreesSpeed = rotateSpeed; if (_throwForce != null) { MoveController.RemoveForce(_throwForce); @@ -644,11 +645,11 @@ /// 初始高度 /// 纵轴速度 /// 移动速率 - /// 旋转速度 - public void Throw(Vector2 position, float altitude, float verticalSpeed, Vector2 velocity, float rotate) + /// 旋转速度 + public void Throw(Vector2 position, float altitude, float verticalSpeed, Vector2 velocity, float rotateSpeed) { GlobalPosition = position; - Throw(altitude, verticalSpeed, velocity, rotate); + Throw(altitude, verticalSpeed, velocity, rotateSpeed); } @@ -1176,7 +1177,7 @@ Collision.Rotation = 0; Collision.Scale = Vector2.One; CollisionMask = 1; - CollisionLayer = 0; + CollisionLayer = PhysicsLayer.Throwing; _fallData.UseOrigin = false; } } @@ -1346,56 +1347,91 @@ /// /// 延时指定时间调用一个回调函数 /// - public void DelayCall(float delayTime, Action cb) + public void CallDelay(float delayTime, Action cb) { - StartCoroutine(_DelayCall(delayTime, cb)); + StartCoroutine(_CallDelay(delayTime, cb)); } /// /// 延时指定时间调用一个回调函数 /// - public void DelayCall(float delayTime, Action cb, T1 arg1) + public void CallDelay(float delayTime, Action cb, T1 arg1) { - StartCoroutine(_DelayCall(delayTime, cb, arg1)); + StartCoroutine(_CallDelay(delayTime, cb, arg1)); } /// /// 延时指定时间调用一个回调函数 /// - public void DelayCall(float delayTime, Action cb, T1 arg1, T2 arg2) + public void CallDelay(float delayTime, Action cb, T1 arg1, T2 arg2) { - StartCoroutine(_DelayCall(delayTime, cb, arg1, arg2)); + StartCoroutine(_CallDelay(delayTime, cb, arg1, arg2)); } /// /// 延时指定时间调用一个回调函数 /// - public void DelayCall(float delayTime, Action cb, T1 arg1, T2 arg2, T3 arg3) + public void CallDelay(float delayTime, Action cb, T1 arg1, T2 arg2, T3 arg3) { - StartCoroutine(_DelayCall(delayTime, cb, arg1, arg2, arg3)); + StartCoroutine(_CallDelay(delayTime, cb, arg1, arg2, arg3)); } - private IEnumerator _DelayCall(float delayTime, Action cb) + private IEnumerator _CallDelay(float delayTime, Action cb) { yield return new WaitForSeconds(delayTime); cb(); } - private IEnumerator _DelayCall(float delayTime, Action cb, T1 arg1) + private IEnumerator _CallDelay(float delayTime, Action cb, T1 arg1) { yield return new WaitForSeconds(delayTime); cb(arg1); } - private IEnumerator _DelayCall(float delayTime, Action cb, T1 arg1, T2 arg2) + private IEnumerator _CallDelay(float delayTime, Action cb, T1 arg1, T2 arg2) { yield return new WaitForSeconds(delayTime); cb(arg1, arg2); } - private IEnumerator _DelayCall(float delayTime, Action cb, T1 arg1, T2 arg2, T3 arg3) + private IEnumerator _CallDelay(float delayTime, Action cb, T1 arg1, T2 arg2, T3 arg3) { yield return new WaitForSeconds(delayTime); cb(arg1,arg2, arg3); } + + /// + /// 将当前 ActivityObject 变成静态图像绘制到地面上, 用于优化渲染大量物体
+ /// 调用该函数后会排队进入渲染队列, 并且禁用所有行为, 当渲染完成后会销毁当前对象, 也就是调用 Destroy() 函数
+ ///
+ public void BecomesStaticImage() + { + if (AffiliationArea == null) + { + GD.PrintErr($"调用函数: BecomesStaticImage() 失败, 物体{Name}没有归属区域, 无法确定绘制到哪个ImageCanvas上"); + return; + } + + if (_processingBecomesStaticImage) + { + return; + } + + _processingBecomesStaticImage = true; + EnableBehavior = false; + var staticImageCanvas = AffiliationArea.RoomInfo.StaticImageCanvas; + var (x, y) = staticImageCanvas.ToImageCanvasPosition(GlobalPosition); + staticImageCanvas.CanvasSprite.DrawActivityObjectInCanvas(this, x, y, () => + { + Destroy(); + }); + } + + /// + /// 是否正在处理成为静态图片 + /// + public bool IsProcessingBecomesStaticImage() + { + return _processingBecomesStaticImage; + } } \ No newline at end of file diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityObject_EditorTool.cs b/DungeonShooting_Godot/src/framework/activity/ActivityObject_EditorTool.cs index f20d17c..af7f5d6 100644 --- a/DungeonShooting_Godot/src/framework/activity/ActivityObject_EditorTool.cs +++ b/DungeonShooting_Godot/src/framework/activity/ActivityObject_EditorTool.cs @@ -8,33 +8,44 @@ public partial class ActivityObject { /// - /// 该函数只会在编辑器中调用, 用于自定义处理被 [ExportFill] 标记后自动创建的节点 + /// 该函数只会在编辑器中调用, 用于处理被 [ExportFill] 标记属性节点, 当在编辑器中切换页签或者创建 ActivityObject 时会调用该函数 /// /// 属性名称 /// 节点实例 - protected virtual void OnExportFillNode(string propertyName, Node node) + /// 是否刚刚创建 + protected virtual void OnExamineExportFillNode(string propertyName, Node node, bool isJustCreated) { switch (propertyName) { case "ShadowSprite": { var sprite = (Sprite2D)node; - sprite.ZIndex = -1; - var material = - ResourceManager.Load(ResourcePath.resource_material_Blend_tres, false); - material.SetShaderParameter("blend", new Color(0, 0, 0, 0.47058824F)); - material.SetShaderParameter("schedule", 1); - sprite.Material = material; + if (isJustCreated) + { + sprite.ZIndex = -1; + } + + if (sprite.Material == null) + { + var material = + ResourceManager.Load(ResourcePath.resource_material_Blend_tres, false); + material.SetShaderParameter("blend", new Color(0, 0, 0, 0.47058824F)); + material.SetShaderParameter("schedule", 1); + sprite.Material = material; + } } break; case "AnimatedSprite": { var animatedSprite = (AnimatedSprite2D)node; - var material = - ResourceManager.Load(ResourcePath.resource_material_Blend_tres, false); - material.SetShaderParameter("blend", new Color(1, 1, 1, 1)); - material.SetShaderParameter("schedule", 0); - animatedSprite.Material = material; + if (animatedSprite.Material == null) + { + var material = + ResourceManager.Load(ResourcePath.resource_material_Blend_tres, false); + material.SetShaderParameter("blend", new Color(1, 1, 1, 1)); + material.SetShaderParameter("schedule", 0); + animatedSprite.Material = material; + } } break; case "Collision": @@ -136,11 +147,19 @@ AddChild(node); node.Name = propertyInfo.Name; node.Owner = owner; - //自定义处理导出的节点 - OnExportFillNode(propertyInfo.Name, node); + + OnExamineExportFillNode(propertyInfo.Name, node, true); + } + else + { + OnExamineExportFillNode(propertyInfo.Name, node, false); } propertyInfo.SetValue(this, node); } + else + { + OnExamineExportFillNode(propertyInfo.Name, (Node)value, false); + } } } } diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs b/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs index 4190405..450fbb2 100644 --- a/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs +++ b/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs @@ -21,6 +21,7 @@ public const string Id_weapon0003 = "weapon0003"; public const string Id_weapon0004 = "weapon0004"; public const string Id_weapon0005 = "weapon0005"; + public const string Id_weapon0006 = "weapon0006"; public const string Id_bullet0001 = "bullet0001"; public const string Id_bullet0002 = "bullet0002"; public const string Id_shell0001 = "shell0001"; @@ -54,6 +55,7 @@ _activityRegisterMap.Add("weapon0003", "res://prefab/weapon/Weapon0003.tscn"); _activityRegisterMap.Add("weapon0004", "res://prefab/weapon/Weapon0004.tscn"); _activityRegisterMap.Add("weapon0005", "res://prefab/weapon/Weapon0005.tscn"); + _activityRegisterMap.Add("weapon0006", "res://prefab/weapon/Weapon0006.tscn"); _activityRegisterMap.Add("bullet0001", "res://prefab/bullet/Bullet0001.tscn"); _activityRegisterMap.Add("bullet0002", "res://prefab/bullet/Bullet0002.tscn"); _activityRegisterMap.Add("shell0001", "res://prefab/shell/Shell0001.tscn"); diff --git a/DungeonShooting_Godot/src/framework/common/Utils.cs b/DungeonShooting_Godot/src/framework/common/Utils.cs index 02e17d1..5b3c546 100644 --- a/DungeonShooting_Godot/src/framework/common/Utils.cs +++ b/DungeonShooting_Godot/src/framework/common/Utils.cs @@ -15,7 +15,7 @@ { var dateTime = DateTime.Now; var num = dateTime.Year * 100000 + dateTime.Month * 100000 + dateTime.Day * 100000 + dateTime.Hour * 10000 + dateTime.Minute * 100 + dateTime.Second; - //_random = new Random(0); + //_random = new Random(204313957); _random = new Random(num); GD.Print("随机种子为: ", num); } @@ -169,6 +169,21 @@ } } } + + /// + /// 将一个任意角度转为0到360度 + /// + public static float ConvertAngle(float angle) + { + angle %= 360; // 取余 + + if (angle < 0) // 如果角度为负数,转为正数 + { + angle += 360; + } + + return angle; + } /// /// 字符串首字母小写 diff --git a/DungeonShooting_Godot/src/framework/map/AffiliationArea.cs b/DungeonShooting_Godot/src/framework/map/AffiliationArea.cs index 6b0ae6d..89cf6e0 100644 --- a/DungeonShooting_Godot/src/framework/map/AffiliationArea.cs +++ b/DungeonShooting_Godot/src/framework/map/AffiliationArea.cs @@ -52,7 +52,7 @@ Monitoring = true; Monitorable = false; CollisionLayer = PhysicsLayer.None; - CollisionMask = PhysicsLayer.Props | PhysicsLayer.Player | PhysicsLayer.Enemy; + CollisionMask = PhysicsLayer.Props | PhysicsLayer.Player | PhysicsLayer.Enemy | PhysicsLayer.Shell | PhysicsLayer.Throwing; BodyEntered += OnBodyEntered; } diff --git a/DungeonShooting_Godot/src/framework/map/DungeonGenerator.cs b/DungeonShooting_Godot/src/framework/map/DungeonGenerator.cs index 989983e..1cc6cd9 100644 --- a/DungeonShooting_Godot/src/framework/map/DungeonGenerator.cs +++ b/DungeonShooting_Godot/src/framework/map/DungeonGenerator.cs @@ -407,7 +407,7 @@ } //尝试次数用光了, 还没有找到合适的位置 - if (tryCount >= _maxTryCount) + if (tryCount >= maxTryCount) { resultRoom = null; return GenerateRoomErrorCode.NoSuitableLocation; @@ -612,15 +612,15 @@ { roomDoor.Direction = DoorDirection.S; nextRoomDoor.Direction = DoorDirection.N; - roomDoor.OriginPosition = new Vector2(x, room.GetVerticalEnd()); - nextRoomDoor.OriginPosition = new Vector2(x, nextRoom.GetVerticalStart()); + roomDoor.OriginPosition = new Vector2I(x, room.GetVerticalEnd()); + nextRoomDoor.OriginPosition = new Vector2I(x, nextRoom.GetVerticalStart()); } else //room在下, nextRoom在上 { roomDoor.Direction = DoorDirection.N; nextRoomDoor.Direction = DoorDirection.S; - roomDoor.OriginPosition = new Vector2(x, room.GetVerticalStart()); - nextRoomDoor.OriginPosition = new Vector2(x, nextRoom.GetVerticalEnd()); + roomDoor.OriginPosition = new Vector2I(x, room.GetVerticalStart()); + nextRoomDoor.OriginPosition = new Vector2I(x, nextRoom.GetVerticalEnd()); } //判断门之间的通道是否有物体碰到 @@ -664,15 +664,15 @@ { roomDoor.Direction = DoorDirection.E; nextRoomDoor.Direction = DoorDirection.W; - roomDoor.OriginPosition = new Vector2(room.GetHorizontalEnd(), y); - nextRoomDoor.OriginPosition = new Vector2(nextRoom.GetHorizontalStart(), y); + roomDoor.OriginPosition = new Vector2I(room.GetHorizontalEnd(), y); + nextRoomDoor.OriginPosition = new Vector2I(nextRoom.GetHorizontalStart(), y); } else //room在右, nextRoom在左 { roomDoor.Direction = DoorDirection.W; nextRoomDoor.Direction = DoorDirection.E; - roomDoor.OriginPosition = new Vector2(room.GetHorizontalStart(), y); - nextRoomDoor.OriginPosition = new Vector2(nextRoom.GetHorizontalEnd(), y); + roomDoor.OriginPosition = new Vector2I(room.GetHorizontalStart(), y); + nextRoomDoor.OriginPosition = new Vector2I(nextRoom.GetHorizontalEnd(), y); } //判断门之间的通道是否有物体碰到 @@ -698,7 +698,7 @@ private bool TryConnectCrossDoor(RoomInfo room, RoomDoorInfo roomDoor, RoomInfo nextRoom, RoomDoorInfo nextRoomDoor) { //焦点 - Vector2 cross = default; + Vector2I cross = default; if (room.GetHorizontalStart() > nextRoom.GetHorizontalStart()) { @@ -929,7 +929,7 @@ } } - private bool TryConnect_NE_Door(RoomInfo room, RoomInfo nextRoom, RoomDoorInfo roomDoor, RoomDoorInfo nextRoomDoor, ref Vector2 cross) + private bool TryConnect_NE_Door(RoomInfo room, RoomInfo nextRoom, RoomDoorInfo roomDoor, RoomDoorInfo nextRoomDoor, ref Vector2I cross) { var offset1 = 0; var offset2 = 0; @@ -941,14 +941,14 @@ return false; } - roomDoor.OriginPosition = new Vector2(room.GetHorizontalStart() + offset1, room.GetVerticalStart()); - nextRoomDoor.OriginPosition = new Vector2(nextRoom.GetHorizontalEnd(), + roomDoor.OriginPosition = new Vector2I(room.GetHorizontalStart() + offset1, room.GetVerticalStart()); + nextRoomDoor.OriginPosition = new Vector2I(nextRoom.GetHorizontalEnd(), nextRoom.GetVerticalStart() + offset2); - cross = new Vector2(roomDoor.OriginPosition.X, nextRoomDoor.OriginPosition.Y); + cross = new Vector2I(roomDoor.OriginPosition.X, nextRoomDoor.OriginPosition.Y); return true; } - private bool TryConnect_WS_Door(RoomInfo room, RoomInfo nextRoom, RoomDoorInfo roomDoor, RoomDoorInfo nextRoomDoor, ref Vector2 cross) + private bool TryConnect_WS_Door(RoomInfo room, RoomInfo nextRoom, RoomDoorInfo roomDoor, RoomDoorInfo nextRoomDoor, ref Vector2I cross) { //ok var offset1 = 0; @@ -961,13 +961,13 @@ return false; } - roomDoor.OriginPosition = new Vector2(room.GetHorizontalStart(), room.GetVerticalStart() + offset1); - nextRoomDoor.OriginPosition = new Vector2(nextRoom.GetHorizontalStart() + offset2, nextRoom.GetVerticalEnd()); - cross = new Vector2(nextRoomDoor.OriginPosition.X, roomDoor.OriginPosition.Y); + roomDoor.OriginPosition = new Vector2I(room.GetHorizontalStart(), room.GetVerticalStart() + offset1); + nextRoomDoor.OriginPosition = new Vector2I(nextRoom.GetHorizontalStart() + offset2, nextRoom.GetVerticalEnd()); + cross = new Vector2I(nextRoomDoor.OriginPosition.X, roomDoor.OriginPosition.Y); return true; } - private bool TryConnect_SE_Door(RoomInfo room, RoomInfo nextRoom, RoomDoorInfo roomDoor, RoomDoorInfo nextRoomDoor, ref Vector2 cross) + private bool TryConnect_SE_Door(RoomInfo room, RoomInfo nextRoom, RoomDoorInfo roomDoor, RoomDoorInfo nextRoomDoor, ref Vector2I cross) { var offset1 = 0; var offset2 = 0; @@ -979,14 +979,14 @@ return false; } - roomDoor.OriginPosition = new Vector2(room.GetHorizontalStart() + offset1, room.GetVerticalEnd()); - nextRoomDoor.OriginPosition = new Vector2(nextRoom.GetHorizontalEnd(), + roomDoor.OriginPosition = new Vector2I(room.GetHorizontalStart() + offset1, room.GetVerticalEnd()); + nextRoomDoor.OriginPosition = new Vector2I(nextRoom.GetHorizontalEnd(), nextRoom.GetVerticalStart() + offset2); - cross = new Vector2(roomDoor.OriginPosition.X, nextRoomDoor.OriginPosition.Y); + cross = new Vector2I(roomDoor.OriginPosition.X, nextRoomDoor.OriginPosition.Y); return true; } - private bool TryConnect_WN_Door(RoomInfo room, RoomInfo nextRoom, RoomDoorInfo roomDoor, RoomDoorInfo nextRoomDoor, ref Vector2 cross) + private bool TryConnect_WN_Door(RoomInfo room, RoomInfo nextRoom, RoomDoorInfo roomDoor, RoomDoorInfo nextRoomDoor, ref Vector2I cross) { var offset1 = 0; var offset2 = 0; @@ -999,14 +999,14 @@ } roomDoor.OriginPosition = - new Vector2(room.GetHorizontalStart(), room.GetVerticalStart() + offset1); // - nextRoomDoor.OriginPosition = new Vector2(nextRoom.GetHorizontalStart() + offset2, + new Vector2I(room.GetHorizontalStart(), room.GetVerticalStart() + offset1); // + nextRoomDoor.OriginPosition = new Vector2I(nextRoom.GetHorizontalStart() + offset2, nextRoom.GetVerticalStart()); - cross = new Vector2(nextRoomDoor.OriginPosition.X, roomDoor.OriginPosition.Y); + cross = new Vector2I(nextRoomDoor.OriginPosition.X, roomDoor.OriginPosition.Y); return true; } - private bool TryConnect_ES_Door(RoomInfo room, RoomInfo nextRoom, RoomDoorInfo roomDoor, RoomDoorInfo nextRoomDoor, ref Vector2 cross) + private bool TryConnect_ES_Door(RoomInfo room, RoomInfo nextRoom, RoomDoorInfo roomDoor, RoomDoorInfo nextRoomDoor, ref Vector2I cross) { var offset1 = 0; var offset2 = 0; @@ -1018,14 +1018,14 @@ return false; } - roomDoor.OriginPosition = new Vector2(room.GetHorizontalEnd(), room.GetVerticalStart() + offset1); - nextRoomDoor.OriginPosition = new Vector2(nextRoom.GetHorizontalStart() + offset2, + roomDoor.OriginPosition = new Vector2I(room.GetHorizontalEnd(), room.GetVerticalStart() + offset1); + nextRoomDoor.OriginPosition = new Vector2I(nextRoom.GetHorizontalStart() + offset2, nextRoom.GetVerticalEnd()); - cross = new Vector2(nextRoomDoor.OriginPosition.X, roomDoor.OriginPosition.Y); + cross = new Vector2I(nextRoomDoor.OriginPosition.X, roomDoor.OriginPosition.Y); return true; } - private bool TryConnect_NW_Door(RoomInfo room, RoomInfo nextRoom, RoomDoorInfo roomDoor, RoomDoorInfo nextRoomDoor, ref Vector2 cross) + private bool TryConnect_NW_Door(RoomInfo room, RoomInfo nextRoom, RoomDoorInfo roomDoor, RoomDoorInfo nextRoomDoor, ref Vector2I cross) { var offset1 = 0; var offset2 = 0; @@ -1037,14 +1037,14 @@ return false; } - roomDoor.OriginPosition = new Vector2(room.GetHorizontalStart() + offset1, room.GetVerticalStart()); - nextRoomDoor.OriginPosition = new Vector2(nextRoom.GetHorizontalStart(), + roomDoor.OriginPosition = new Vector2I(room.GetHorizontalStart() + offset1, room.GetVerticalStart()); + nextRoomDoor.OriginPosition = new Vector2I(nextRoom.GetHorizontalStart(), nextRoom.GetVerticalStart() + offset2); - cross = new Vector2(roomDoor.OriginPosition.X, nextRoomDoor.OriginPosition.Y); + cross = new Vector2I(roomDoor.OriginPosition.X, nextRoomDoor.OriginPosition.Y); return true; } - private bool TryConnect_EN_Door(RoomInfo room, RoomInfo nextRoom, RoomDoorInfo roomDoor, RoomDoorInfo nextRoomDoor, ref Vector2 cross) + private bool TryConnect_EN_Door(RoomInfo room, RoomInfo nextRoom, RoomDoorInfo roomDoor, RoomDoorInfo nextRoomDoor, ref Vector2I cross) { var offset1 = 0; var offset2 = 0; @@ -1056,14 +1056,14 @@ return false; } - roomDoor.OriginPosition = new Vector2(room.GetHorizontalEnd(), + roomDoor.OriginPosition = new Vector2I(room.GetHorizontalEnd(), room.GetVerticalStart() + offset1); - nextRoomDoor.OriginPosition = new Vector2(nextRoom.GetHorizontalStart() + offset2, nextRoom.GetVerticalStart()); - cross = new Vector2(nextRoomDoor.OriginPosition.X, roomDoor.OriginPosition.Y); + nextRoomDoor.OriginPosition = new Vector2I(nextRoom.GetHorizontalStart() + offset2, nextRoom.GetVerticalStart()); + cross = new Vector2I(nextRoomDoor.OriginPosition.X, roomDoor.OriginPosition.Y); return true; } - private bool TryConnect_SW_Door(RoomInfo room, RoomInfo nextRoom, RoomDoorInfo roomDoor, RoomDoorInfo nextRoomDoor, ref Vector2 cross) + private bool TryConnect_SW_Door(RoomInfo room, RoomInfo nextRoom, RoomDoorInfo roomDoor, RoomDoorInfo nextRoomDoor, ref Vector2I cross) { var offset1 = 0; var offset2 = 0; @@ -1075,10 +1075,10 @@ return false; } - roomDoor.OriginPosition = new Vector2(room.GetHorizontalStart() + offset1, + roomDoor.OriginPosition = new Vector2I(room.GetHorizontalStart() + offset1, room.GetVerticalEnd()); - nextRoomDoor.OriginPosition = new Vector2(nextRoom.GetHorizontalStart(), nextRoom.GetVerticalStart() + offset2); - cross = new Vector2(roomDoor.OriginPosition.X, nextRoomDoor.OriginPosition.Y); + nextRoomDoor.OriginPosition = new Vector2I(nextRoom.GetHorizontalStart(), nextRoom.GetVerticalStart() + offset2); + cross = new Vector2I(roomDoor.OriginPosition.X, nextRoomDoor.OriginPosition.Y); return true; } diff --git a/DungeonShooting_Godot/src/framework/map/RoomDoorInfo.cs b/DungeonShooting_Godot/src/framework/map/RoomDoorInfo.cs index 9de13d0..6e029fa 100644 --- a/DungeonShooting_Godot/src/framework/map/RoomDoorInfo.cs +++ b/DungeonShooting_Godot/src/framework/map/RoomDoorInfo.cs @@ -29,7 +29,7 @@ /// /// 原点坐标, 单位: 格 /// - public Vector2 OriginPosition; + public Vector2I OriginPosition; /// /// 与下一道门是否有交叉点 @@ -39,7 +39,7 @@ /// /// 与下一道门的交叉点, 单位: 格 /// - public Vector2 Cross; + public Vector2I Cross; /// /// 占位导航网格 @@ -50,4 +50,15 @@ /// 门实例 /// public RoomDoor Door; + + /// + /// 世界坐标下的原点坐标, 单位: 像素 + /// + public Vector2I GetWorldOriginPosition() + { + return new Vector2I( + OriginPosition.X * GameConfig.TileCellSize, + OriginPosition.Y * GameConfig.TileCellSize + ); + } } \ No newline at end of file diff --git a/DungeonShooting_Godot/src/framework/map/RoomInfo.cs b/DungeonShooting_Godot/src/framework/map/RoomInfo.cs index c086079..16e45b0 100644 --- a/DungeonShooting_Godot/src/framework/map/RoomInfo.cs +++ b/DungeonShooting_Godot/src/framework/map/RoomInfo.cs @@ -72,7 +72,12 @@ /// /// 当前房间归属区域 /// - public AffiliationArea Affiliation; + public AffiliationArea AffiliationArea; + + /// + /// 静态精灵绘制画布 + /// + public RoomStaticImageCanvas StaticImageCanvas; /// /// 是否处于闭关状态, 也就是房间门没有主动打开 @@ -90,9 +95,9 @@ /// /// 获取房间的全局坐标, 单位: 像素 /// - public Vector2 GetWorldPosition() + public Vector2I GetWorldPosition() { - return new Vector2( + return new Vector2I( Position.X * GameConfig.TileCellSize, Position.Y * GameConfig.TileCellSize ); @@ -102,9 +107,9 @@ /// 获取房间左上角的 Tile 距离全局坐标原点的偏移, 单位: 像素 /// /// - public Vector2 GetOffsetPosition() + public Vector2I GetOffsetPosition() { - return RoomSplit.RoomInfo.Position.AsVector2() * GameConfig.TileCellSize; + return RoomSplit.RoomInfo.Position.AsVector2I() * GameConfig.TileCellSize; } /// @@ -138,6 +143,23 @@ { return Position.Y; } + + /// + /// 获取房间宽度, 单位: 像素 + /// + public int GetWidth() + { + return Size.X * GameConfig.TileCellSize; + } + + + /// + /// 获取房间高度, 单位: 像素 + /// + public int GetHeight() + { + return Size.Y * GameConfig.TileCellSize; + } public void Destroy() { @@ -157,6 +179,11 @@ activityMark.QueueFree(); } ActivityMarks.Clear(); + + if (StaticImageCanvas != null) + { + StaticImageCanvas.Destroy(); + } } /// diff --git a/DungeonShooting_Godot/src/framework/map/RoomStaticImageCanvas.cs b/DungeonShooting_Godot/src/framework/map/RoomStaticImageCanvas.cs new file mode 100644 index 0000000..a21a7c1 --- /dev/null +++ b/DungeonShooting_Godot/src/framework/map/RoomStaticImageCanvas.cs @@ -0,0 +1,41 @@ + +using Godot; + +public class RoomStaticImageCanvas : IDestroy +{ + public bool IsDestroyed { get; private set; } + /// + /// 画布节点实例 + /// + public ImageCanvas CanvasSprite { get; } + /// + /// 房间坐标相对于画布坐标偏移量, 单位: 像素 + /// + public Vector2I RoomOffset { get; set; } + + public RoomStaticImageCanvas(Node root, Vector2I position, int width, int height) + { + CanvasSprite = new ImageCanvas(width, height); + //CanvasSprite.Clear(new Color(1, 1, 1, 0.2f)); + CanvasSprite.GlobalPosition = position; + root.AddChild(CanvasSprite); + } + + /// + /// 将世界坐标转为画布下的坐标 + /// + public Vector2 ToImageCanvasPosition(Vector2 pos) + { + return pos - CanvasSprite.GlobalPosition; + } + + public void Destroy() + { + if (IsDestroyed) + { + return; + } + + IsDestroyed = true; + } +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/framework/map/image/ImageCanvas.cs b/DungeonShooting_Godot/src/framework/map/image/ImageCanvas.cs new file mode 100644 index 0000000..842349b --- /dev/null +++ b/DungeonShooting_Godot/src/framework/map/image/ImageCanvas.cs @@ -0,0 +1,231 @@ + +using System; +using Godot; + +/// +/// 静态图像画布类, 用于处理游戏中大量静态物体的解决方案
+/// 将物体纹理绘直接绘制到画布上, 这样大大减少GPU开销, 从而提高帧率
+/// 图像旋转遵循完美像素 +///
+public partial class ImageCanvas : Sprite2D, IDestroy +{ + /// + /// 画布大小 + /// + public int Width { get; } + + /// + /// 画布高度 + /// + public int Height { get; } + + public bool IsDestroyed { get; private set; } + + private Image _canvas; + private ImageTexture _texture; + + public ImageCanvas(int width, int height) + { + Width = width; + Height = height; + + _canvas = Image.Create(width, height, false, Image.Format.Rgba8); + _texture = ImageTexture.CreateFromImage(_canvas); + } + + public override void _Ready() + { + Centered = false; + Texture = _texture; + } + + /// + /// 将指定纹理添加到预渲染队列中, 完成后会调用 onDrawingComplete 回调函数 + /// + /// 需要渲染的纹理 + /// 渲染材质, 不需要则传null + /// 离画布左上角x坐标 + /// 离画布左上角y坐标 + /// 旋转角度, 角度制 + /// 旋转中心点x + /// 旋转中心点y + /// 是否翻转y轴 + /// 绘制完成的回调函数 + public void DrawImageInCanvas(Texture2D texture, Material material, float x, float y, float angle, int centerX, int centerY, bool flipY, Action onDrawingComplete = null) + { + DrawImageInCanvas(texture, material, x, y, angle, centerX, centerY, flipY, true, onDrawingComplete); + } + private void DrawImageInCanvas(Texture2D texture, Material material, float x, float y, float angle, int centerX, int centerY, bool flipY, bool enableQueueCutting, Action onDrawingComplete) + { + var item = new ImageRenderData(); + item.OnDrawingComplete = onDrawingComplete; + item.EnableQueueCutting = enableQueueCutting; + item.ImageCanvas = this; + item.SrcImage = texture.GetImage(); + item.Material = material; + var width = item.SrcImage.GetWidth(); + var height = item.SrcImage.GetHeight(); + if (width > 128) + { + GD.PrintErr("警告: 图像宽度大于 128, 旋转后像素点可能绘制到画布外导致像素丢失!"); + } + if (height > 128) + { + GD.PrintErr("警告: 图像高度大于 128, 旋转后像素点可能绘制到画布外导致像素丢失!"); + } + item.X = Mathf.RoundToInt(x); + item.Y = Mathf.RoundToInt(y); + item.Rotation = Mathf.DegToRad(Mathf.RoundToInt(Utils.ConvertAngle(angle))); + item.CenterX = centerX; + item.CenterY = centerY; + if (item.Rotation > Mathf.Pi) + { + item.CenterX = width - item.CenterX; + item.CenterY = height - item.CenterY; + item.Rotation -= Mathf.Pi; + item.RotationGreaterThanPi = true; + } + item.FlipY = flipY; + + var cosAngle = Mathf.Cos(item.Rotation); + var sinAngle = Mathf.Sin(item.Rotation); + if (cosAngle == 0) + { + cosAngle = 1e-6f; + } + + if (sinAngle == 0) + { + sinAngle = 1e-6f; + } + + //旋转后的图片宽高 + item.RenderWidth = Mathf.CeilToInt(width * Mathf.Abs(cosAngle) + height * sinAngle) + 2; + item.RenderHeight = Mathf.CeilToInt(width * sinAngle + height * Mathf.Abs(cosAngle)) + 2; + + if (item.RenderWidth >= RenderViewportSize.X) + { + GD.PrintErr($"图像旋转后的宽度大于{RenderViewportSize.X}, 不支持绘制到 ImageCanvas 下!"); + return; + } + + //旋转后的图像中心点偏移 + item.RenderOffsetX = + (int)((item.CenterX / sinAngle + + (0.5f * item.RenderWidth * sinAngle - 0.5f * item.RenderHeight * cosAngle + + 0.5f * height) / + cosAngle - + (-0.5f * item.RenderWidth * cosAngle - 0.5f * item.RenderHeight * sinAngle + + 0.5f * width) / + sinAngle - item.CenterY / cosAngle) / + (cosAngle / sinAngle + sinAngle / cosAngle)) + 1; + item.RenderOffsetY = + (int)((item.CenterX / cosAngle - + (-0.5f * item.RenderWidth * cosAngle - 0.5f * item.RenderHeight * sinAngle + 0.5f * width) / + cosAngle - + (0.5f * item.RenderWidth * sinAngle - 0.5f * item.RenderHeight * cosAngle + 0.5f * height) / + sinAngle + item.CenterY / sinAngle) / + (sinAngle / cosAngle + cosAngle / sinAngle)) + 1; + + _queueItems.Add(item); + } + + /// + /// 将指定 ActivityObject 添加到预渲染队列中, 完成后会调用 onDrawingComplete 回调函数 + /// + /// 物体实例 + /// 离画布左上角x坐标 + /// 离画布左上角y坐标 + /// 绘制完成的回调 + public void DrawActivityObjectInCanvas(ActivityObject activityObject, float x, float y, Action onDrawingComplete = null) + { + //是否翻转y轴 + var flipY = activityObject.Scale.Y < 0; + + var animatedSprite = activityObject.AnimatedSprite; + var animatedSpritePosition = animatedSprite.Position; + var ax = x + animatedSpritePosition.X; + var ay = y + animatedSpritePosition.X; + + //先绘制阴影 + var shadowSprite = activityObject.ShadowSprite; + var shadowSpriteTexture = activityObject.ShadowSprite.Texture; + if (shadowSpriteTexture != null) + { + var spriteOffset = shadowSprite.Offset; + var centerX = (int)-spriteOffset.X; + var centerY = (int)-spriteOffset.Y; + var angle = Utils.ConvertAngle(shadowSprite.GlobalRotationDegrees); + if (shadowSprite.Centered) + { + centerX += shadowSpriteTexture.GetWidth() / 2; + centerY += shadowSpriteTexture.GetHeight() / 2; + } + + DrawImageInCanvas( + shadowSprite.Texture, shadowSprite.Material, + ax + activityObject.ShadowOffset.X, ay + activityObject.ShadowOffset.Y, + angle, + centerX, centerY, flipY, + true, null + ); + } + + //再绘制纹理 + var texture = activityObject.GetCurrentTexture(); + if (texture != null) + { + var spriteOffset = animatedSprite.Offset; + var centerX = (int)-spriteOffset.X; + var centerY = (int)-spriteOffset.Y; + if (animatedSprite.Centered) + { + centerX += texture.GetWidth() / 2; + centerY += texture.GetHeight() / 2; + } + //为了保证阴影在此之前渲染, 所以必须关闭插队渲染 + DrawImageInCanvas( + texture, animatedSprite.Material, + ax, ay, + animatedSprite.GlobalRotationDegrees, + centerX, centerY, flipY, + false, onDrawingComplete + ); + } + } + + public void Destroy() + { + if (IsDestroyed) + { + return; + } + + IsDestroyed = true; + QueueFree(); + _canvas.Dispose(); + _texture.Dispose(); + } + + /// + /// 使用透明色替换掉整个画布 + /// + public void Clear() + { + Clear(new Color(0, 0, 0, 0)); + } + + /// + /// 使用指定颜色替换掉整个画布 + /// + public void Clear(Color color) + { + _canvas.Fill(color); + Redraw(); + } + + private void Redraw() + { + _texture.Update(_canvas); + } +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/framework/map/image/ImageCanvas_Static.cs b/DungeonShooting_Godot/src/framework/map/image/ImageCanvas_Static.cs new file mode 100644 index 0000000..ea8de22 --- /dev/null +++ b/DungeonShooting_Godot/src/framework/map/image/ImageCanvas_Static.cs @@ -0,0 +1,341 @@ + + +using System; +using System.Collections.Generic; +using Godot; + +public partial class ImageCanvas +{ + public class AreaPlaceholder + { + public AreaPlaceholder(int start, int end) + { + Start = start; + End = end; + } + + public int Start { get; } + public int End { get; } + + public int Width => End - Start + 1; + } + + /// + /// 同一帧下将队列里的image绘制到指定画布下最大消耗时间, 如果绘制的时间超过了这个值, 则队列中后面的image将会放到下一帧绘制 + /// + public static float MaxHandlerTime { get; set; } = 4f; + + /// + /// 渲染窗口 + /// + public static SubViewport RenderViewport { get; private set; } + + /// + /// 渲染窗口大小 + /// + public static Vector2I RenderViewportSize { get; private set; } + + //预渲染队列, 这里不用 Queue 是因为大图尝试添加到渲染队列可能失败, 为了不影响 + private static readonly List _queueItems = new List(); + //渲染中的队列 + private static readonly Queue _drawingQueueItems = new Queue(); + //负责渲染的Sprite回收堆栈 + private static readonly Stack _renderSpriteStack = new Stack(); + + private static readonly List _placeholders = new List(); + private static ViewportTexture _viewportTexture; + + /// + /// 初始化 viewport + /// + public static void Init(Node root) + { + RenderViewportSize = new Vector2I(1024, 185); + RenderViewport = new SubViewport(); + RenderViewport.Name = "ImageCanvasViewport"; + RenderViewport.Size = RenderViewportSize; + RenderViewport.RenderTargetUpdateMode = SubViewport.UpdateMode.Always; + RenderViewport.TransparentBg = true; + RenderViewport.CanvasItemDefaultTextureFilter = Viewport.DefaultCanvasItemTextureFilter.Nearest; + var camera = new Camera2D(); + camera.Name = "ImageCanvasCamera"; + camera.AnchorMode = Camera2D.AnchorModeEnum.FixedTopLeft; + RenderViewport.AddChild(camera); + _viewportTexture = RenderViewport.GetTexture(); + + root.AddChild(RenderViewport); + RenderingServer.FramePostDraw += OnFramePostDraw; + } + + private static AreaPlaceholder FindNotchPlaceholder(int width) + { + if (_placeholders.Count == 0) + { + var result = new AreaPlaceholder(0, width - 1); + _placeholders.Add(result); + return result; + } + + for (var i = 0; i < _placeholders.Count; i++) + { + if (i == _placeholders.Count - 1) //最后一个 + { + var item = _placeholders[i]; + var end = item.End + width; + if (end < RenderViewportSize.X) + { + var result = new AreaPlaceholder(item.End + 1, end); + _placeholders.Add(result); + return result; + } + } + else if (i == 0) //第一个 + { + var item = _placeholders[i]; + var end = width - 1; + if (end < item.Start) + { + var result = new AreaPlaceholder(0, end); + _placeholders.Insert(0, result); + return result; + } + } + else //中间 + { + var prev = _placeholders[i - 1]; + var next = _placeholders[i]; + var end = prev.End + width; + if (end < next.Start + 1) + { + var result = new AreaPlaceholder(prev.End + 1, end); + _placeholders.Insert(i, result); + return result; + } + } + } + + return null; + } + + private static void RemovePlaceholder(AreaPlaceholder placeholder) + { + if (!_placeholders.Remove(placeholder)) + { + GD.PrintErr("移除 AreaPlaceholder 失败!"); + } + } + + private static ImageRenderSprite GetRenderSprite(Vector2 position) + { + ImageRenderSprite renderSprite; + if (_renderSpriteStack.Count > 0) + { + renderSprite = _renderSpriteStack.Pop(); + } + else + { + renderSprite = new ImageRenderSprite(); + } + + renderSprite.Sprite.Position = position; + RenderViewport.AddChild(renderSprite.Sprite); + return renderSprite; + } + + private static void ReclaimRenderSprite(ImageRenderSprite renderSprite) + { + RenderViewport.RemoveChild(renderSprite.Sprite); + _renderSpriteStack.Push(renderSprite); + renderSprite.Sprite.Material = null; + } + + private static void OnFramePostDraw() + { + //最大处理时间, 如果超过了, 那就下一帧再画其它的吧 + float step1Time; + float step2Time; + if (_drawingQueueItems.Count == 0) + { + step1Time = 0; + step2Time = MaxHandlerTime; + } + else if (_queueItems.Count == 0) + { + step1Time = MaxHandlerTime; + step2Time = 0; + } + else + { + step1Time = step2Time = MaxHandlerTime / 2; + } + + //上一帧绘制的image + if (_drawingQueueItems.Count > 0) + { + var redrawCanvas = new HashSet(); + List callDrawingCompleteList = null; + using (var image = _viewportTexture.GetImage()) + { + var startTime = DateTime.Now; + //File.WriteAllBytes("d:/image.png", image.SavePngToBuffer()); + //绘制完成需要调用回调的列表 + var index = 0; + do + { + var item = _drawingQueueItems.Dequeue(); + if (!item.ImageCanvas.IsDestroyed) + { + redrawCanvas.Add(item.ImageCanvas); + //处理绘图 + HandleDrawing(image, item); + index++; + if (item.OnDrawingComplete != null) + { + if (callDrawingCompleteList == null) + { + callDrawingCompleteList = new List(); + } + callDrawingCompleteList.Add(item); + } + } + + //移除站位符 + if (item.AreaPlaceholder != null) + { + RemovePlaceholder(item.AreaPlaceholder); + item.AreaPlaceholder = null; + } + + //回收 RenderSprite + if (item.RenderSprite != null) + { + ReclaimRenderSprite(item.RenderSprite); + item.RenderSprite = null; + } + } while (_drawingQueueItems.Count > 0 && (DateTime.Now - startTime).TotalMilliseconds < step1Time); + + GD.Print($"当前帧绘制完成数量: {index}, 绘制队列数量: {_drawingQueueItems.Count}, 用时: {(DateTime.Now - startTime).TotalMilliseconds}毫秒"); + + } + + //重绘画布 + foreach (var drawCanvas in redrawCanvas) + { + drawCanvas.Redraw(); + } + //调用完成回调 + if (callDrawingCompleteList != null) + { + foreach (var imageRenderData in callDrawingCompleteList) + { + try + { + imageRenderData.OnDrawingComplete(); + } + catch (Exception e) + { + GD.PrintErr("在ImageCanvas中调用回调OnDrawingComplete()发生异常: " + e); + } + } + } + } + + //处理下一批image + if (_queueItems.Count > 0) + { + var startTime = DateTime.Now; + var hasFail = false; + //执行绘制操作 + var index = 0; + for (var i = 0; i < _queueItems.Count; i++) + { + var item = _queueItems[i]; + if (!item.ImageCanvas.IsDestroyed) + { + if (hasFail && !item.EnableQueueCutting) //禁用插队 + { + continue; + } + //排队绘制 + if (HandleEnqueueDrawing(item)) + { + _queueItems.RemoveAt(i); + i--; + index++; + } + else //进入渲染队列失败 + { + hasFail = true; + } + } + else + { + _queueItems.RemoveAt(i); + i--; + } + + //计算超时 + if ((DateTime.Now - startTime).TotalMilliseconds >= step2Time) + { + break; + } + } + + GD.Print($"当前帧进入绘制绘队列数量: {index}, 待绘制队列数量: {_queueItems.Count}, 绘制队列数量: {_drawingQueueItems.Count}, 用时: {(DateTime.Now - startTime).TotalMilliseconds}毫秒"); + } + } + + private static void HandleDrawing(Image image, ImageRenderData item) + { + //截取Viewport像素点 + item.ImageCanvas._canvas.BlendRect(image, + new Rect2I(item.AreaPlaceholder.Start, 0,item.RenderWidth, item.RenderHeight), + new Vector2I(item.X - item.RenderOffsetX, item.Y - item.RenderOffsetY) + ); + + item.SrcImage.Dispose(); + item.SrcImage = null; + } + + //处理排队绘制 + private static bool HandleEnqueueDrawing(ImageRenderData item) + { + var placeholder = FindNotchPlaceholder(item.RenderWidth); + if (placeholder == null) //没有找到合适的位置 + { + return false; + } + + item.AreaPlaceholder = placeholder; + + item.RenderX = placeholder.Start + item.RenderOffsetX; + item.RenderY = item.RenderOffsetY; + var renderSprite = GetRenderSprite(new Vector2(item.RenderX, item.RenderY)); + item.RenderSprite = renderSprite; + if (item.RotationGreaterThanPi) //角度大于180度 + { + item.SrcImage.FlipX(); + if (!item.FlipY) + { + item.SrcImage.FlipY(); + } + } + else + { + if (item.FlipY) + { + item.SrcImage.FlipY(); + } + } + + renderSprite.Sprite.Material = item.Material; + renderSprite.Sprite.Offset = new Vector2(-item.CenterX, -item.CenterY); + + //设置旋转 + renderSprite.Sprite.Rotation = item.Rotation; + + renderSprite.SetImage(item.SrcImage); + _drawingQueueItems.Enqueue(item); + return true; + } +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/framework/map/image/ImageRenderData.cs b/DungeonShooting_Godot/src/framework/map/image/ImageRenderData.cs new file mode 100644 index 0000000..c6a4f79 --- /dev/null +++ b/DungeonShooting_Godot/src/framework/map/image/ImageRenderData.cs @@ -0,0 +1,87 @@ + + +using System; +using Godot; + +public class ImageRenderData +{ + /// + /// 指定的画布 + /// + public ImageCanvas ImageCanvas; + /// + /// 需要绘制的原图 + /// + public Image SrcImage; + /// + /// 渲染材质 + /// + public Material Material; + /// + /// x坐标 + /// + public int X; + /// + /// y坐标 + /// + public int Y; + /// + /// 旋转角度, 弧度制 + /// + public float Rotation; + /// + /// 中心点x + /// + public int CenterX; + /// + /// 中心点y + /// + public int CenterY; + /// + /// 是否翻转y轴 + /// + public bool FlipY; + /// + /// 旋转角度是否大于180度 + /// + public bool RotationGreaterThanPi = false; + /// + /// 绘制完成的回调函数 + /// + public Action OnDrawingComplete; + /// + /// 是否启用插队, 当进入渲染队列前, 如果前面有 image 因为过大而堵塞入口, 如果开启插队, 那么当前的 image 就会排到前面去尝试进入渲染队列 + /// + public bool EnableQueueCutting; + + //---------------------------------------------------------------------- + /// + /// 将 SrcImage 渲染到 viewport 上的 sprite 对象 + /// + public ImageRenderSprite RenderSprite; + /// + /// 在 viewport 上的宽度 + /// + public int RenderWidth; + /// + /// 在 viewport 上的高度 + /// + public int RenderHeight; + /// + /// 渲染在 viewport 上的x坐标 + /// + public int RenderX; + /// + /// 渲染在 viewport 上的y坐标 + /// + public int RenderY; + /// + /// 渲染在 viewport 上中心点x轴偏移量 + /// + public int RenderOffsetX; + /// + /// 渲染在 viewport 上中心点y轴偏移量 + /// + public int RenderOffsetY; + public ImageCanvas.AreaPlaceholder AreaPlaceholder; +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/framework/map/image/ImageRenderSprite.cs b/DungeonShooting_Godot/src/framework/map/image/ImageRenderSprite.cs new file mode 100644 index 0000000..a5eb803 --- /dev/null +++ b/DungeonShooting_Godot/src/framework/map/image/ImageRenderSprite.cs @@ -0,0 +1,38 @@ + +using Godot; + +public class ImageRenderSprite +{ + public Sprite2D Sprite { get; } + + public ImageTexture Texture { get; } + + private static Image _emptyImage; + private static Image EmptyImage + { + get + { + if (_emptyImage == null) + { + _emptyImage = Image.Create(1, 1, false, Image.Format.Rgba8); + } + + return _emptyImage; + } + } + + public ImageRenderSprite() + { + var sprite = new Sprite2D(); + Sprite = sprite; + Texture = ImageTexture.CreateFromImage(EmptyImage); + sprite.Name = "RenderSprite"; + sprite.Texture = Texture; + sprite.Centered = false; + } + + public void SetImage(Image image) + { + Texture.SetImage(image); + } +} \ No newline at end of file diff --git a/DungeonShooting_Godot/src/game/GameApplication.cs b/DungeonShooting_Godot/src/game/GameApplication.cs index e76a4cf..73ecc5c 100644 --- a/DungeonShooting_Godot/src/game/GameApplication.cs +++ b/DungeonShooting_Godot/src/game/GameApplication.cs @@ -88,7 +88,7 @@ public GameApplication() { Instance = this; - + //初始化配置表 ExcelConfig.Init(); //初始化房间配置数据 @@ -113,6 +113,8 @@ ActivityObject.IsDebug = Debug; //Engine.TimeScale = 0.2f; + ImageCanvas.Init(GetTree().CurrentScene); + //窗体大小改变 GetWindow().SizeChanged += OnWindowSizeChanged; RefreshSubViewportSize(); diff --git a/DungeonShooting_Godot/src/game/PhysicsLayer.cs b/DungeonShooting_Godot/src/game/PhysicsLayer.cs index 118f604..c1c53ea 100644 --- a/DungeonShooting_Godot/src/game/PhysicsLayer.cs +++ b/DungeonShooting_Godot/src/game/PhysicsLayer.cs @@ -34,5 +34,13 @@ /// /// 在手上 /// - public const uint InHand = 0b1000000; + public const uint OnHand = 0b1000000; + /// + /// 弹壳 + /// + public const uint Shell = 0b10000000; + /// + /// 投抛中 + /// + public const uint Throwing = 0b100000000; } \ No newline at end of file diff --git a/DungeonShooting_Godot/src/game/activity/shell/Shell.cs b/DungeonShooting_Godot/src/game/activity/shell/Shell.cs index 310ee81..7496390 100644 --- a/DungeonShooting_Godot/src/game/activity/shell/Shell.cs +++ b/DungeonShooting_Godot/src/game/activity/shell/Shell.cs @@ -9,14 +9,24 @@ { public override void OnInit() { - base.OnInit(); ShadowOffset = new Vector2(0, 1); ThrowCollisionSize = new Vector2(5, 5); } - protected override void OnThrowOver() + protected override void Process(float delta) { - EnableBehavior = false; - Collision.QueueFree(); + //落地后将弹壳变为静态贴图 + if (!IsThrowing) + { + if (AffiliationArea != null) + { + BecomesStaticImage(); + } + else + { + GD.Print("弹壳投抛到画布外了, 强制消除..."); + Destroy(); + } + } } } \ 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 23caa70..59583fa 100644 --- a/DungeonShooting_Godot/src/game/activity/weapon/Weapon.cs +++ b/DungeonShooting_Godot/src/game/activity/weapon/Weapon.cs @@ -194,6 +194,9 @@ //单独换弹设置下的换弹状态, 0: 未换弹, 1: 装第一颗子弹之前, 2: 单独装弹中, 3: 单独装弹完成 private byte _aloneReloadState = 0; + //单独换弹状态下是否强制结束换弹过程 + private bool _aloneReloadStop = false; + //本次换弹已用时间 private float _reloadUseTime = 0; @@ -449,6 +452,7 @@ _aloneReloadState = 2; ReloadHandler(); } + _aloneReloadStop = false; } break; case 2: //单独装弹中 @@ -456,7 +460,7 @@ if (_reloadTimer <= 0) { ReloadSuccess(); - if (ResidueAmmo == 0 || CurrAmmo == Attribute.AmmoCapacity) //单独装弹完成 + if (_aloneReloadStop || ResidueAmmo == 0 || CurrAmmo == Attribute.AmmoCapacity) //单独装弹完成 { AloneReloadStateFinish(); if (Attribute.AloneReloadFinishIntervalTime <= 0) @@ -490,6 +494,7 @@ StopReloadState(); ReloadFinishHandler(); } + _aloneReloadStop = false; } break; } @@ -650,17 +655,8 @@ //检查是否允许停止换弹 if (_aloneReloadState == 2 || _aloneReloadState == 1) { - if (Attribute.AloneReloadFinishIntervalTime <= 0) - { - //换弹完成 - StopReloadState(); - ReloadFinishHandler(); - } - else - { - _reloadTimer = Attribute.AloneReloadFinishIntervalTime; - _aloneReloadState = 3; - } + //强制结束 + _aloneReloadStop = true; } } } @@ -832,7 +828,7 @@ } else { - DelayCall(Attribute.EquipSoundDelayTime, PlaySpriteAnimation, AnimatorNames.Equip); + CallDelay(Attribute.EquipSoundDelayTime, PlaySpriteAnimation, AnimatorNames.Equip); } } @@ -1165,7 +1161,7 @@ } } - if (ResidueAmmo != 0 && CurrAmmo != Attribute.AmmoCapacity) //继续装弹 + if (!_aloneReloadStop && ResidueAmmo != 0 && CurrAmmo != Attribute.AmmoCapacity) //继续装弹 { ReloadHandler(); } @@ -1201,7 +1197,7 @@ //帧动画播放结束 private void OnAnimationFinished() { - GD.Print("帧动画播放结束..."); + // GD.Print("帧动画播放结束..."); AnimatedSprite.Play(AnimatorNames.Default); } @@ -1399,7 +1395,7 @@ AnimatedSprite.Position = new Vector2(-position.X, -position.Y); //修改层级 _tempLayer = CollisionLayer; - CollisionLayer = PhysicsLayer.InHand; + CollisionLayer = PhysicsLayer.OnHand; //清除 Ai 拾起标记 RemoveSign(SignNames.AiFindWeaponSign); OnPickUp(master); @@ -1444,7 +1440,7 @@ //-------------------------- ----- 子弹相关 ----------------------------- /// - /// 投抛弹壳的默认实现方式, shellId为弹壳id, 不需要前缀 + /// 投抛弹壳的默认实现方式, shellId为弹壳id /// protected ActivityObject ThrowShell(string shellId) { @@ -1460,8 +1456,28 @@ shell.Rotation = Master.MountPoint.RealRotation; shell.InheritVelocity(Master); shell.Throw(startPos, startHeight, verticalSpeed, velocity, rotate); + Master.AffiliationArea.InsertItem(shell); return shell; } + + /// + /// 发射子弹的默认实现方式, bulletId为子弹id + /// + protected Bullet ShootBullet(float fireRotation, string bulletId) + { + //创建子弹 + var bullet = Create(bulletId); + bullet.Init( + this, + Utils.RandomRangeFloat(Attribute.BulletMinSpeed, Attribute.BulletMaxSpeed), + Utils.RandomRangeFloat(Attribute.BulletMinDistance, Attribute.BulletMaxDistance), + FirePoint.GlobalPosition, + fireRotation + Mathf.DegToRad(Utils.RandomRangeFloat(Attribute.BulletMinDeviationAngle, Attribute.BulletMaxDeviationAngle)), + GetAttackLayer() + ); + bullet.PutDown(RoomLayerEnum.YSortLayer); + return bullet; + } //-------------------------------- Ai相关 ----------------------------- diff --git a/DungeonShooting_Godot/src/game/activity/weapon/gun/Gun.cs b/DungeonShooting_Godot/src/game/activity/weapon/gun/Gun.cs index 83b94aa..198698d 100644 --- a/DungeonShooting_Godot/src/game/activity/weapon/gun/Gun.cs +++ b/DungeonShooting_Godot/src/game/activity/weapon/gun/Gun.cs @@ -6,11 +6,6 @@ [Tool, GlobalClass] public partial class Gun : Weapon { - protected override void OnReload() - { - base.OnReload(); - } - protected override void OnFire() { //创建一个弹壳 @@ -32,16 +27,6 @@ protected override void OnShoot(float fireRotation) { - //创建子弹 - var bullet = ActivityObject.Create(Attribute.BulletId); - bullet.Init( - this, - 350, - Utils.RandomRangeFloat(Attribute.MinDistance, Attribute.MaxDistance), - FirePoint.GlobalPosition, - fireRotation, - GetAttackLayer() - ); - bullet.PutDown(RoomLayerEnum.YSortLayer); + ShootBullet(fireRotation, Attribute.BulletId); } } \ No newline at end of file diff --git a/DungeonShooting_Godot/src/game/activity/weapon/gun/Shotgun.cs b/DungeonShooting_Godot/src/game/activity/weapon/gun/Shotgun.cs deleted file mode 100644 index fc79ef3..0000000 --- a/DungeonShooting_Godot/src/game/activity/weapon/gun/Shotgun.cs +++ /dev/null @@ -1,39 +0,0 @@ -using Godot; - -[Tool, GlobalClass] -public partial class Shotgun : Weapon -{ - protected override void OnFire() - { - //创建一个弹壳 - ThrowShell(ActivityObject.Ids.Id_shell0001); - - if (Master == Player.Current) - { - //创建抖动 - GameCamera.Main.DirectionalShake(Vector2.Right.Rotated(GlobalRotation) * 2f); - } - - //创建开火特效 - var packedScene = ResourceManager.Load(ResourcePath.prefab_effect_ShotFire_tscn); - var sprite = packedScene.Instantiate(); - sprite.GlobalPosition = FirePoint.GlobalPosition; - sprite.GlobalRotation = FirePoint.GlobalRotation; - sprite.AddToActivityRoot(RoomLayerEnum.YSortLayer); - } - - protected override void OnShoot(float fireRotation) - { - //创建子弹 - var bullet = ActivityObject.Create(Attribute.BulletId); - bullet.Init( - this, - Utils.RandomRangeInt(280, 380), - Utils.RandomRangeFloat(Attribute.MinDistance, Attribute.MaxDistance), - FirePoint.GlobalPosition, - fireRotation + Utils.RandomRangeFloat(Mathf.DegToRad(-10), Mathf.DegToRad(10)), - GetAttackLayer() - ); - bullet.PutDown(RoomLayerEnum.YSortLayer); - } -} diff --git a/DungeonShooting_Godot/src/game/effects/EnemyDebris.cs b/DungeonShooting_Godot/src/game/effects/EnemyDebris.cs index 0a967f2..196687f 100644 --- a/DungeonShooting_Godot/src/game/effects/EnemyDebris.cs +++ b/DungeonShooting_Godot/src/game/effects/EnemyDebris.cs @@ -30,8 +30,6 @@ yield return new WaitForSeconds(Utils.RandomRangeFloat(1f, 2.5f)); gpuParticles2D.Emitting = false; yield return new WaitForSeconds(1); - gpuParticles2D.QueueFree(); - EnableBehavior = false; - Collision.QueueFree(); + BecomesStaticImage(); } } \ 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 0da5ef6..e4e5b35 100644 --- a/DungeonShooting_Godot/src/game/manager/ResourcePath.cs +++ b/DungeonShooting_Godot/src/game/manager/ResourcePath.cs @@ -40,8 +40,10 @@ public const string prefab_weapon_Weapon0003_tscn = "res://prefab/weapon/Weapon0003.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"; + public const string prefab_weapon_Weapon0006_tscn = "res://prefab/weapon/Weapon0006.tscn"; public const string prefab_weapon_WeaponTemplate_tscn = "res://prefab/weapon/WeaponTemplate.tscn"; public const string resource_config_ActivityObject_json = "res://resource/config/ActivityObject.json"; + public const string resource_config_Sound_json = "res://resource/config/Sound.json"; public const string resource_config_Weapon_json = "res://resource/config/Weapon.json"; public const string resource_curve_Curve1_tres = "res://resource/curve/Curve1.tres"; public const string resource_font_DinkieBitmap7pxDemo_ttf = "res://resource/font/DinkieBitmap-7pxDemo.ttf"; @@ -56,21 +58,46 @@ public const string resource_material_Blend_tres = "res://resource/material/Blend.tres"; public const string resource_material_SmokeParticleMaterial_tres = "res://resource/material/SmokeParticleMaterial.tres"; public const string resource_sound_bgm_Intro_ogg = "res://resource/sound/bgm/Intro.ogg"; - public const string resource_sound_sfx_Equip0001_ogg = "res://resource/sound/sfx/Equip0001.ogg"; - public const string resource_sound_sfx_Equip0002_ogg = "res://resource/sound/sfx/Equip0002.ogg"; - public const string resource_sound_sfx_Equip0003_ogg = "res://resource/sound/sfx/Equip0003.ogg"; - public const string resource_sound_sfx_Explosion0001_ogg = "res://resource/sound/sfx/Explosion0001.ogg"; - public const string resource_sound_sfx_Explosion0002_ogg = "res://resource/sound/sfx/Explosion0002.ogg"; - public const string resource_sound_sfx_Explosion0003_ogg = "res://resource/sound/sfx/Explosion0003.ogg"; - public const string resource_sound_sfx_Reloading0001_mp3 = "res://resource/sound/sfx/Reloading0001.mp3"; - public const string resource_sound_sfx_Reloading0002_ogg = "res://resource/sound/sfx/Reloading0002.ogg"; - public const string resource_sound_sfx_Reloading0003_ogg = "res://resource/sound/sfx/Reloading0003.ogg"; - public const string resource_sound_sfx_Reloading0004_ogg = "res://resource/sound/sfx/Reloading0004.ogg"; - public const string resource_sound_sfx_Reloading_begin0001_ogg = "res://resource/sound/sfx/Reloading_begin0001.ogg"; - public const string resource_sound_sfx_Reloading_finish0001_ogg = "res://resource/sound/sfx/Reloading_finish0001.ogg"; - public const string resource_sound_sfx_Shooting0001_ogg = "res://resource/sound/sfx/Shooting0001.ogg"; - public const string resource_sound_sfx_Shooting0002_mp3 = "res://resource/sound/sfx/Shooting0002.mp3"; - public const string resource_sound_sfx_Shooting0003_mp3 = "res://resource/sound/sfx/Shooting0003.mp3"; + public const string resource_sound_sfx_equip_Equip0001_ogg = "res://resource/sound/sfx/equip/Equip0001.ogg"; + public const string resource_sound_sfx_equip_Equip0002_ogg = "res://resource/sound/sfx/equip/Equip0002.ogg"; + public const string resource_sound_sfx_equip_Equip0003_ogg = "res://resource/sound/sfx/equip/Equip0003.ogg"; + public const string resource_sound_sfx_equip_Equip0004_ogg = "res://resource/sound/sfx/equip/Equip0004.ogg"; + public const string resource_sound_sfx_equip_Equip0005_ogg = "res://resource/sound/sfx/equip/Equip0005.ogg"; + public const string resource_sound_sfx_equip_Equip0006_ogg = "res://resource/sound/sfx/equip/Equip0006.ogg"; + public const string resource_sound_sfx_equip_Equip0007_ogg = "res://resource/sound/sfx/equip/Equip0007.ogg"; + public const string resource_sound_sfx_equip_Equip0008_ogg = "res://resource/sound/sfx/equip/Equip0008.ogg"; + public const string resource_sound_sfx_equip_Equip0009_ogg = "res://resource/sound/sfx/equip/Equip0009.ogg"; + public const string resource_sound_sfx_equip_Equip0010_ogg = "res://resource/sound/sfx/equip/Equip0010.ogg"; + public const string resource_sound_sfx_equip_Equip0011_ogg = "res://resource/sound/sfx/equip/Equip0011.ogg"; + public const string resource_sound_sfx_equip_Equip0012_ogg = "res://resource/sound/sfx/equip/Equip0012.ogg"; + public const string resource_sound_sfx_equip_Equip0013_ogg = "res://resource/sound/sfx/equip/Equip0013.ogg"; + public const string resource_sound_sfx_equip_Equip0014_ogg = "res://resource/sound/sfx/equip/Equip0014.ogg"; + public const string resource_sound_sfx_equip_Equip0015_ogg = "res://resource/sound/sfx/equip/Equip0015.ogg"; + public const string resource_sound_sfx_equip_Equip0016_ogg = "res://resource/sound/sfx/equip/Equip0016.ogg"; + public const string resource_sound_sfx_explosion_Explosion0001_ogg = "res://resource/sound/sfx/explosion/Explosion0001.ogg"; + public const string resource_sound_sfx_explosion_Explosion0002_ogg = "res://resource/sound/sfx/explosion/Explosion0002.ogg"; + public const string resource_sound_sfx_explosion_Explosion0003_ogg = "res://resource/sound/sfx/explosion/Explosion0003.ogg"; + public const string resource_sound_sfx_reloading_Reloading0001_ogg = "res://resource/sound/sfx/reloading/Reloading0001.ogg"; + public const string resource_sound_sfx_reloading_Reloading0002_ogg = "res://resource/sound/sfx/reloading/Reloading0002.ogg"; + public const string resource_sound_sfx_reloading_Reloading_begin0001_ogg = "res://resource/sound/sfx/reloading/Reloading_begin0001.ogg"; + public const string resource_sound_sfx_reloading_Reloading_begin0002_ogg = "res://resource/sound/sfx/reloading/Reloading_begin0002.ogg"; + public const string resource_sound_sfx_reloading_Reloading_begin0003_ogg = "res://resource/sound/sfx/reloading/Reloading_begin0003.ogg"; + public const string resource_sound_sfx_reloading_Reloading_begin0004_ogg = "res://resource/sound/sfx/reloading/Reloading_begin0004.ogg"; + public const string resource_sound_sfx_reloading_Reloading_begin0005_ogg = "res://resource/sound/sfx/reloading/Reloading_begin0005.ogg"; + public const string resource_sound_sfx_reloading_Reloading_begin0006_ogg = "res://resource/sound/sfx/reloading/Reloading_begin0006.ogg"; + public const string resource_sound_sfx_reloading_Reloading_begin0007_ogg = "res://resource/sound/sfx/reloading/Reloading_begin0007.ogg"; + public const string resource_sound_sfx_reloading_Reloading_begin0008_ogg = "res://resource/sound/sfx/reloading/Reloading_begin0008.ogg"; + public const string resource_sound_sfx_reloading_Reloading_begin0009_ogg = "res://resource/sound/sfx/reloading/Reloading_begin0009.ogg"; + public const string resource_sound_sfx_reloading_Reloading_finish0001_ogg = "res://resource/sound/sfx/reloading/Reloading_finish0001.ogg"; + public const string resource_sound_sfx_reloading_Reloading_finish0002_ogg = "res://resource/sound/sfx/reloading/Reloading_finish0002.ogg"; + public const string resource_sound_sfx_shooting_Shooting0001_ogg = "res://resource/sound/sfx/shooting/Shooting0001.ogg"; + public const string resource_sound_sfx_shooting_Shooting0002_ogg = "res://resource/sound/sfx/shooting/Shooting0002.ogg"; + public const string resource_sound_sfx_shooting_Shooting0003_ogg = "res://resource/sound/sfx/shooting/Shooting0003.ogg"; + public const string resource_sound_sfx_shooting_Shooting0004_ogg = "res://resource/sound/sfx/shooting/Shooting0004.ogg"; + public const string resource_sound_sfx_shooting_Shooting0005_ogg = "res://resource/sound/sfx/shooting/Shooting0005.ogg"; + public const string resource_sound_sfx_shooting_Shooting0006_ogg = "res://resource/sound/sfx/shooting/Shooting0006.ogg"; + public const string resource_sound_sfx_shooting_Shooting0007_ogg = "res://resource/sound/sfx/shooting/Shooting0007.ogg"; + public const string resource_sound_sfx_shooting_Shooting0008_ogg = "res://resource/sound/sfx/shooting/Shooting0008.ogg"; public const string resource_sprite_bullet_arrow_png = "res://resource/sprite/bullet/arrow.png"; public const string resource_sprite_bullet_bullet_png = "res://resource/sprite/bullet/bullet.png"; public const string resource_sprite_bullet_bullet2_png = "res://resource/sprite/bullet/bullet2.png"; @@ -128,8 +155,10 @@ public const string resource_sprite_weapon_knife1_png = "res://resource/sprite/weapon/knife1.png"; public const string resource_sprite_weapon_weapon0001_Weapon0001_png = "res://resource/sprite/weapon/weapon0001/Weapon0001.png"; public const string resource_sprite_weapon_weapon0002_Weapon0002_png = "res://resource/sprite/weapon/weapon0002/Weapon0002.png"; + public const string resource_sprite_weapon_weapon0002_Weapon0002_reloading_png = "res://resource/sprite/weapon/weapon0002/Weapon0002_reloading.png"; public const string resource_sprite_weapon_weapon0003_Weapon0003_png = "res://resource/sprite/weapon/weapon0003/Weapon0003.png"; public const string resource_sprite_weapon_weapon0005_Weapon0005_png = "res://resource/sprite/weapon/weapon0005/Weapon0005.png"; + public const string resource_sprite_weapon_weapon0006_Weapon0006_png = "res://resource/sprite/weapon/weapon0006/Weapon0006.png"; public const string resource_spriteFrames_Bullet0001_tres = "res://resource/spriteFrames/Bullet0001.tres"; public const string resource_spriteFrames_Bullet0002_tres = "res://resource/spriteFrames/Bullet0002.tres"; public const string resource_spriteFrames_KnifeHit1_tres = "res://resource/spriteFrames/KnifeHit1.tres"; @@ -143,6 +172,7 @@ public const string resource_spriteFrames_Weapon0003_tres = "res://resource/spriteFrames/Weapon0003.tres"; public const string resource_spriteFrames_Weapon0004_tres = "res://resource/spriteFrames/Weapon0004.tres"; public const string resource_spriteFrames_Weapon0005_tres = "res://resource/spriteFrames/Weapon0005.tres"; + public const string resource_spriteFrames_Weapon0006_tres = "res://resource/spriteFrames/Weapon0006.tres"; public const string resource_theme_mainTheme_tres = "res://resource/theme/mainTheme.tres"; public const string resource_theme_theme1_tres = "res://resource/theme/theme1.tres"; public const string scene_EditorDemo_tscn = "res://scene/EditorDemo.tscn"; @@ -154,6 +184,7 @@ public const string scene_test_TestNavigation2_tscn = "res://scene/test/TestNavigation2.tscn"; public const string scene_test_TestNavigationPolygon_tscn = "res://scene/test/TestNavigationPolygon.tscn"; public const string scene_test_TestNewTileMap_tscn = "res://scene/test/TestNewTileMap.tscn"; + public const string scene_test_TestOptimizeSprite_tscn = "res://scene/test/TestOptimizeSprite.tscn"; public const string scene_test_TestReadExcel_tscn = "res://scene/test/TestReadExcel.tscn"; public const string scene_test_TestTileLayer_tscn = "res://scene/test/TestTileLayer.tscn"; } \ No newline at end of file diff --git a/DungeonShooting_Godot/src/game/role/Role.cs b/DungeonShooting_Godot/src/game/role/Role.cs index 0698454..79ca40f 100644 --- a/DungeonShooting_Godot/src/game/role/Role.cs +++ b/DungeonShooting_Godot/src/game/role/Role.cs @@ -448,7 +448,7 @@ { temp.Y = -temp.Y; } - var pos = GlobalPosition + temp.Rotated(weapon.GlobalRotation); + //var pos = GlobalPosition + temp.Rotated(weapon.GlobalRotation); Holster.RemoveWeapon(index); //播放抛出效果 weapon.ThrowWeapon(this, GlobalPosition); @@ -564,7 +564,7 @@ ///
private void _OnPropsEnter(Node2D other) { - if (other is ActivityObject propObject && !propObject.CollisionWithMask(PhysicsLayer.InHand)) + if (other is ActivityObject propObject && !propObject.CollisionWithMask(PhysicsLayer.OnHand)) { if (!_interactiveItemList.Contains(propObject)) { diff --git a/DungeonShooting_Godot/src/game/role/enemy/Enemy.cs b/DungeonShooting_Godot/src/game/role/enemy/Enemy.cs index 72735b9..ffd076a 100644 --- a/DungeonShooting_Godot/src/game/role/enemy/Enemy.cs +++ b/DungeonShooting_Godot/src/game/role/enemy/Enemy.cs @@ -341,7 +341,7 @@ if (Holster.ActiveWeapon != null) { var attribute = Holster.ActiveWeapon.Attribute; - return Mathf.Lerp(attribute.MinDistance, attribute.MaxDistance, weight); + return Mathf.Lerp(attribute.BulletMinDistance, attribute.BulletMaxDistance, weight); } return 0; diff --git a/DungeonShooting_Godot/src/game/role/enemy/state/AiFollowUpState.cs b/DungeonShooting_Godot/src/game/role/enemy/state/AiFollowUpState.cs index 725ddcb..ab05469 100644 --- a/DungeonShooting_Godot/src/game/role/enemy/state/AiFollowUpState.cs +++ b/DungeonShooting_Godot/src/game/role/enemy/state/AiFollowUpState.cs @@ -106,7 +106,7 @@ Master.EnemyAttack(delta); //距离够近, 可以切换到环绕模式 - if (Master.GlobalPosition.DistanceSquaredTo(playerPos) <= Mathf.Pow(weapon.Attribute.MinDistance, 2) * 0.7f) + if (Master.GlobalPosition.DistanceSquaredTo(playerPos) <= Mathf.Pow(weapon.Attribute.BulletMinDistance, 2) * 0.7f) { ChangeState(AiStateEnum.AiSurround); } diff --git a/DungeonShooting_Godot/src/game/role/enemy/state/AiSurroundState.cs b/DungeonShooting_Godot/src/game/role/enemy/state/AiSurroundState.cs index 29ce5a7..ebfce46 100644 --- a/DungeonShooting_Godot/src/game/role/enemy/state/AiSurroundState.cs +++ b/DungeonShooting_Godot/src/game/role/enemy/state/AiSurroundState.cs @@ -161,7 +161,7 @@ private void RunOver(Vector2 targetPos) { var weapon = Master.Holster.ActiveWeapon; - var distance = (int)(weapon == null ? 150 : (weapon.Attribute.MinDistance * 0.7f)); + var distance = (int)(weapon == null ? 150 : (weapon.Attribute.BulletMinDistance * 0.7f)); _nextPosition = new Vector2( targetPos.X + Utils.RandomRangeInt(-distance, distance), targetPos.Y + Utils.RandomRangeInt(-distance, distance) diff --git a/DungeonShooting_Godot/src/game/room/DungeonManager.cs b/DungeonShooting_Godot/src/game/room/DungeonManager.cs index 244e1e7..b8d3ed1 100644 --- a/DungeonShooting_Godot/src/game/room/DungeonManager.cs +++ b/DungeonShooting_Godot/src/game/room/DungeonManager.cs @@ -40,7 +40,6 @@ private World _world; //用于检查房间敌人的计时器 - private int _affiliationIndex = 0; private float _checkEnemyTimer = 0; @@ -220,7 +219,9 @@ //创建门 CreateDoor(roomInfo); //创建房间归属区域 - CreateRoomAisleAffiliation(roomInfo); + CreateRoomAffiliation(roomInfo); + //创建静态精灵画布 + CreateRoomStaticSpriteCanvas(roomInfo); } //挂载房间导航区域 @@ -294,18 +295,117 @@ } //创建房间归属区域 - private void CreateRoomAisleAffiliation(RoomInfo roomInfo) + private void CreateRoomAffiliation(RoomInfo roomInfo) { var affiliation = new AffiliationArea(); - affiliation.Name = "AffiliationArea" + (_affiliationIndex++); + affiliation.Name = "AffiliationArea" + roomInfo.Id; affiliation.Init(roomInfo, new Rect2( roomInfo.GetWorldPosition() + new Vector2(GameConfig.TileCellSize, GameConfig.TileCellSize), (roomInfo.Size - new Vector2I(2, 2)) * GameConfig.TileCellSize)); - roomInfo.Affiliation = affiliation; - _world.AddChild(affiliation); + roomInfo.AffiliationArea = affiliation; + _world.AffiliationAreaRoot.AddChild(affiliation); } - + + //创建静态精灵画布 + private void CreateRoomStaticSpriteCanvas(RoomInfo roomInfo) + { + var worldPos = roomInfo.GetWorldPosition(); + var pos = new Vector2I((int)worldPos.X, (int)worldPos.Y); + + int minX = pos.X; + int minY = pos.Y; + int maxX = minX + roomInfo.GetWidth(); + int maxY = minY + roomInfo.GetHeight(); + + //遍历每一个连接的门, 计算计算canvas覆盖范围 + foreach (var doorInfo in roomInfo.Doors) + { + var connectDoor = doorInfo.ConnectDoor; + switch (connectDoor.Direction) + { + case DoorDirection.E: + case DoorDirection.W: + { + var (px1, py1) = connectDoor.GetWorldOriginPosition(); + var py2 = py1 + 4 * GameConfig.TileCellSize; + if (px1 < minX) + { + minX = (int)px1; + } + else if (px1 > maxX) + { + maxX = (int)px1; + } + + if (py1 < minY) + { + minY = (int)py1; + } + else if (py1 > maxY) + { + maxY = (int)py1; + } + + if (py2 < minY) + { + minY = (int)py2; + } + else if (py2 > maxY) + { + maxY = (int)py2; + } + } + break; + case DoorDirection.S: + case DoorDirection.N: + { + var (px1, py1) = connectDoor.GetWorldOriginPosition(); + var px2 = px1 + 4 * GameConfig.TileCellSize; + if (px1 < minX) + { + minX = (int)px1; + } + else if (px1 > maxX) + { + maxX = (int)px1; + } + + if (py1 < minY) + { + minY = (int)py1; + } + else if (py1 > maxY) + { + maxY = (int)py1; + } + + if (px2 < minX) + { + minX = (int)px2; + } + else if (px2 > maxX) + { + maxX = (int)px2; + } + } + break; + } + } + + minX -= GameConfig.TileCellSize; + minY -= GameConfig.TileCellSize; + maxX += GameConfig.TileCellSize; + maxY += GameConfig.TileCellSize; + var staticSpriteCanvas = new RoomStaticImageCanvas( + _world.StaticSpriteRoot, + new Vector2I(minX, minY), + maxX - minX, maxY - minY + ); + staticSpriteCanvas.RoomOffset = new Vector2I(worldPos.X - minX, worldPos.Y - minY); + roomInfo.StaticImageCanvas = staticSpriteCanvas; + } + /// /// 玩家第一次进入某个房间回调 /// diff --git a/DungeonShooting_Godot/src/game/room/World.cs b/DungeonShooting_Godot/src/game/room/World.cs index cb6810d..622803c 100644 --- a/DungeonShooting_Godot/src/game/room/World.cs +++ b/DungeonShooting_Godot/src/game/room/World.cs @@ -20,6 +20,9 @@ /// 地图根节点 ///
[Export] public TileMap TileRoot; + + [Export] public Node2D StaticSpriteRoot; + [Export] public Node2D AffiliationAreaRoot; /// /// 是否暂停 diff --git a/DungeonShooting_Godot/src/test/TestOptimizeSprite.cs b/DungeonShooting_Godot/src/test/TestOptimizeSprite.cs new file mode 100644 index 0000000..bc8bfa3 --- /dev/null +++ b/DungeonShooting_Godot/src/test/TestOptimizeSprite.cs @@ -0,0 +1,66 @@ +using Godot; + +public partial class TestOptimizeSprite : Node2D +{ + [Export()] public Texture2D[] ImageList; + + [Export()] public Label Label; + + public override void _Ready() + { + ImageCanvas.Init(GetTree().CurrentScene); + ImageCanvas.MaxHandlerTime = 4; + + var scale = 2; + var imageCanvas = new ImageCanvas(1920 / scale, 1080 / scale); + imageCanvas.Scale = new Vector2(scale, scale); + + var successCount = 0; + + for (int i = 0; i < 50000; i++) + { + var texture = Utils.RandomChoose(ImageList); + var x = Utils.RandomRangeInt(0, imageCanvas.Width); + var y = Utils.RandomRangeInt(0, imageCanvas.Height); + var centerX = Utils.RandomRangeInt(0, texture.GetWidth()); + var centerY = Utils.RandomRangeInt(0, texture.GetHeight()); + var angle = Utils.RandomRangeInt(0, 360); + imageCanvas.DrawImageInCanvas(texture, null, x, y, + angle, centerX, centerY, Utils.RandomBoolean(), + () => + { + successCount++; + Label.Text = $"当前绘制数量: {successCount}"; + } + ); + } + + // var delta = 360f / (15 * 8); + // var angle = 0f; + // for (int i = 0; i < 15; i++) + // { + // for (int j = 0; j < 8; j++) + // { + // //var texture = Utils.RandomChoose(ImageList); + // var texture = ImageList[1]; + // var centerX = texture.GetWidth() / 2; + // var centerY = texture.GetHeight() / 2; + // //var angle = Utils.RandomRangeInt(0, 360); + // //GD.Print($"x: {i}, y: {j}, angle: " + angle); + // imageCanvas.DrawImageInCanvas(texture, + // 10 + i * 10, 10 + j * 10, + // angle, centerX, centerY, false + // ); + // angle += delta; + // } + // } + + //var texture = ImageList[0]; + //imageCanvas.DrawImageInCanvas(texture, imageCanvas.Width / 2, imageCanvas.Height / 2, 0, 0, 0, true); + //imageCanvas.DrawImageInCanvas(texture, imageCanvas.Width / 2, imageCanvas.Height / 2, 0, texture.GetWidth() / 2, texture.GetHeight() / 2, true); + + + + AddChild(imageCanvas); + } +}