diff --git a/Assets/Fonts/DotGothic16-Regular.ttf b/Assets/Fonts/DotGothic16-Regular.ttf new file mode 100644 index 0000000..6634bc1 Binary files /dev/null and b/Assets/Fonts/DotGothic16-Regular.ttf differ diff --git a/Assets/Fonts/DotGothic16-Regular.ttf.import b/Assets/Fonts/DotGothic16-Regular.ttf.import new file mode 100644 index 0000000..3e4dd42 --- /dev/null +++ b/Assets/Fonts/DotGothic16-Regular.ttf.import @@ -0,0 +1,36 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://2ojf62uk562d" +path="res://.godot/imported/DotGothic16-Regular.ttf-92ac4d0db6d294ec4cf5b81c268c64a1.fontdata" + +[deps] + +source_file="res://Assets/Fonts/DotGothic16-Regular.ttf" +dest_files=["res://.godot/imported/DotGothic16-Regular.ttf-92ac4d0db6d294ec4cf5b81c268c64a1.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +modulate_color_glyphs=false +hinting=1 +subpixel_positioning=4 +keep_rounding_remainders=true +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/Assets/Sprites/Environments/broken_altar.png b/Assets/Sprites/Environments/broken_altar.png new file mode 100644 index 0000000..1481ce4 Binary files /dev/null and b/Assets/Sprites/Environments/broken_altar.png differ diff --git a/Assets/Sprites/Environments/broken_altar.png.import b/Assets/Sprites/Environments/broken_altar.png.import new file mode 100644 index 0000000..e2bf640 --- /dev/null +++ b/Assets/Sprites/Environments/broken_altar.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://hf1ut501rt4v" +path="res://.godot/imported/broken_altar.png-ac1e9a4b12f5fd9cb18c47dbc3f28b59.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Sprites/Environments/broken_altar.png" +dest_files=["res://.godot/imported/broken_altar.png-ac1e9a4b12f5fd9cb18c47dbc3f28b59.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/Assets/Sprites/Environments/fallen_sakura.png b/Assets/Sprites/Environments/fallen_sakura.png new file mode 100644 index 0000000..509371b Binary files /dev/null and b/Assets/Sprites/Environments/fallen_sakura.png differ diff --git a/Assets/Sprites/Environments/fallen_sakura.png.import b/Assets/Sprites/Environments/fallen_sakura.png.import new file mode 100644 index 0000000..f1fb2f4 --- /dev/null +++ b/Assets/Sprites/Environments/fallen_sakura.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ck5ielqswiswh" +path="res://.godot/imported/fallen_sakura.png-49dd82ec9ef0f5015b6af3d21426b290.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Sprites/Environments/fallen_sakura.png" +dest_files=["res://.godot/imported/fallen_sakura.png-49dd82ec9ef0f5015b6af3d21426b290.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/Assets/Sprites/UI/Score.png b/Assets/Sprites/UI/Score.png new file mode 100644 index 0000000..146f3f7 Binary files /dev/null and b/Assets/Sprites/UI/Score.png differ diff --git a/Assets/Sprites/UI/Score.png.import b/Assets/Sprites/UI/Score.png.import new file mode 100644 index 0000000..d3bf538 --- /dev/null +++ b/Assets/Sprites/UI/Score.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cdaoxfxcl87xq" +path="res://.godot/imported/Score.png-4b6ce1605dd92d5517aea3e710ce9d87.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Sprites/UI/Score.png" +dest_files=["res://.godot/imported/Score.png-4b6ce1605dd92d5517aea3e710ce9d87.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/Assets/Sprites/UI/button.png b/Assets/Sprites/UI/button.png new file mode 100644 index 0000000..682b32a Binary files /dev/null and b/Assets/Sprites/UI/button.png differ diff --git a/Assets/Sprites/UI/button.png.import b/Assets/Sprites/UI/button.png.import new file mode 100644 index 0000000..baaab9c --- /dev/null +++ b/Assets/Sprites/UI/button.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dudgvn6o3ex" +path="res://.godot/imported/button.png-f5f55c2001b987774ec6d685edf0f92a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Sprites/UI/button.png" +dest_files=["res://.godot/imported/button.png-f5f55c2001b987774ec6d685edf0f92a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/Assets/Sprites/UI/logokg.png b/Assets/Sprites/UI/logokg.png new file mode 100644 index 0000000..61406c1 Binary files /dev/null and b/Assets/Sprites/UI/logokg.png differ diff --git a/Assets/Sprites/UI/logokg.png.import b/Assets/Sprites/UI/logokg.png.import new file mode 100644 index 0000000..cc1edc8 --- /dev/null +++ b/Assets/Sprites/UI/logokg.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bb6vffiwr24cs" +path="res://.godot/imported/logokg.png-bc4c8e63d119897cd743f8183203506c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Sprites/UI/logokg.png" +dest_files=["res://.godot/imported/logokg.png-bc4c8e63d119897cd743f8183203506c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/Assets/Sprites/UI/panel.png b/Assets/Sprites/UI/panel.png new file mode 100644 index 0000000..7646c37 Binary files /dev/null and b/Assets/Sprites/UI/panel.png differ diff --git a/Assets/Sprites/UI/panel.png.import b/Assets/Sprites/UI/panel.png.import new file mode 100644 index 0000000..e127256 --- /dev/null +++ b/Assets/Sprites/UI/panel.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cd08robnbvjxx" +path="res://.godot/imported/panel.png-8a90e05fb516d863b9a2b3cfffa3ac71.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Sprites/UI/panel.png" +dest_files=["res://.godot/imported/panel.png-8a90e05fb516d863b9a2b3cfffa3ac71.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/Prefabs/Turrets/kitsune.tscn b/Prefabs/Turrets/kitsune.tscn index 4045490..a68ec21 100644 --- a/Prefabs/Turrets/kitsune.tscn +++ b/Prefabs/Turrets/kitsune.tscn @@ -1,11 +1,16 @@ -[gd_scene load_steps=18 format=3 uid="uid://cx7gr555b1gov"] +[gd_scene load_steps=26 format=3 uid="uid://cx7gr555b1gov"] [ext_resource type="Texture2D" uid="uid://be7hl01iuo5af" path="res://Assets/Sprites/Characters/Player/kitsune-Sheet.png" id="1_0bpay"] [ext_resource type="Script" uid="uid://cxrhl65cjw4yr" path="res://Scripts/Turrets/Turret.cs" id="2_jjtgc"] [ext_resource type="Script" uid="uid://cy00plvsi6vkn" path="res://Scripts/Projectiles/ProjectilePool.cs" id="3_d0rgn"] [ext_resource type="PackedScene" uid="uid://wucwxtp1w12q" path="res://Prefabs/Projectiles/Blueflame.tscn" id="4_jjtgc"] [ext_resource type="Script" uid="uid://bpqof3jshxnug" path="res://Scripts/Turrets/DragMover.cs" id="5_d0rgn"] +[ext_resource type="Script" uid="uid://qf0qrqg0l7np" path="res://Scripts/Turrets/TurretUpgrader.cs" id="6_0ocyc"] [ext_resource type="AudioStream" uid="uid://dt18fd3icyuxu" path="res://Assets/Sounds/Sfx/kitsune.wav" id="6_cnydl"] +[ext_resource type="Texture2D" uid="uid://b2wa0rqssefiy" path="res://Assets/Sprites/UI/soul.png" id="8_ftmsq"] +[ext_resource type="FontFile" uid="uid://b8lsp07ucxq6p" path="res://Assets/Fonts/MintsodaLimeGreen13X16Regular-KVvzA.ttf" id="9_kt03c"] +[ext_resource type="Texture2D" uid="uid://bfclgdy7dusmg" path="res://Assets/Sprites/Projectiles/projectile_green-Sheet.png" id="10_c1di4"] +[ext_resource type="Texture2D" uid="uid://m77l7ej5ojn0" path="res://Assets/Sprites/Projectiles/flame_attack.png" id="11_odfq6"] [sub_resource type="AtlasTexture" id="AtlasTexture_3dryh"] atlas = ExtResource("1_0bpay") @@ -69,6 +74,20 @@ size = Vector2(32, 16) [sub_resource type="QuadMesh" id="QuadMesh_5wxv7"] size = Vector2(100, 100) +[sub_resource type="LabelSettings" id="LabelSettings_s4ciy"] +font = ExtResource("9_kt03c") +font_size = 22 +outline_size = 6 +outline_color = Color(0, 0, 0, 1) + +[sub_resource type="AtlasTexture" id="AtlasTexture_vail8"] +atlas = ExtResource("10_c1di4") +region = Rect2(0, 0, 16, 32) + +[sub_resource type="AtlasTexture" id="AtlasTexture_45wqr"] +atlas = ExtResource("11_odfq6") +region = Rect2(0, 0, 16, 32) + [node name="Turret" type="Node2D"] y_sort_enabled = true texture_filter = 1 @@ -103,6 +122,15 @@ DragArea = NodePath("../../DragCollider") CheckArea = NodePath("../../PlacementCollider") ShootArea = NodePath("../../ShootArea") +[node name="TurretUpgrader" type="Node" parent="Scripts" node_paths=PackedStringArray("_turret", "_clickArea", "_ui", "_costLabel", "_damageLabel", "_fireRateLabel")] +script = ExtResource("6_0ocyc") +_turret = NodePath("../Turret") +_clickArea = NodePath("../../DragCollider") +_ui = NodePath("../../Control") +_costLabel = NodePath("../../Control/TextureRect/Cost") +_damageLabel = NodePath("../../Control/TextureRect2/Dmg") +_fireRateLabel = NodePath("../../Control/TextureRect3/Rps") + [node name="ShootArea" type="Area2D" parent="."] collision_layer = 0 collision_mask = 4 @@ -136,3 +164,92 @@ mesh = SubResource("QuadMesh_5wxv7") [node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="."] stream = ExtResource("6_cnydl") volume_db = -20.0 + +[node name="Control" type="Control" parent="."] +visible = false +layout_mode = 3 +anchors_preset = 0 +offset_left = -64.0 +offset_top = -56.0 +offset_right = -24.0 +offset_bottom = -16.0 +scale = Vector2(0.5, 0.5) + +[node name="TextureRect" type="TextureRect" parent="Control"] +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0 +texture = ExtResource("8_ftmsq") + +[node name="Cost" type="Label" parent="Control/TextureRect"] +layout_mode = 0 +offset_left = 40.0 +offset_top = 12.0 +offset_right = 81.0 +offset_bottom = 38.0 +text = "999" +label_settings = SubResource("LabelSettings_s4ciy") + +[node name="Label2" type="Label" parent="Control/TextureRect"] +layout_mode = 0 +offset_left = 4.0 +offset_top = 20.0 +offset_right = 58.0 +offset_bottom = 46.0 +scale = Vector2(0.56, 0.56) +text = "Cost" +label_settings = SubResource("LabelSettings_s4ciy") + +[node name="TextureRect2" type="TextureRect" parent="Control"] +layout_mode = 0 +offset_left = 80.0 +offset_right = 120.0 +offset_bottom = 40.0 +texture = SubResource("AtlasTexture_vail8") +stretch_mode = 5 + +[node name="Dmg" type="Label" parent="Control/TextureRect2"] +layout_mode = 0 +offset_left = 40.0 +offset_top = 12.0 +offset_right = 81.0 +offset_bottom = 38.0 +text = "999" +label_settings = SubResource("LabelSettings_s4ciy") + +[node name="Label2" type="Label" parent="Control/TextureRect2"] +layout_mode = 0 +offset_left = 4.0 +offset_top = 20.0 +offset_right = 58.0 +offset_bottom = 46.0 +scale = Vector2(0.56, 0.56) +text = "DMG" +label_settings = SubResource("LabelSettings_s4ciy") + +[node name="TextureRect3" type="TextureRect" parent="Control"] +layout_mode = 0 +offset_left = 160.0 +offset_right = 200.0 +offset_bottom = 40.0 +texture = SubResource("AtlasTexture_45wqr") +stretch_mode = 5 + +[node name="Rps" type="Label" parent="Control/TextureRect3"] +layout_mode = 0 +offset_left = 40.0 +offset_top = 12.0 +offset_right = 81.0 +offset_bottom = 38.0 +text = "999" +label_settings = SubResource("LabelSettings_s4ciy") + +[node name="Label2" type="Label" parent="Control/TextureRect3"] +layout_mode = 0 +offset_left = 8.0 +offset_top = 20.0 +offset_right = 62.0 +offset_bottom = 46.0 +scale = Vector2(0.56, 0.56) +text = "RPS" +label_settings = SubResource("LabelSettings_s4ciy") diff --git a/Prefabs/Turrets/oni.tscn b/Prefabs/Turrets/oni.tscn index b90536f..0ee24aa 100644 --- a/Prefabs/Turrets/oni.tscn +++ b/Prefabs/Turrets/oni.tscn @@ -1,11 +1,16 @@ -[gd_scene load_steps=18 format=3 uid="uid://8fsvnmto0ckj"] +[gd_scene load_steps=26 format=3 uid="uid://8fsvnmto0ckj"] [ext_resource type="Texture2D" uid="uid://c6dl0tlkdtis1" path="res://Assets/Sprites/Characters/Player/oniSheet.png" id="1_rg6xk"] [ext_resource type="Script" uid="uid://cxrhl65cjw4yr" path="res://Scripts/Turrets/Turret.cs" id="2_hi1ge"] [ext_resource type="Script" uid="uid://cy00plvsi6vkn" path="res://Scripts/Projectiles/ProjectilePool.cs" id="3_if52b"] [ext_resource type="PackedScene" uid="uid://deud430j2w18n" path="res://Prefabs/Projectiles/GreenFist.tscn" id="4_rg6xk"] [ext_resource type="Script" uid="uid://bpqof3jshxnug" path="res://Scripts/Turrets/DragMover.cs" id="5_hi1ge"] +[ext_resource type="Script" uid="uid://qf0qrqg0l7np" path="res://Scripts/Turrets/TurretUpgrader.cs" id="6_6qlhu"] [ext_resource type="AudioStream" uid="uid://ce5vqm3tts58o" path="res://Assets/Sounds/Sfx/oni.wav" id="6_if52b"] +[ext_resource type="Texture2D" uid="uid://b2wa0rqssefiy" path="res://Assets/Sprites/UI/soul.png" id="7_ahiq0"] +[ext_resource type="FontFile" uid="uid://b8lsp07ucxq6p" path="res://Assets/Fonts/MintsodaLimeGreen13X16Regular-KVvzA.ttf" id="8_6qlhu"] +[ext_resource type="Texture2D" uid="uid://bfclgdy7dusmg" path="res://Assets/Sprites/Projectiles/projectile_green-Sheet.png" id="9_kidxu"] +[ext_resource type="Texture2D" uid="uid://m77l7ej5ojn0" path="res://Assets/Sprites/Projectiles/flame_attack.png" id="10_v2c4g"] [sub_resource type="AtlasTexture" id="AtlasTexture_hi1ge"] atlas = ExtResource("1_rg6xk") @@ -69,6 +74,20 @@ size = Vector2(100, 100) [sub_resource type="RectangleShape2D" id="RectangleShape2D_rg6xk"] size = Vector2(32, 16) +[sub_resource type="LabelSettings" id="LabelSettings_nmwuw"] +font = ExtResource("8_6qlhu") +font_size = 22 +outline_size = 6 +outline_color = Color(0, 0, 0, 1) + +[sub_resource type="AtlasTexture" id="AtlasTexture_70y4k"] +atlas = ExtResource("9_kidxu") +region = Rect2(0, 0, 16, 32) + +[sub_resource type="AtlasTexture" id="AtlasTexture_n6aa7"] +atlas = ExtResource("10_v2c4g") +region = Rect2(0, 0, 16, 32) + [node name="Turret" type="Node2D"] y_sort_enabled = true texture_filter = 1 @@ -103,6 +122,15 @@ DragArea = NodePath("../../DragCollider") CheckArea = NodePath("../../PlacementCollider") ShootArea = NodePath("../../ShootArea") +[node name="TurretUpgrader" type="Node" parent="Scripts" node_paths=PackedStringArray("_turret", "_clickArea", "_ui", "_costLabel", "_damageLabel", "_fireRateLabel")] +script = ExtResource("6_6qlhu") +_turret = NodePath("../Turret") +_clickArea = NodePath("../../DragCollider") +_ui = NodePath("../../Control") +_costLabel = NodePath("../../Control/TextureRect/Cost") +_damageLabel = NodePath("../../Control/TextureRect2/Dmg") +_fireRateLabel = NodePath("../../Control/TextureRect3/Rps") + [node name="ShootArea" type="Area2D" parent="."] collision_layer = 0 collision_mask = 4 @@ -134,3 +162,92 @@ shape = SubResource("RectangleShape2D_rg6xk") [node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="."] stream = ExtResource("6_if52b") volume_db = -20.0 + +[node name="Control" type="Control" parent="."] +visible = false +layout_mode = 3 +anchors_preset = 0 +offset_left = -64.0 +offset_top = -56.0 +offset_right = -24.0 +offset_bottom = -16.0 +scale = Vector2(0.5, 0.5) + +[node name="TextureRect" type="TextureRect" parent="Control"] +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0 +texture = ExtResource("7_ahiq0") + +[node name="Cost" type="Label" parent="Control/TextureRect"] +layout_mode = 0 +offset_left = 40.0 +offset_top = 12.0 +offset_right = 81.0 +offset_bottom = 38.0 +text = "999" +label_settings = SubResource("LabelSettings_nmwuw") + +[node name="Label2" type="Label" parent="Control/TextureRect"] +layout_mode = 0 +offset_left = 4.0 +offset_top = 20.0 +offset_right = 58.0 +offset_bottom = 46.0 +scale = Vector2(0.56, 0.56) +text = "Cost" +label_settings = SubResource("LabelSettings_nmwuw") + +[node name="TextureRect2" type="TextureRect" parent="Control"] +layout_mode = 0 +offset_left = 80.0 +offset_right = 120.0 +offset_bottom = 40.0 +texture = SubResource("AtlasTexture_70y4k") +stretch_mode = 5 + +[node name="Dmg" type="Label" parent="Control/TextureRect2"] +layout_mode = 0 +offset_left = 40.0 +offset_top = 12.0 +offset_right = 81.0 +offset_bottom = 38.0 +text = "999" +label_settings = SubResource("LabelSettings_nmwuw") + +[node name="Label2" type="Label" parent="Control/TextureRect2"] +layout_mode = 0 +offset_left = 4.0 +offset_top = 20.0 +offset_right = 58.0 +offset_bottom = 46.0 +scale = Vector2(0.56, 0.56) +text = "DMG" +label_settings = SubResource("LabelSettings_nmwuw") + +[node name="TextureRect3" type="TextureRect" parent="Control"] +layout_mode = 0 +offset_left = 160.0 +offset_right = 200.0 +offset_bottom = 40.0 +texture = SubResource("AtlasTexture_n6aa7") +stretch_mode = 5 + +[node name="Rps" type="Label" parent="Control/TextureRect3"] +layout_mode = 0 +offset_left = 40.0 +offset_top = 12.0 +offset_right = 81.0 +offset_bottom = 38.0 +text = "999" +label_settings = SubResource("LabelSettings_nmwuw") + +[node name="Label2" type="Label" parent="Control/TextureRect3"] +layout_mode = 0 +offset_left = 8.0 +offset_top = 20.0 +offset_right = 62.0 +offset_bottom = 46.0 +scale = Vector2(0.56, 0.56) +text = "RPS" +label_settings = SubResource("LabelSettings_nmwuw") diff --git a/Prefabs/Turrets/tengu.tscn b/Prefabs/Turrets/tengu.tscn index 82719ea..efe872f 100644 --- a/Prefabs/Turrets/tengu.tscn +++ b/Prefabs/Turrets/tengu.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=18 format=3 uid="uid://cthdcnxhbyad2"] +[gd_scene load_steps=26 format=3 uid="uid://cthdcnxhbyad2"] [ext_resource type="Texture2D" uid="uid://codbtra5i6ara" path="res://Assets/Sprites/Characters/Player/tengu-Sheet.png" id="1_3e4v5"] [ext_resource type="Script" uid="uid://cxrhl65cjw4yr" path="res://Scripts/Turrets/Turret.cs" id="2_ahbvo"] @@ -6,6 +6,11 @@ [ext_resource type="PackedScene" uid="uid://cr6shokga0dy6" path="res://Prefabs/Projectiles/Fireball.tscn" id="4_mtyrr"] [ext_resource type="Script" uid="uid://bpqof3jshxnug" path="res://Scripts/Turrets/DragMover.cs" id="5_ahbvo"] [ext_resource type="AudioStream" uid="uid://wvrhsssfi7w3" path="res://Assets/Sounds/Sfx/tengu.wav" id="6_466qr"] +[ext_resource type="Script" uid="uid://qf0qrqg0l7np" path="res://Scripts/Turrets/TurretUpgrader.cs" id="6_i8ey8"] +[ext_resource type="Texture2D" uid="uid://b2wa0rqssefiy" path="res://Assets/Sprites/UI/soul.png" id="7_u8dw0"] +[ext_resource type="FontFile" uid="uid://b8lsp07ucxq6p" path="res://Assets/Fonts/MintsodaLimeGreen13X16Regular-KVvzA.ttf" id="8_i8ey8"] +[ext_resource type="Texture2D" uid="uid://bfclgdy7dusmg" path="res://Assets/Sprites/Projectiles/projectile_green-Sheet.png" id="9_sh1pr"] +[ext_resource type="Texture2D" uid="uid://m77l7ej5ojn0" path="res://Assets/Sprites/Projectiles/flame_attack.png" id="10_2yn51"] [sub_resource type="AtlasTexture" id="AtlasTexture_ahbvo"] atlas = ExtResource("1_3e4v5") @@ -69,6 +74,20 @@ size = Vector2(100, 100) [sub_resource type="RectangleShape2D" id="RectangleShape2D_3e4v5"] size = Vector2(32, 16) +[sub_resource type="LabelSettings" id="LabelSettings_ubruh"] +font = ExtResource("8_i8ey8") +font_size = 22 +outline_size = 6 +outline_color = Color(0, 0, 0, 1) + +[sub_resource type="AtlasTexture" id="AtlasTexture_viipx"] +atlas = ExtResource("9_sh1pr") +region = Rect2(0, 0, 16, 32) + +[sub_resource type="AtlasTexture" id="AtlasTexture_0dq80"] +atlas = ExtResource("10_2yn51") +region = Rect2(0, 0, 16, 32) + [node name="Turret" type="Node2D"] y_sort_enabled = true texture_filter = 1 @@ -103,6 +122,15 @@ DragArea = NodePath("../../DragCollider") CheckArea = NodePath("../../PlacementCollider") ShootArea = NodePath("../../ShootArea") +[node name="TurretUpgrader" type="Node" parent="Scripts" node_paths=PackedStringArray("_turret", "_clickArea", "_ui", "_costLabel", "_damageLabel", "_fireRateLabel")] +script = ExtResource("6_i8ey8") +_turret = NodePath("../Turret") +_clickArea = NodePath("../../DragCollider") +_ui = NodePath("../../Control") +_costLabel = NodePath("../../Control/TextureRect/Cost") +_damageLabel = NodePath("../../Control/TextureRect2/Dmg") +_fireRateLabel = NodePath("../../Control/TextureRect3/Rps") + [node name="ShootArea" type="Area2D" parent="."] collision_layer = 0 collision_mask = 4 @@ -134,3 +162,92 @@ shape = SubResource("RectangleShape2D_3e4v5") [node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="."] stream = ExtResource("6_466qr") volume_db = -20.0 + +[node name="Control" type="Control" parent="."] +visible = false +layout_mode = 3 +anchors_preset = 0 +offset_left = -64.0 +offset_top = -56.0 +offset_right = -24.0 +offset_bottom = -16.0 +scale = Vector2(0.5, 0.5) + +[node name="TextureRect" type="TextureRect" parent="Control"] +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0 +texture = ExtResource("7_u8dw0") + +[node name="Cost" type="Label" parent="Control/TextureRect"] +layout_mode = 0 +offset_left = 40.0 +offset_top = 12.0 +offset_right = 81.0 +offset_bottom = 38.0 +text = "999" +label_settings = SubResource("LabelSettings_ubruh") + +[node name="Label2" type="Label" parent="Control/TextureRect"] +layout_mode = 0 +offset_left = 4.0 +offset_top = 20.0 +offset_right = 58.0 +offset_bottom = 46.0 +scale = Vector2(0.56, 0.56) +text = "Cost" +label_settings = SubResource("LabelSettings_ubruh") + +[node name="TextureRect2" type="TextureRect" parent="Control"] +layout_mode = 0 +offset_left = 80.0 +offset_right = 120.0 +offset_bottom = 40.0 +texture = SubResource("AtlasTexture_viipx") +stretch_mode = 5 + +[node name="Dmg" type="Label" parent="Control/TextureRect2"] +layout_mode = 0 +offset_left = 40.0 +offset_top = 12.0 +offset_right = 81.0 +offset_bottom = 38.0 +text = "999" +label_settings = SubResource("LabelSettings_ubruh") + +[node name="Label2" type="Label" parent="Control/TextureRect2"] +layout_mode = 0 +offset_left = 4.0 +offset_top = 20.0 +offset_right = 58.0 +offset_bottom = 46.0 +scale = Vector2(0.56, 0.56) +text = "DMG" +label_settings = SubResource("LabelSettings_ubruh") + +[node name="TextureRect3" type="TextureRect" parent="Control"] +layout_mode = 0 +offset_left = 160.0 +offset_right = 200.0 +offset_bottom = 40.0 +texture = SubResource("AtlasTexture_0dq80") +stretch_mode = 5 + +[node name="Rps" type="Label" parent="Control/TextureRect3"] +layout_mode = 0 +offset_left = 40.0 +offset_top = 12.0 +offset_right = 81.0 +offset_bottom = 38.0 +text = "999" +label_settings = SubResource("LabelSettings_ubruh") + +[node name="Label2" type="Label" parent="Control/TextureRect3"] +layout_mode = 0 +offset_left = 8.0 +offset_top = 20.0 +offset_right = 62.0 +offset_bottom = 46.0 +scale = Vector2(0.56, 0.56) +text = "RPS" +label_settings = SubResource("LabelSettings_ubruh") diff --git a/Resources/endenvironmentSettings.tres b/Resources/endenvironmentSettings.tres new file mode 100644 index 0000000..7a096e9 --- /dev/null +++ b/Resources/endenvironmentSettings.tres @@ -0,0 +1,8 @@ +[gd_resource type="Environment" format=3 uid="uid://8npqvmcbfysk"] + +[resource] +background_mode = 3 +background_color = Color(0.1254902, 0.1254902, 0.1254902, 1) +ambient_light_color = Color(0.1254902, 0.1254902, 0.1254902, 1) +glow_enabled = true +glow_blend_mode = 1 diff --git a/Scenes/bootstrapper.tscn b/Scenes/bootstrapper.tscn new file mode 100644 index 0000000..d23eee8 --- /dev/null +++ b/Scenes/bootstrapper.tscn @@ -0,0 +1,44 @@ +[gd_scene load_steps=6 format=3 uid="uid://ddoe833kg11n5"] + +[ext_resource type="AudioStream" uid="uid://dbsuw8omrcx1d" path="res://Assets/Sounds/Music/8bit-mysterious-kyouto_reverb_Loop.ogg" id="1_5ast2"] +[ext_resource type="Script" uid="uid://bmdb22du7uvr1" path="res://Scripts/Common/SceneManager.cs" id="2_uy6xw"] +[ext_resource type="PackedScene" uid="uid://csyk43kt3xbyx" path="res://Scenes/game.tscn" id="3_4cwpi"] +[ext_resource type="PackedScene" uid="uid://cof1iapx258cw" path="res://Scenes/menu.tscn" id="4_a4hfx"] +[ext_resource type="PackedScene" uid="uid://c1n63k05rq5g4" path="res://Scenes/endscreen.tscn" id="5_6st05"] + +[node name="Root" type="Node2D"] + +[node name="MusicPLayer" type="AudioStreamPlayer" parent="."] +process_mode = 3 +stream = ExtResource("1_5ast2") +volume_db = -30.0 +autoplay = true +parameters/looping = true + +[node name="SceneManager" type="Node" parent="." node_paths=PackedStringArray("_root")] +process_mode = 3 +script = ExtResource("2_uy6xw") +_root = NodePath("..") +_gameScene = ExtResource("3_4cwpi") +_menuScene = ExtResource("4_a4hfx") +_endScene = ExtResource("5_6st05") + +[node name="CanvasLayer" type="CanvasLayer" parent="."] +process_mode = 3 +layer = 6767 +visible = false + +[node name="ColorRect" type="ColorRect" parent="CanvasLayer"] +custom_minimum_size = Vector2(1, 1) +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -4999.5 +offset_top = -4999.5 +offset_right = 4999.5 +offset_bottom = 4999.5 +grow_horizontal = 2 +grow_vertical = 2 +color = Color(0, 0, 0, 1) diff --git a/Scenes/endscreen.tscn b/Scenes/endscreen.tscn new file mode 100644 index 0000000..edb6585 --- /dev/null +++ b/Scenes/endscreen.tscn @@ -0,0 +1,192 @@ +[gd_scene load_steps=13 format=4 uid="uid://c1n63k05rq5g4"] + +[ext_resource type="TileSet" uid="uid://b15j7vhkfu415" path="res://Resources/environmentTileMap.tres" id="1_hcuwu"] +[ext_resource type="Texture2D" uid="uid://ck5ielqswiswh" path="res://Assets/Sprites/Environments/fallen_sakura.png" id="2_6njhj"] +[ext_resource type="Texture2D" uid="uid://hf1ut501rt4v" path="res://Assets/Sprites/Environments/broken_altar.png" id="3_6njhj"] +[ext_resource type="FontFile" uid="uid://2ojf62uk562d" path="res://Assets/Fonts/DotGothic16-Regular.ttf" id="4_qp57f"] +[ext_resource type="Texture2D" uid="uid://dudgvn6o3ex" path="res://Assets/Sprites/UI/button.png" id="5_gna3x"] +[ext_resource type="FontFile" uid="uid://b8lsp07ucxq6p" path="res://Assets/Fonts/MintsodaLimeGreen13X16Regular-KVvzA.ttf" id="5_hcuwu"] +[ext_resource type="Script" uid="uid://bsmpt1ig823du" path="res://Scripts/UI/SceneChangerBtn.cs" id="7_crwea"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_16726"] +size = Vector2(19, 11) + +[sub_resource type="Environment" id="Environment_6njhj"] +background_mode = 3 +ssr_fade_in = 0.03498875 +glow_enabled = true +glow_intensity = 1.0 +glow_strength = 0.7 +glow_blend_mode = 0 +glow_hdr_scale = 0.0 +fog_light_energy = 4.7 +fog_sun_scatter = 5.5 +fog_sky_affect = 0.0 +fog_height = -898.42 +fog_height_density = 0.07 +adjustment_enabled = true +adjustment_brightness = 0.75 +adjustment_contrast = 1.1 + +[sub_resource type="LabelSettings" id="LabelSettings_gna3x"] +font = ExtResource("4_qp57f") +font_size = 128 +font_color = Color(0.8784314, 0.08627451, 0, 1) + +[sub_resource type="LabelSettings" id="LabelSettings_crwea"] +font = ExtResource("5_hcuwu") +font_size = 18 +font_color = Color(0.8784314, 0.08627451, 0, 1) +outline_size = 2 +outline_color = Color(0, 0, 0, 1) + +[sub_resource type="LabelSettings" id="LabelSettings_hcuwu"] +font = ExtResource("4_qp57f") +font_size = 36 + +[node name="Endscreen" type="Node2D"] +texture_filter = 1 + +[node name="Level" type="Node2D" parent="."] +position = Vector2(-8, -8) + +[node name="Upper" type="TileMapLayer" parent="Level"] +tile_map_data = PackedByteArray("AAAAAP//AAABAAEAAAD/////AAABAAEAAAD//wAAAAAIAAAAAAAAAAAAAAABAAEAAAABAP7/AAABAAEAAAAAAP7/AAABAAEAAAD///7/AAAIAAAAABD+/wAAAAABAAEAAAD+//7/AAABAAEAAAD9////AAABAAEAAAD9/wAAAAABAAEAAAD9/wEAAAABAAEAAAD9/wIAAAABAAEAAAD+/wIAAAABAAEAAAD//wIAAAABAAEAAAAAAAIAAAABAAEAAAABAAEAAAAJAAAAAAABAAAAAAABAAEAAAABAP//AAABAAEAAAD//wEAAAABAAEAAAAAAAEAAAABAAEAAAABAAIAAAABAAEAAAABAAMAAAABAAEAAAACAAMAAAABAAEAAAACAAIAAAABAAEAAAADAAIAAAABAAEAAAADAAEAAAABAAEAAAACAAEAAAABAAEAAAACAAAAAAABAAEAAAACAP//AAAJAAAAABACAP7/AAABAAEAAAD+/wEAAAABAAEAAAAAAAMAAAABAAEAAAD//wMAAAABAAEAAAD+/wMAAAABAAEAAAD9/wMAAAABAAEAAAD8/wMAAAABAAEAAAD8/wIAAAABAAEAAAD8/wEAAAABAAEAAAD8/wAAAAABAAEAAAD8////AAABAAEAAAD8//7/AAABAAEAAAD9//7/AAABAAEAAAD9//3/AAABAAEAAAD+//3/AAABAAEAAAD///3/AAABAAEAAAAAAP3/AAABAAEAAAABAP3/AAABAAEAAAACAP3/AAABAAEAAAADAP7/AAAJAAAAAAADAAAAAAAHAAAAABADAAMAAAABAAEAAAADAP3/AAABAAEAAAD8//3/AAABAAEAAAD8/wQAAAABAAEAAAD9/wQAAAABAAEAAAD+/wQAAAABAAEAAAD//wQAAAABAAEAAAAAAAQAAAABAAEAAAABAAQAAAABAAEAAAACAAQAAAABAAEAAAADAAQAAAABAAEAAAADAAUAAAABAAEAAAACAAUAAAABAAEAAAABAAUAAAABAAEAAAAAAAUAAAABAAEAAAD//wUAAAABAAEAAAD+/wUAAAABAAEAAAD9/wUAAAABAAEAAAD8/wUAAAABAAEAAAD8//z/AAABAAEAAAD9//z/AAABAAEAAAD+//z/AAABAAEAAAD///z/AAABAAEAAAAAAPz/AAABAAEAAAABAPz/AAABAAEAAAACAPz/AAABAAEAAAADAPz/AAABAAEAAAAEAPz/AAABAAEAAAAEAP3/AAABAAEAAAAEAP7/AAABAAEAAAAEAP//AAABAAEAAAAEAAAAAAABAAEAAAAEAAEAAAABAAEAAAAEAAIAAAABAAEAAAAEAAMAAAABAAEAAAAEAAQAAAABAAEAAAAEAAUAAAABAAEAAAD7/wQAAAABAAEAAAD7/wUAAAABAAEAAAD7/wMAAAABAAEAAAD7/wIAAAABAAEAAAD7/wEAAAABAAEAAAD7/wAAAAABAAEAAAD7////AAABAAEAAAD7//7/AAABAAEAAAD7//3/AAABAAEAAAAFAP3/AAABAAEAAAAFAP7/AAABAAEAAAAFAP//AAABAAEAAAAFAAAAAAABAAEAAAAFAAEAAAABAAEAAAAFAAIAAAABAAEAAAAFAAMAAAABAAEAAAAFAAQAAAABAAEAAAAFAAUAAAABAAEAAAD6/wUAAAABAAEAAAD6/wQAAAABAAEAAAD6/wMAAAABAAEAAAD6/wIAAAABAAEAAAD6/wEAAAABAAEAAAD6/wAAAAABAAEAAAD6////AAABAAEAAAD6//7/AAABAAEAAAD6//3/AAABAAEAAAD6//z/AAABAAEAAAD6//v/AAABAAEAAAD7//v/AAABAAEAAAD8//v/AAABAAEAAAD9//v/AAABAAEAAAD+//v/AAABAAEAAAD///v/AAABAAEAAAAAAPv/AAABAAEAAAABAPv/AAABAAEAAAACAPv/AAABAAEAAAADAPv/AAABAAEAAAAGAPv/AAABAAEAAAAGAP3/AAABAAEAAAAGAP7/AAABAAEAAAAGAP//AAABAAEAAAAGAAAAAAABAAEAAAAGAAEAAAABAAEAAAAGAAIAAAABAAEAAAAGAAMAAAABAAEAAAAHAAMAAAABAAEAAAAHAAQAAAABAAEAAAAGAAQAAAABAAEAAAAGAAUAAAABAAEAAAAHAAUAAAABAAEAAAAHAAIAAAABAAEAAAAHAAEAAAABAAEAAAAHAAAAAAABAAEAAAAHAP//AAABAAEAAAAHAP7/AAABAAEAAAAHAPv/AAABAAEAAAAHAPr/AAABAAEAAAAGAPr/AAABAAEAAAACAPr/AAABAAEAAAABAPr/AAABAAEAAAAAAPr/AAABAAEAAAD///r/AAABAAEAAAD+//r/AAABAAEAAAD9//r/AAABAAEAAAD8//r/AAABAAEAAAD7//r/AAABAAEAAAD6//r/AAABAAEAAAD5//r/AAABAAEAAAD4//r/AAABAAEAAAD4//v/AAABAAEAAAD5//v/AAABAAEAAAD5//z/AAABAAEAAAD5//3/AAABAAEAAAD5//7/AAABAAEAAAD5////AAABAAEAAAD4////AAABAAEAAAD4/wAAAAABAAEAAAD4/wEAAAABAAEAAAD4/wIAAAABAAEAAAD4/wMAAAABAAEAAAD4/wQAAAABAAEAAAD4/wUAAAABAAEAAAD5/wUAAAABAAEAAAD5/wQAAAABAAEAAAD5/wMAAAABAAEAAAD5/wIAAAABAAEAAAD5/wEAAAABAAEAAAD4//z/AAABAAEAAAD4//3/AAABAAEAAAD4//7/AAABAAEAAAD5/wAAAAABAAEAAAD4/wYAAAABAAEAAAD5/wcAAAABAAEAAAD5/wgAAAABAAEAAAD6/wkAAAABAAEAAAD4/wcAAAABAAEAAAD4/wgAAAABAAEAAAD4/wkAAAAFAAAAAAD5/wkAAAABAAEAAAD6/wgAAAABAAEAAAD5/wYAAAABAAEAAAD6/wYAAAABAAEAAAD6/wcAAAABAAEAAAD7/wYAAAABAAEAAAD7/wcAAAABAAEAAAD7/wgAAAABAAEAAAD7/wkAAAABAAEAAAD8/wYAAAABAAEAAAD8/wcAAAABAAEAAAD8/wgAAAABAAEAAAD8/wkAAAABAAEAAAD9/wYAAAABAAEAAAD9/wcAAAABAAEAAAD9/wgAAAABAAEAAAD9/wkAAAABAAEAAAD+/wYAAAABAAEAAAD+/wcAAAABAAEAAAD+/wgAAAABAAEAAAD+/wkAAAABAAEAAAD//wYAAAABAAEAAAD//wcAAAABAAEAAAD//wgAAAABAAEAAAD//wkAAAABAAEAAAAAAAYAAAABAAEAAAAAAAcAAAABAAEAAAAAAAgAAAABAAEAAAAAAAkAAAABAAEAAAABAAYAAAABAAEAAAABAAcAAAABAAEAAAABAAgAAAABAAEAAAABAAkAAAABAAEAAAACAAYAAAABAAEAAAACAAcAAAABAAEAAAACAAgAAAABAAEAAAACAAkAAAABAAEAAAADAAYAAAABAAEAAAADAAcAAAABAAEAAAADAAgAAAABAAEAAAADAAkAAAABAAEAAAAEAAYAAAABAAEAAAAEAAcAAAABAAEAAAAEAAgAAAABAAEAAAAEAAkAAAABAAEAAAAFAAYAAAABAAEAAAAFAAcAAAABAAEAAAAGAAYAAAABAAEAAAAGAAcAAAABAAEAAAAHAAYAAAABAAEAAAAIAPr/AAABAAEAAAAIAPv/AAABAAEAAAAIAP7/AAABAAEAAAAIAP//AAABAAEAAAAIAAAAAAABAAEAAAAIAAEAAAABAAEAAAAIAAIAAAABAAEAAAAIAAMAAAABAAEAAAAIAAQAAAABAAEAAAAIAAUAAAABAAEAAAAIAAYAAAABAAEAAAAIAAkAAAABAAIAAAAJAPr/AAABAAEAAAAJAPv/AAABAAEAAAAJAP7/AAACAAEAAAAJAP//AAADAAIAAAAJAAAAAAABAAEAAAAJAAEAAAABAAEAAAAJAAIAAAABAAEAAAAJAAMAAAADAAAAAAAJAAQAAAADAAEAAAAJAAUAAAADAAEAAAAJAAYAAAACAAEAAAAJAAgAAAADAAEAAAAJAAkAAAACAAIAAAAKAPr/AAADAAEAAAAKAPv/AAADAAEAAAD4//b/AAAAAAAAAAD4//f/AAAAAAEAAAD4//j/AAAFAAIAAAD4//n/AAABAAEAAAD5//b/AAABAAAAAAD5//f/AAABAAEAAAD5//j/AAABAAEAAAD5//n/AAABAAEAAAD6//b/AAABAAAAAAD6//f/AAABAAEAAAD6//j/AAABAAEAAAD6//n/AAABAAEAAAD7//b/AAAEAAIAAAD7//f/AAABAAEAAAD7//j/AAABAAEAAAD7//n/AAABAAEAAAD8//b/AAABAAAAAAD8//f/AAABAAEAAAD8//j/AAABAAEAAAD8//n/AAABAAEAAAD9//b/AAABAAAAAAD9//f/AAABAAEAAAD9//j/AAABAAEAAAD9//n/AAABAAEAAAD+//b/AAACAAAAAAD+//f/AAADAAIAAAD+//j/AAABAAEAAAD+//n/AAABAAEAAAD///j/AAABAAEAAAD///n/AAABAAEAAAAAAPj/AAABAAEAAAAAAPn/AAABAAEAAAABAPf/AAACAAAAAAABAPj/AAADAAIAAAABAPn/AAABAAEAAAACAPj/AAABAAAAAAACAPn/AAABAAEAAAADAPf/AAAAAAAAAAAEAPb/AAAAAAAAAAAEAPf/AAAFAAIAAAAEAPj/AAABAAEAAAAFAPb/AAAEAAIAAAAFAPf/AAABAAEAAAAFAPj/AAABAAEAAAAGAPb/AAABAAAAAAAGAPf/AAABAAEAAAAGAPj/AAABAAEAAAAGAPn/AAABAAEAAAAHAPb/AAABAAAAAAAHAPf/AAABAAEAAAAHAPj/AAABAAEAAAAHAPn/AAABAAEAAAAIAPb/AAACAAAAAAAIAPf/AAADAAIAAAAIAPj/AAABAAEAAAAIAPn/AAABAAEAAAAJAPf/AAACAAAAAAAJAPj/AAADAAEAAAAJAPn/AAADAAIAAAAKAPn/AAACAAAAAAD1//z/AAAAAAAAAAD1//3/AAAAAAEAAAD1//7/AAAFAAEAAAD1////AAAAAAIAAAD2//v/AAAAAAAAAAD2//z/AAAFAAIAAAD2//3/AAABAAEAAAD2//7/AAABAAEAAAD2////AAAFAAAAAAD2/wAAAAAFAAEAAAD2/wMAAAAAAAEAAAD2/wQAAAAAAAEAAAD2/wUAAAAFAAEAAAD2/wYAAAAFAAEAAAD2/wcAAAAFAAEAAAD2/wgAAAAAAAIAAAD3//j/AAAAAAAAAAD3//n/AAAAAAEAAAD3//r/AAAAAAEAAAD3//v/AAAFAAIAAAD3//z/AAABAAEAAAD3//3/AAABAAEAAAD3//7/AAABAAEAAAD3////AAABAAEAAAD3/wAAAAABAAEAAAD3/wEAAAABAAEAAAD3/wIAAAABAAEAAAD3/wMAAAABAAEAAAD3/wQAAAABAAEAAAD3/wUAAAABAAEAAAD3/wYAAAABAAEAAAD3/wcAAAABAAEAAAD3/wgAAAAFAAAAAAD3/wkAAAAAAAIAAAD4/woAAAAAAAIAAAD5/woAAAAEAAAAAAD6/woAAAAFAAAAAAD6/wsAAAAAAAIAAAD7/woAAAABAAEAAAD7/wsAAAAEAAAAAAD8/woAAAABAAEAAAD8/wsAAAAEAAAAAAD9/woAAAABAAEAAAD9/wsAAAABAAIAAAD+/woAAAABAAEAAAD+/wsAAAABAAIAAAD//woAAAADAAAAAAD//wsAAAACAAIAAAACAAoAAAAEAAAAAAADAAoAAAABAAIAAAAEAAoAAAABAAIAAAAGAAoAAAAEAAAAAAAHAAoAAAACAAIAAAD7//z/AAABAAEAAAAFAAoAAAABAAIAAAAFAAkAAAABAAEAAAAFAAgAAAABAAEAAAAGAAgAAAABAAEAAAAHAAgAAAABAAEAAAAHAAkAAAADAAAAAAAGAAkAAAABAAEAAAAIAAgAAAABAAEAAAAHAAcAAAABAAEAAAAIAAcAAAABAAEAAAAJAAcAAAADAAEAAAAKAP//AAACAAAAAAAKAAIAAAACAAEAAAAKAAMAAAACAAIAAAAHAP3/AAABAAEAAAAIAP3/AAABAAEAAAAJAP3/AAADAAAAAAAGAPz/AAABAAEAAAADAPj/AAAFAAIAAAADAPn/AAABAAEAAAAEAPn/AAABAAEAAAAFAPn/AAABAAEAAAAEAPr/AAABAAEAAAAFAPr/AAABAAEAAAAFAPv/AAABAAEAAAAHAPz/AAABAAEAAAAIAPz/AAABAAEAAAAKAP3/AAACAAIAAAAKAPz/AAACAAEAAAAJAPz/AAABAAEAAAAFAPz/AAABAAEAAAAEAPv/AAABAAEAAAADAPr/AAABAAEAAAD+////AAAJAAAAABA=") +tile_set = ExtResource("1_hcuwu") + +[node name="Lower" type="TileMapLayer" parent="Level"] +z_index = -1 +tile_map_data = PackedByteArray("AAD1/wcAAAABAAEAAAD2/wcAAAABAAEAAAD2/wgAAAABAAEAAAD1/wgAAAABAAEAAAD0/wgAAAABAAEAAAD0/wcAAAABAAEAAAD0/wYAAAABAAEAAAD1/wYAAAABAAEAAAD2/wkAAAABAAEAAAD1/wkAAAABAAEAAAD0/wkAAAABAAEAAAD3/wgAAAABAAEAAAD3/wkAAAABAAEAAAD3/wcAAAABAAEAAAD3/woAAAABAAEAAAD2/woAAAABAAEAAAD1/woAAAABAAEAAAD4/woAAAABAAEAAAD4/wsAAAABAAEAAAD3/wsAAAABAAEAAAD2/wsAAAABAAEAAAD4/wkAAAABAAEAAAD5/woAAAABAAEAAAD5/wsAAAABAAEAAAD5/wkAAAABAAEAAAD5/wwAAAABAAEAAAD4/wwAAAABAAEAAAD3/wwAAAABAAEAAAD6/wsAAAABAAEAAAD6/wwAAAABAAEAAAD6/woAAAABAAEAAAD7/wsAAAABAAEAAAD7/wwAAAABAAEAAAD7/woAAAABAAEAAAD8/wwAAAABAAEAAAD8/w0AAAABAAEAAAD7/w0AAAABAAEAAAD6/w0AAAABAAEAAAD8/wsAAAABAAEAAAD9/wwAAAABAAEAAAD9/w0AAAABAAEAAAD9/wsAAAABAAEAAAD+/wwAAAABAAEAAAD+/w0AAAABAAEAAAD+/wsAAAABAAEAAAD//wwAAAABAAEAAAD//w0AAAABAAEAAAD//wsAAAABAAEAAAD9/woAAAABAAEAAAD+/woAAAABAAEAAAD//woAAAABAAEAAAAAAAsAAAABAAEAAAAAAAwAAAABAAEAAAAAAAoAAAABAAEAAAABAAsAAAABAAEAAAABAAwAAAABAAEAAAABAAoAAAABAAEAAAD//wkAAAABAAEAAAAAAAkAAAABAAEAAAABAAkAAAABAAEAAAACAAoAAAABAAEAAAACAAsAAAABAAEAAAACAAkAAAABAAEAAAADAAoAAAABAAEAAAADAAsAAAABAAEAAAADAAkAAAABAAEAAAAEAAoAAAABAAEAAAAEAAsAAAABAAEAAAAEAAkAAAABAAEAAAAEAAwAAAABAAEAAAADAAwAAAABAAEAAAACAAwAAAABAAEAAAAFAAsAAAABAAEAAAAFAAwAAAABAAEAAAAFAAoAAAABAAEAAAAGAAsAAAABAAEAAAAGAAwAAAABAAEAAAAGAAoAAAABAAEAAAAHAAsAAAABAAEAAAAHAAwAAAABAAEAAAAHAAoAAAABAAEAAAAIAAsAAAABAAEAAAAIAAwAAAABAAEAAAAIAAoAAAABAAEAAAAGAAkAAAABAAEAAAAHAAkAAAABAAEAAAAIAAkAAAABAAEAAAAJAAoAAAABAAEAAAAJAAsAAAABAAEAAAAJAAkAAAABAAEAAAAKAAoAAAABAAEAAAAKAAsAAAABAAEAAAAKAAkAAAABAAEAAAAIAAgAAAABAAEAAAAJAAgAAAABAAEAAAAKAAgAAAABAAEAAAAIAAcAAAABAAEAAAAJAAcAAAABAAEAAAAKAAcAAAABAAEAAAALAAcAAAABAAEAAAALAAgAAAABAAEAAAAJAAYAAAABAAEAAAAKAAYAAAABAAEAAAALAAYAAAABAAEAAAAJAAUAAAABAAEAAAAKAAUAAAABAAEAAAALAAUAAAABAAEAAAAJAAQAAAABAAEAAAAKAAQAAAABAAEAAAALAAQAAAABAAEAAAAJAAMAAAABAAEAAAAKAAMAAAABAAEAAAALAAMAAAABAAEAAAAJAAIAAAABAAEAAAAKAAIAAAABAAEAAAALAAIAAAABAAEAAAAMAAMAAAABAAEAAAAMAAQAAAABAAEAAAAMAAIAAAABAAEAAAAKAAEAAAABAAEAAAALAAEAAAABAAEAAAAMAAEAAAABAAEAAAAJAAEAAAABAAEAAAAJAAAAAAABAAEAAAAKAAAAAAABAAEAAAALAAAAAAABAAEAAAAMAAAAAAABAAEAAAAKAP//AAABAAEAAAALAP//AAABAAEAAAAMAP//AAABAAEAAAAKAP7/AAABAAEAAAALAP7/AAABAAEAAAAMAP7/AAABAAEAAAAKAP3/AAABAAEAAAALAP3/AAABAAEAAAAMAP3/AAABAAEAAAAJAP//AAABAAEAAAAJAP7/AAABAAEAAAAJAP3/AAABAAEAAAAJAPz/AAABAAEAAAAKAPz/AAABAAEAAAALAPz/AAABAAEAAAANAP7/AAABAAEAAAANAP//AAABAAEAAAANAP3/AAABAAEAAAAMAPz/AAABAAEAAAANAPz/AAABAAEAAAALAPv/AAABAAEAAAAMAPv/AAABAAEAAAANAPv/AAABAAEAAAAKAPv/AAABAAEAAAAKAPr/AAABAAEAAAALAPr/AAABAAEAAAAMAPr/AAABAAEAAAAJAPv/AAABAAEAAAAJAPr/AAABAAEAAAAJAPn/AAABAAEAAAAKAPn/AAABAAEAAAALAPn/AAABAAEAAAAJAPj/AAABAAEAAAAKAPj/AAABAAEAAAALAPj/AAABAAEAAAAMAPn/AAABAAEAAAAMAPj/AAABAAEAAAAKAPf/AAABAAEAAAALAPf/AAABAAEAAAAMAPf/AAABAAEAAAAJAPf/AAABAAEAAAAJAPb/AAABAAEAAAAKAPb/AAABAAEAAAALAPb/AAABAAEAAAAIAPj/AAABAAEAAAAIAPf/AAABAAEAAAAIAPb/AAABAAEAAAAIAPX/AAABAAEAAAAJAPX/AAABAAEAAAAKAPX/AAABAAEAAAAHAPf/AAABAAEAAAAHAPb/AAABAAEAAAAHAPX/AAABAAEAAAAGAPf/AAABAAEAAAAGAPb/AAABAAEAAAAGAPX/AAABAAEAAAAFAPf/AAABAAEAAAAFAPb/AAABAAEAAAAFAPX/AAABAAEAAAAHAPj/AAABAAEAAAAGAPj/AAABAAEAAAAGAPT/AAABAAEAAAAHAPT/AAABAAEAAAAIAPT/AAABAAEAAAAFAPT/AAABAAEAAAAEAPb/AAABAAEAAAAEAPX/AAABAAEAAAAEAPT/AAABAAEAAAAEAPf/AAABAAEAAAADAPf/AAABAAEAAAADAPb/AAABAAEAAAADAPX/AAABAAEAAAAFAPj/AAABAAEAAAAEAPj/AAABAAEAAAADAPj/AAABAAEAAAACAPj/AAABAAEAAAACAPf/AAABAAEAAAACAPb/AAABAAEAAAABAPj/AAABAAEAAAABAPf/AAABAAEAAAABAPb/AAABAAEAAAAAAPj/AAABAAEAAAAAAPf/AAABAAEAAAAAAPb/AAABAAEAAAD///j/AAABAAEAAAD///f/AAABAAEAAAD///b/AAABAAEAAAD+//j/AAABAAEAAAD+//f/AAABAAEAAAD+//b/AAABAAEAAAD9//j/AAABAAEAAAD9//f/AAABAAEAAAD9//b/AAABAAEAAAD9//X/AAABAAEAAAD+//X/AAABAAEAAAD///X/AAABAAEAAAD8//f/AAABAAEAAAD8//b/AAABAAEAAAD8//X/AAABAAEAAAAAAPX/AAABAAEAAAABAPX/AAABAAEAAAACAPX/AAABAAEAAAD7//f/AAABAAEAAAD7//b/AAABAAEAAAD7//X/AAABAAEAAAD7//T/AAABAAEAAAD8//T/AAABAAEAAAD9//T/AAABAAEAAAD6//f/AAABAAEAAAD6//b/AAABAAEAAAD6//X/AAABAAEAAAD5//f/AAABAAEAAAD5//b/AAABAAEAAAD5//X/AAABAAEAAAD4//f/AAABAAEAAAD4//b/AAABAAEAAAD4//X/AAABAAEAAAD3//f/AAABAAEAAAD3//b/AAABAAEAAAD3//X/AAABAAEAAAD2//f/AAABAAEAAAD2//b/AAABAAEAAAD2//X/AAABAAEAAAD3//j/AAABAAEAAAD2//j/AAABAAEAAAD3//T/AAABAAEAAAD4//T/AAABAAEAAAD5//T/AAABAAEAAAD6//T/AAABAAEAAAD5//j/AAABAAEAAAD3//n/AAABAAEAAAD2//n/AAABAAEAAAD3//r/AAABAAEAAAD2//r/AAABAAEAAAD1//r/AAABAAEAAAD1//n/AAABAAEAAAD1//j/AAABAAEAAAD3//v/AAABAAEAAAD2//v/AAABAAEAAAD1//v/AAABAAEAAAD0//v/AAABAAEAAAD0//r/AAABAAEAAAD0//n/AAABAAEAAAD2//z/AAABAAEAAAD1//z/AAABAAEAAAD0//z/AAABAAEAAAD0//3/AAABAAEAAADz//3/AAABAAEAAADz//z/AAABAAEAAADz//v/AAABAAEAAAD1//7/AAABAAEAAAD0//7/AAABAAEAAADz//7/AAABAAEAAAD1////AAABAAEAAAD0////AAABAAEAAADz////AAABAAEAAAD2/wAAAAABAAEAAAD1/wAAAAABAAEAAAD0/wAAAAABAAEAAAD2/wEAAAABAAEAAAD1/wEAAAABAAEAAAD0/wEAAAABAAEAAAD2/wIAAAABAAEAAAD1/wIAAAABAAEAAAD2/wMAAAABAAEAAAD1/wMAAAABAAEAAAD1/wQAAAABAAEAAAD0/wQAAAABAAEAAAD0/wMAAAABAAEAAAD0/wIAAAABAAEAAAD1/wUAAAABAAEAAAD0/wUAAAABAAEAAADz/wYAAAABAAEAAADz/wUAAAABAAEAAADz/wQAAAABAAEAAADz/wMAAAABAAEAAADz/wIAAAABAAEAAADz/wEAAAABAAEAAADz/wAAAAABAAEAAAD3/wYAAAABAAEAAADz/wkAAAABAAEAAADz/wgAAAABAAEAAADz/wcAAAABAAEAAADy/wQAAAABAAEAAADy/wMAAAABAAEAAADy/wIAAAABAAEAAADy/wUAAAABAAEAAADy/wYAAAABAAEAAADy/wcAAAABAAEAAADy/wgAAAABAAEAAAD0/woAAAABAAEAAADz/woAAAABAAEAAAD1/wsAAAABAAEAAAD0/wsAAAABAAEAAAD6/wkAAAABAAEAAAD8/woAAAABAAEAAAD//w4AAAABAAEAAAD+/w4AAAABAAEAAAD9/w4AAAABAAEAAAAAAA0AAAABAAEAAAAAAA4AAAABAAEAAAABAA0AAAABAAEAAAABAA4AAAABAAEAAAACAA0AAAABAAEAAAACAA4AAAABAAEAAAADAA0AAAABAAEAAAAEAA0AAAABAAEAAAAEAA4AAAABAAEAAAADAA4AAAABAAEAAAAFAA0AAAABAAEAAAAGAA0AAAABAAEAAAAHAA0AAAABAAEAAAAIAA0AAAABAAEAAAAJAAwAAAABAAEAAAAJAA0AAAABAAEAAAAKAAwAAAABAAEAAAAKAA0AAAABAAEAAAALAAsAAAABAAEAAAALAAwAAAABAAEAAAALAAoAAAABAAEAAAALAAkAAAABAAEAAAAMAAkAAAABAAEAAAAMAAoAAAABAAEAAAAMAAgAAAABAAEAAAAMAAcAAAABAAEAAAAMAAYAAAABAAEAAAANAAcAAAABAAEAAAANAAgAAAABAAEAAAANAAYAAAABAAEAAAAMAAUAAAABAAEAAAANAAUAAAABAAEAAAAHAAgAAAABAAEAAAANAAQAAAABAAEAAAAOAAUAAAABAAEAAAAOAAYAAAABAAEAAAAOAAQAAAABAAEAAAANAAMAAAABAAEAAAAOAAMAAAABAAEAAAANAAIAAAABAAEAAAAOAAIAAAABAAEAAAANAAEAAAABAAEAAAAOAAEAAAABAAEAAAANAAAAAAABAAEAAAAOAP//AAABAAEAAAAOAAAAAAABAAEAAAAOAP7/AAABAAEAAAAOAP3/AAABAAEAAAAOAPz/AAABAAEAAAAOAPv/AAABAAEAAAAPAPz/AAABAAEAAAAPAP3/AAABAAEAAAAPAPv/AAABAAEAAAANAPr/AAABAAEAAAAOAPr/AAABAAEAAAAPAPr/AAABAAEAAAANAPn/AAABAAEAAAAOAPn/AAABAAEAAAANAPj/AAABAAEAAAAOAPj/AAABAAEAAAANAPf/AAABAAEAAAAOAPf/AAADAAIAAAAMAPb/AAABAAEAAAANAPb/AAABAAEAAAALAPX/AAABAAEAAAAMAPX/AAABAAEAAAANAPX/AAADAAIAAAAKAPT/AAABAAEAAAALAPT/AAABAAEAAAAMAPT/AAABAAEAAAAJAPT/AAABAAEAAAAJAPP/AAABAAEAAAAKAPP/AAABAAEAAAALAPP/AAADAAIAAAAIAPP/AAABAAEAAAAHAPP/AAABAAEAAAAHAPL/AAABAAEAAAAIAPL/AAABAAEAAAAJAPL/AAABAAEAAAAGAPP/AAABAAEAAAAGAPL/AAABAAEAAAAFAPP/AAABAAEAAAAFAPL/AAABAAEAAAAEAPP/AAABAAEAAAADAPT/AAABAAEAAAADAPP/AAABAAEAAAACAPT/AAABAAEAAAACAPP/AAABAAEAAAABAPT/AAABAAEAAAABAPP/AAABAAEAAAAAAPT/AAABAAEAAAAAAPP/AAABAAEAAAD///T/AAABAAEAAAD///P/AAABAAEAAAD+//T/AAABAAEAAAD+//P/AAABAAEAAAD9//P/AAABAAEAAAD8//P/AAABAAEAAAAAAPL/AAABAAEAAAABAPL/AAABAAEAAAACAPL/AAABAAEAAAD///L/AAABAAEAAAD+//L/AAABAAEAAAD9//L/AAABAAEAAAD8//L/AAABAAEAAAD7//P/AAABAAEAAAD7//L/AAABAAEAAAADAPL/AAABAAEAAAAEAPL/AAABAAEAAAD6//P/AAABAAEAAAD5//P/AAABAAEAAAD4//P/AAABAAEAAAD3//P/AAABAAEAAAD5//L/AAABAAEAAAD6//L/AAABAAEAAAD4//L/AAABAAEAAAD2//T/AAABAAEAAAD2//P/AAABAAEAAAD1//X/AAABAAEAAAD1//T/AAABAAEAAAD1//P/AAABAAEAAAD1//b/AAABAAEAAAD0//b/AAABAAEAAAD0//X/AAABAAEAAAD0//T/AAAFAAIAAAD1//f/AAABAAEAAAD0//f/AAABAAEAAADz//f/AAABAAEAAADz//b/AAABAAEAAADz//X/AAAFAAIAAAD0//j/AAABAAEAAADz//j/AAABAAEAAADy//j/AAABAAEAAADy//f/AAAFAAIAAADy//b/AAAFAAEAAADz//n/AAABAAEAAADy//n/AAABAAEAAADz//r/AAABAAEAAADy//r/AAABAAEAAADy//v/AAABAAEAAADy//z/AAABAAEAAADy//3/AAABAAEAAADx//3/AAABAAEAAADx//z/AAABAAEAAADx//v/AAABAAEAAADy//7/AAABAAEAAADx//7/AAABAAEAAADy////AAABAAEAAADx////AAABAAEAAADy/wAAAAABAAEAAADx/wAAAAABAAEAAADy/wEAAAABAAEAAADx/wEAAAABAAEAAADx/wIAAAABAAEAAADx/wMAAAABAAEAAADw/wMAAAABAAEAAADw/wIAAAABAAEAAADw/wEAAAABAAEAAADx/wQAAAABAAEAAADw/wQAAAABAAEAAADx/wUAAAABAAEAAADx/wYAAAABAAEAAADw/wYAAAABAAEAAADw/wUAAAABAAEAAADx/wcAAAABAAEAAADw/wcAAAABAAEAAADw/wAAAAABAAEAAADw////AAABAAEAAADw//7/AAABAAEAAADw//3/AAABAAEAAADw//z/AAABAAEAAADv/wQAAAABAAEAAADv/wMAAAABAAEAAADv/wIAAAABAAEAAADv/wEAAAABAAEAAADv/wAAAAABAAEAAADv////AAABAAEAAADv//7/AAABAAEAAADx/wgAAAABAAEAAADy/wkAAAABAAEAAADx/wkAAAABAAEAAADw/wgAAAABAAEAAADw/wkAAAABAAEAAADy/woAAAABAAEAAADz/wsAAAABAAEAAAD1/wwAAAABAAEAAAD0/wwAAAABAAEAAADz/wwAAAABAAEAAAD1/w0AAAABAAEAAAD0/w0AAAABAAEAAADz/w0AAAABAAEAAAD2/wwAAAABAAEAAAD2/w0AAAABAAEAAADy/wwAAAABAAEAAADy/wsAAAABAAEAAADx/wsAAAABAAEAAADx/woAAAABAAEAAAD3/w0AAAABAAEAAAD4/w0AAAABAAEAAAD5/w0AAAABAAEAAAD5/w4AAAABAAEAAAD4/w4AAAABAAEAAAD3/w4AAAABAAEAAAD7/w4AAAABAAEAAAD6/w4AAAABAAEAAAD8/w4AAAABAAEAAAD+/w8AAAABAAEAAAD9/w8AAAABAAEAAAD8/w8AAAABAAEAAAD//w8AAAABAAEAAAD//xAAAAABAAEAAAD+/xAAAAABAAEAAAD9/xAAAAABAAEAAAD7/w8AAAABAAEAAAD6/w8AAAABAAEAAAAAAA8AAAABAAEAAAAAABAAAAABAAEAAAABAA8AAAABAAEAAAACAA8AAAABAAEAAAACABAAAAABAAEAAAABABAAAAABAAEAAAADAA8AAAABAAEAAAADABAAAAABAAEAAAAEAA8AAAABAAEAAAAFAA4AAAABAAEAAAAFAA8AAAABAAEAAAAGAA4AAAABAAEAAAAGAA8AAAABAAEAAAAHAA4AAAABAAEAAAAHAA8AAAABAAEAAAAIAA4AAAABAAEAAAAIAA8AAAABAAEAAAAJAA4AAAABAAEAAAAKAA4AAAABAAEAAAALAA0AAAABAAEAAAAMAAsAAAABAAEAAAAMAAwAAAABAAEAAAANAAkAAAABAAEAAAAOAAcAAAABAAEAAAAOAAgAAAABAAEAAAAPAAYAAAABAAEAAAAPAAcAAAABAAEAAAAPAAUAAAABAAEAAAAOAAkAAAABAAEAAAAOAAoAAAABAAEAAAANAAoAAAABAAEAAAANAAsAAAABAAEAAAANAAwAAAABAAEAAAAOAAsAAAADAAAAAAAPAAQAAAABAAEAAAAPAAMAAAABAAEAAAAPAAIAAAABAAEAAAAPAAEAAAABAAEAAAAPAAAAAAABAAEAAAAPAP//AAABAAEAAAAPAP7/AAABAAEAAAAQAP7/AAABAAEAAAAQAP//AAABAAEAAAAQAAAAAAABAAEAAAARAP//AAABAAEAAAARAAAAAAABAAEAAAARAP7/AAABAAEAAAARAAEAAAABAAEAAAAQAAEAAAABAAEAAAAQAAIAAAABAAEAAAAQAP3/AAABAAEAAAAQAPz/AAABAAEAAAAQAAMAAAABAAEAAAAQAAQAAAABAAEAAAARAAUAAAABAAEAAAAQAAUAAAABAAEAAAAQAAYAAAABAAEAAAASAAAAAAABAAEAAAASAP//AAABAAEAAAASAP7/AAADAAIAAAARAP3/AAADAAIAAAASAP3/AAACAAAAAAARAPz/AAADAAEAAAAQAPv/AAADAAIAAAARAPv/AAACAAAAAAAQAPr/AAADAAEAAAAPAPn/AAADAAIAAAAQAPn/AAACAAAAAAAPAPj/AAADAAEAAAAPAPf/AAACAAAAAAAOAPb/AAADAAEAAAAOAPX/AAACAAAAAAANAPT/AAACAAEAAAAMAPP/AAAEAAIAAAANAPP/AAACAAAAAAAKAPL/AAADAAIAAAALAPL/AAACAAAAAAAHAPH/AAADAAIAAAAIAPH/AAABAAAAAAAJAPH/AAABAAAAAAAGAPH/AAABAAEAAAAFAPH/AAABAAEAAAAEAPH/AAABAAEAAAADAPH/AAABAAEAAAACAPH/AAABAAEAAAABAPH/AAABAAEAAAAAAPH/AAABAAEAAAD///H/AAABAAEAAAD5//H/AAABAAEAAAD6//H/AAABAAEAAAD7//H/AAABAAEAAAD8//H/AAABAAEAAAD9//H/AAABAAEAAAD+//H/AAABAAEAAAD4//H/AAABAAEAAAD3//L/AAABAAEAAAD3//H/AAAFAAIAAAD2//L/AAAFAAIAAAD2//H/AAAAAAAAAAD1//L/AAAEAAIAAAD0//P/AAAFAAEAAAD0//L/AAAAAAAAAADz//T/AAAAAAAAAADy//X/AAAAAAAAAADx//n/AAABAAEAAADx//j/AAAFAAIAAADx//f/AAAAAAAAAADx//r/AAABAAEAAADw//r/AAAFAAIAAADw//n/AAAFAAEAAADw//j/AAAAAAAAAADw//v/AAABAAEAAADv//z/AAABAAEAAADv//v/AAAFAAIAAADv//r/AAAAAAAAAADv//3/AAABAAEAAADu/wAAAAABAAEAAADu////AAABAAEAAADu//7/AAABAAEAAADu/wEAAAABAAEAAADv/wUAAAABAAEAAADv/wYAAAABAAEAAADv/wcAAAABAAEAAADv/wgAAAABAAEAAADw/woAAAABAAEAAAABABEAAAABAAEAAAAAABEAAAABAAEAAAD//xEAAAABAAEAAAACABEAAAABAAEAAAD2/w4AAAABAAEAAAD1/w4AAAABAAEAAAD5/w8AAAABAAEAAAD4/w8AAAABAAEAAAD3/w8AAAABAAEAAAD5/xAAAAABAAEAAAD4/xAAAAABAAEAAAD6/xAAAAABAAEAAAD7/xAAAAABAAEAAAD8/xAAAAABAAEAAAD8/xEAAAABAAEAAAD7/xEAAAABAAEAAAD6/xEAAAABAAEAAAD9/xEAAAABAAEAAAD+/xEAAAABAAEAAAADABEAAAABAAEAAAAEABAAAAABAAEAAAAEABEAAAABAAEAAAAFABAAAAABAAEAAAAFABEAAAABAAEAAAAGABAAAAABAAEAAAAGABEAAAADAAAAAAAHABAAAAABAAEAAAAIABAAAAABAAEAAAAJAA8AAAABAAEAAAAJABAAAAABAAEAAAAKAA8AAAABAAEAAAALAA4AAAABAAEAAAALAA8AAAADAAAAAAAMAA0AAAABAAEAAAAMAA4AAAADAAAAAAAMAA8AAAACAAIAAAANAA0AAAABAAEAAAANAA4AAAABAAIAAAAOAA0AAAADAAEAAAAOAA4AAAACAAIAAAAOAAwAAAADAAEAAAAPAAkAAAABAAEAAAAPAAoAAAABAAEAAAAPAAgAAAABAAEAAAAQAAcAAAABAAEAAAARAAYAAAABAAEAAAARAAcAAAABAAEAAAARAAgAAAABAAEAAAAQAAgAAAABAAEAAAAQAAkAAAABAAEAAAAQAAoAAAADAAAAAAAPAAsAAAABAAIAAAACAPD/AAABAAEAAAADAPD/AAABAAEAAAAEAPD/AAADAAIAAAABAPD/AAABAAEAAAAAAPD/AAABAAEAAAD///D/AAABAAEAAAD+//D/AAABAAEAAAD9//D/AAABAAEAAAD8//D/AAABAAEAAAD7//D/AAABAAEAAAD6//D/AAABAAEAAAD6/+//AAABAAEAAAD7/+//AAABAAEAAAD8/+//AAABAAEAAAD6/+7/AAABAAAAAAD7/+7/AAAEAAIAAAD8/+7/AAAEAAIAAAD5//D/AAAFAAIAAAD5/+//AAAFAAEAAAD5/+7/AAAAAAAAAAD9/+//AAABAAEAAAD9/+7/AAAEAAIAAAD+/+//AAABAAEAAAD+/+7/AAABAAAAAAD//+//AAABAAEAAAD//+7/AAABAAAAAAAAAO//AAABAAEAAAAAAO7/AAAEAAIAAAABAO//AAABAAEAAAABAO7/AAAEAAIAAAACAO//AAADAAIAAAACAO7/AAACAAAAAAADAO//AAAEAAIAAAAFAPD/AAAEAAIAAAAGAPD/AAABAAAAAAAEAO//AAACAAAAAAD4//D/AAAEAAIAAAD3//D/AAAAAAAAAAAHAPD/AAACAAAAAAAKAPH/AAACAAAAAADw/wsAAAAFAAAAAADv/wsAAAAAAAIAAADv/woAAAAFAAAAAADv/wkAAAABAAEAAADx/wwAAAAFAAAAAADw/wwAAAAAAAIAAADy/w0AAAABAAEAAADx/w0AAAAFAAEAAADy/w4AAAAFAAAAAADx/w4AAAAAAAIAAADz/w4AAAABAAEAAAD0/w4AAAABAAEAAAD0/w8AAAAFAAAAAADz/w8AAAAEAAAAAADy/w8AAAAAAAIAAAD1/w8AAAABAAEAAAD2/w8AAAABAAEAAAD2/xAAAAAFAAAAAAD1/xAAAAAEAAAAAAD0/xAAAAAAAAIAAAD3/xAAAAABAAEAAAD3/xEAAAAEAAAAAAD2/xEAAAAAAAIAAAD4/xEAAAAFAAAAAAD5/xEAAAABAAEAAAD5/xIAAAAFAAAAAAD4/xIAAAAAAAIAAAD6/xIAAAABAAEAAAD7/xIAAAABAAEAAAD8/xIAAAABAAEAAAD9/xIAAAABAAEAAAD+/xIAAAABAAEAAAD//xIAAAABAAEAAAAAABIAAAABAAEAAAABABIAAAABAAEAAAACABIAAAABAAEAAAADABIAAAABAAEAAAAEABIAAAADAAAAAADu/wkAAAABAAEAAADu/wgAAAABAAEAAADu/wcAAAAFAAIAAADu/woAAAAEAAAAAADt/woAAAAAAAIAAADt/wkAAAAAAAEAAADt/wgAAAAFAAEAAADt/wcAAAAAAAAAAADu/wYAAAAAAAEAAADu/wUAAAAFAAEAAADu/wQAAAAFAAEAAADu/wMAAAAFAAEAAADu/wIAAAAFAAAAAADt/wEAAAAFAAEAAADt/wAAAAAFAAAAAADt////AAABAAEAAADt//7/AAAFAAIAAADs/wAAAAAAAAIAAADs////AAAAAAEAAADs//7/AAAAAAAAAADt/wIAAAAAAAIAAADu//3/AAABAAEAAADu//z/AAAFAAIAAADu//v/AAAAAAAAAADt//3/AAAAAAEAAADt//z/AAAAAAAAAAD7/xMAAAABAAEAAAD6/xMAAAAFAAAAAAD5/xMAAAAAAAIAAAD8/xMAAAABAAEAAAD8/xQAAAABAAIAAAD7/xQAAAAEAAAAAAD6/xQAAAAAAAIAAAD9/xMAAAABAAEAAAD9/xQAAAAFAAAAAAD+/xMAAAABAAEAAAD+/xQAAAABAAEAAAD//xMAAAABAAEAAAD//xQAAAABAAEAAAD//xUAAAAEAAAAAAD+/xUAAAABAAIAAAD9/xUAAAAAAAIAAAAAABQAAAABAAEAAAAAABUAAAAEAAAAAAAAABMAAAABAAEAAAABABQAAAABAAEAAAABABUAAAAEAAAAAAABABMAAAABAAEAAAACABQAAAADAAAAAAACABUAAAACAAIAAAACABMAAAABAAEAAAADABMAAAABAAEAAAADABQAAAAEAAAAAAAEABMAAAACAAEAAAAEABQAAAACAAIAAAAFABIAAAABAAIAAAAGABIAAAACAAIAAAAHABEAAAAEAAAAAAAIABEAAAAEAAAAAAAJABEAAAABAAIAAAAKABAAAAADAAAAAAAKABEAAAACAAIAAAALABAAAAACAAIAAAAQAAsAAAACAAIAAAARAAkAAAADAAAAAAARAAoAAAACAAIAAAASAAgAAAADAAAAAAASAAkAAAACAAIAAAASAAcAAAABAAEAAAATAAcAAAACAAEAAAATAAgAAAACAAIAAAASAAYAAAABAAEAAAATAAYAAAADAAEAAAASAAUAAAABAAEAAAATAAUAAAADAAEAAAATAP//AAADAAEAAAATAAAAAAADAAEAAAATAP7/AAACAAAAAAARAAIAAAABAAEAAAASAAIAAAADAAAAAAASAAMAAAACAAEAAAARAAMAAAABAAEAAAASAAEAAAABAAEAAAASAAQAAAADAAIAAAARAAQAAAABAAEAAAATAAQAAAACAAAAAAATAAEAAAACAAEAAAATAAIAAAACAAIAAAD4//j/AAABAAEAAAAIAPn/AAABAAEAAAD3//3/AAABAAEAAAD3//7/AAABAAEAAAD2//7/AAABAAEAAAD2////AAABAAEAAAD2//3/AAABAAEAAAD1//3/AAABAAEAAAD3////AAABAAEAAAD3//z/AAABAAEAAAD4//z/AAABAAEAAAD4//v/AAABAAEAAAD3/wAAAAABAAEAAAD3/wEAAAABAAEAAAD3/wIAAAABAAEAAAD3/wMAAAABAAEAAAD3/wQAAAABAAEAAAD3/wUAAAABAAEAAAD4//n/AAABAAEAAAD4//r/AAABAAEAAAD4//3/AAABAAEAAAD4//7/AAABAAEAAAD4////AAABAAEAAAD4/wAAAAABAAEAAAD4/wEAAAABAAEAAAD4/wIAAAABAAEAAAD4/wMAAAABAAEAAAD4/wQAAAABAAEAAAD4/wUAAAABAAEAAAD4/wYAAAABAAEAAAD4/wcAAAABAAEAAAD4/wgAAAABAAEAAAD5//n/AAABAAEAAAD5//r/AAABAAEAAAD5//v/AAABAAEAAAD5//z/AAABAAEAAAD5//3/AAABAAEAAAD5//7/AAABAAEAAAD5////AAABAAEAAAD5/wAAAAABAAEAAAD5/wEAAAABAAEAAAD5/wIAAAABAAEAAAD5/wMAAAABAAEAAAD5/wQAAAABAAEAAAD5/wUAAAABAAEAAAD5/wYAAAABAAEAAAD5/wcAAAABAAEAAAD5/wgAAAABAAEAAAD6//j/AAABAAEAAAD6//n/AAABAAEAAAD6//r/AAABAAEAAAD6//v/AAABAAEAAAD6//z/AAABAAEAAAD6//3/AAABAAEAAAD6//7/AAABAAEAAAD6////AAABAAEAAAD6/wAAAAABAAEAAAD6/wEAAAABAAEAAAD6/wIAAAABAAEAAAD6/wMAAAABAAEAAAD6/wQAAAABAAEAAAD6/wUAAAABAAEAAAD6/wYAAAABAAEAAAD6/wcAAAABAAEAAAD6/wgAAAABAAEAAAD7//j/AAABAAEAAAD7//n/AAABAAEAAAD7//r/AAABAAEAAAD7//v/AAABAAEAAAD7//z/AAABAAEAAAD7//3/AAABAAEAAAD7//7/AAABAAEAAAD7////AAABAAEAAAD7/wAAAAABAAEAAAD7/wEAAAABAAEAAAD7/wIAAAABAAEAAAD7/wMAAAABAAEAAAD7/wQAAAABAAEAAAD7/wUAAAABAAEAAAD7/wYAAAABAAEAAAD7/wcAAAABAAEAAAD7/wgAAAABAAEAAAD7/wkAAAABAAEAAAD8//j/AAABAAEAAAD8//n/AAABAAEAAAD8//r/AAABAAEAAAD8//v/AAABAAEAAAD8//z/AAABAAEAAAD8//3/AAABAAEAAAD8//7/AAABAAEAAAD8////AAABAAEAAAD8/wAAAAABAAEAAAD8/wEAAAABAAEAAAD8/wIAAAABAAEAAAD8/wMAAAABAAEAAAD8/wQAAAABAAEAAAD8/wUAAAABAAEAAAD8/wYAAAABAAEAAAD8/wcAAAABAAEAAAD8/wgAAAABAAEAAAD8/wkAAAABAAEAAAD9//n/AAABAAEAAAD9//r/AAABAAEAAAD9//v/AAABAAEAAAD9//z/AAABAAEAAAD9//3/AAABAAEAAAD9//7/AAABAAEAAAD9////AAABAAEAAAD9/wAAAAABAAEAAAD9/wEAAAABAAEAAAD9/wIAAAABAAEAAAD9/wMAAAABAAEAAAD9/wQAAAABAAEAAAD9/wUAAAABAAEAAAD9/wYAAAABAAEAAAD9/wcAAAABAAEAAAD9/wgAAAABAAEAAAD9/wkAAAABAAEAAAD+//n/AAABAAEAAAD+//r/AAABAAEAAAD+//v/AAABAAEAAAD+//z/AAABAAEAAAD+//3/AAABAAEAAAD+//7/AAABAAEAAAD+////AAABAAEAAAD+/wAAAAABAAEAAAD+/wEAAAABAAEAAAD+/wIAAAABAAEAAAD+/wMAAAABAAEAAAD+/wQAAAABAAEAAAD+/wUAAAABAAEAAAD+/wYAAAABAAEAAAD+/wcAAAABAAEAAAD+/wgAAAABAAEAAAD+/wkAAAABAAEAAAD///n/AAABAAEAAAD///r/AAABAAEAAAD///v/AAABAAEAAAD///z/AAABAAEAAAD///3/AAABAAEAAAD///7/AAABAAEAAAD/////AAABAAEAAAD//wAAAAABAAEAAAD//wEAAAABAAEAAAD//wIAAAABAAEAAAD//wMAAAABAAEAAAD//wQAAAABAAEAAAD//wUAAAABAAEAAAD//wYAAAABAAEAAAD//wcAAAABAAEAAAD//wgAAAABAAEAAAAAAPn/AAABAAEAAAAAAPr/AAABAAEAAAAAAPv/AAABAAEAAAAAAPz/AAABAAEAAAAAAP3/AAABAAEAAAAAAP7/AAABAAEAAAAAAP//AAABAAEAAAAAAAAAAAABAAEAAAAAAAEAAAABAAEAAAAAAAIAAAABAAEAAAAAAAMAAAABAAEAAAAAAAQAAAABAAEAAAAAAAUAAAABAAEAAAAAAAYAAAABAAEAAAAAAAcAAAABAAEAAAAAAAgAAAABAAEAAAABAPn/AAABAAEAAAABAPr/AAABAAEAAAABAPv/AAABAAEAAAABAPz/AAABAAEAAAABAP3/AAABAAEAAAABAP7/AAABAAEAAAABAP//AAABAAEAAAABAAAAAAABAAEAAAABAAEAAAABAAEAAAABAAIAAAABAAEAAAABAAMAAAABAAEAAAABAAQAAAABAAEAAAABAAUAAAABAAEAAAABAAYAAAABAAEAAAABAAcAAAABAAEAAAABAAgAAAABAAEAAAACAPn/AAABAAEAAAACAPr/AAABAAEAAAACAPv/AAABAAEAAAACAPz/AAABAAEAAAACAP3/AAABAAEAAAACAP7/AAABAAEAAAACAP//AAABAAEAAAACAAAAAAABAAEAAAACAAEAAAABAAEAAAACAAIAAAABAAEAAAACAAMAAAABAAEAAAACAAQAAAABAAEAAAACAAUAAAABAAEAAAACAAYAAAABAAEAAAACAAcAAAABAAEAAAACAAgAAAABAAEAAAADAPn/AAABAAEAAAADAPr/AAABAAEAAAADAPv/AAABAAEAAAADAPz/AAABAAEAAAADAP3/AAABAAEAAAADAP7/AAABAAEAAAADAP//AAABAAEAAAADAAAAAAABAAEAAAADAAEAAAABAAEAAAADAAIAAAABAAEAAAADAAMAAAABAAEAAAADAAQAAAABAAEAAAADAAUAAAABAAEAAAADAAYAAAABAAEAAAADAAcAAAABAAEAAAADAAgAAAABAAEAAAAEAPn/AAABAAEAAAAEAPr/AAABAAEAAAAEAPv/AAABAAEAAAAEAPz/AAABAAEAAAAEAP3/AAABAAEAAAAEAP7/AAABAAEAAAAEAP//AAABAAEAAAAEAAAAAAABAAEAAAAEAAEAAAABAAEAAAAEAAIAAAABAAEAAAAEAAMAAAABAAEAAAAEAAQAAAABAAEAAAAEAAUAAAABAAEAAAAEAAYAAAABAAEAAAAEAAcAAAABAAEAAAAEAAgAAAABAAEAAAAFAPn/AAABAAEAAAAFAPr/AAABAAEAAAAFAPv/AAABAAEAAAAFAPz/AAABAAEAAAAFAP3/AAABAAEAAAAFAP7/AAABAAEAAAAFAP//AAABAAEAAAAFAAAAAAABAAEAAAAFAAEAAAABAAEAAAAFAAIAAAABAAEAAAAFAAMAAAABAAEAAAAFAAQAAAABAAEAAAAFAAUAAAABAAEAAAAFAAYAAAABAAEAAAAFAAcAAAABAAEAAAAFAAgAAAABAAEAAAAFAAkAAAABAAEAAAAGAPn/AAABAAEAAAAGAPr/AAABAAEAAAAGAPv/AAABAAEAAAAGAPz/AAABAAEAAAAGAP3/AAABAAEAAAAGAP7/AAABAAEAAAAGAP//AAABAAEAAAAGAAAAAAABAAEAAAAGAAEAAAABAAEAAAAGAAIAAAABAAEAAAAGAAMAAAABAAEAAAAGAAQAAAABAAEAAAAGAAUAAAABAAEAAAAGAAYAAAABAAEAAAAGAAcAAAABAAEAAAAGAAgAAAABAAEAAAAHAPn/AAABAAEAAAAHAPr/AAABAAEAAAAHAPv/AAABAAEAAAAHAPz/AAABAAEAAAAHAP3/AAABAAEAAAAHAP7/AAABAAEAAAAHAP//AAABAAEAAAAHAAAAAAABAAEAAAAHAAEAAAABAAEAAAAHAAIAAAABAAEAAAAHAAMAAAABAAEAAAAHAAQAAAABAAEAAAAHAAUAAAABAAEAAAAHAAYAAAABAAEAAAAHAAcAAAABAAEAAAAIAPr/AAABAAEAAAAIAPv/AAABAAEAAAAIAPz/AAABAAEAAAAIAP3/AAABAAEAAAAIAP7/AAABAAEAAAAIAP//AAABAAEAAAAIAAAAAAABAAEAAAAIAAEAAAABAAEAAAAIAAIAAAABAAEAAAAIAAMAAAABAAEAAAAIAAQAAAABAAEAAAAIAAUAAAABAAEAAAAIAAYAAAABAAEAAAD2/wQAAAABAAEAAAD2/wUAAAABAAEAAAD2/wYAAAABAAEAAAA=") +tile_set = ExtResource("1_hcuwu") + +[node name="Roads" type="TileMapLayer" parent="Level"] +tile_map_data = PackedByteArray("AADu/wAAAAAZAAgAAADv/wAAAAAWAAgAAADw/wAAAAAWAAYAAADx/wAAAAAXAAYAAADy/wEAAAAXAAYAAADz/wIAAAAWAAgAAAD0/wIAAAAXAAYAAAD0/wMAAAAXAAcAAAD0/wQAAAAVAAcAAAD0/wUAAAAVAAcAAAD0/wYAAAAXAAcAAAD0/wcAAAAVAAcAAAD0/wgAAAAXAAgAAADz/wgAAAAVAAYAAADz/wkAAAAVAAcAAADz/woAAAAVAAgAAAD0/woAAAAXAAYAAAD0/wsAAAAVAAcAAAD0/wwAAAAVAAgAAAD1/wwAAAAWAAYAAAD2/wwAAAAWAAgAAAD3/wwAAAAXAAYAAAD3/w0AAAAVAAgAAAD4/w0AAAAWAAYAAAD5/w0AAAAWAAgAAAD6/w0AAAAWAAYAAAD7/w0AAAAWAAgAAAD8/w0AAAAWAAYAAAD9/w0AAAAWAAgAAAD+/w0AAAAXAAYAAAD+/w4AAAAVAAgAAAD//w4AAAAWAAYAAAAAAA4AAAAWAAgAAAABAA4AAAAXAAgAAAABAA0AAAAVAAcAAAABAAwAAAAVAAcAAAABAAsAAAAXAAcAAAABAAoAAAAXAAcAAAABAAkAAAAVAAcAAAABAAgAAAAVAAYAAAACAAgAAAAXAAgAAAACAAcAAAAVAAYAAAADAAcAAAAWAAgAAAAEAAcAAAAXAAgAAAAEAAYAAAAVAAcAAAAEAAUAAAAVAAYAAAAFAAUAAAAWAAYAAAAGAAUAAAAXAAgAAAAGAAQAAAAVAAcAAAAGAAMAAAAVAAcAAAAGAAIAAAAXAAcAAAAGAAEAAAAVAAcAAAAGAAAAAAAXAAYAAAAFAAAAAAAWAAgAAAAEAAAAAAAWAAgAAAADAAAAAAAWAAYAAAACAAAAAAAWAAgAAAABAAAAAAAWAAYAAAAAAAAAAAAYAAYAAAASAAAAAAAWAAYAAAARAAAAAAAWAAgAAAATAAAAAAAaAAgAAAAQAAAAAAAWAAgAAAAPAAAAAAAWAAgAAAAOAAAAAAAVAAgAAAAOAP//AAAVAAcAAAAOAP7/AAAXAAYAAAANAP7/AAAWAAgAAAAMAP7/AAAVAAgAAAAMAP3/AAAXAAcAAAAMAPz/AAAVAAYAAAANAPz/AAAXAAgAAAANAPv/AAAXAAcAAAANAPr/AAAVAAcAAAANAPn/AAAXAAcAAAANAPj/AAAVAAcAAAANAPf/AAAXAAYAAAAMAPf/AAAWAAgAAAALAPf/AAAVAAgAAAALAPb/AAAXAAYAAAAKAPb/AAAVAAgAAAAKAPX/AAAXAAYAAAAJAPX/AAAVAAgAAAAJAPT/AAAXAAYAAAAIAPT/AAAWAAgAAAAHAPT/AAAWAAgAAAAGAPT/AAAVAAYAAAAGAPX/AAAXAAgAAAAFAPX/AAAWAAgAAAAEAPX/AAAWAAgAAAADAPX/AAAWAAYAAAACAPX/AAAVAAYAAAACAPb/AAAXAAgAAAABAPb/AAAWAAYAAAAAAPb/AAAWAAgAAAD///j/AAAXAAgAAAD+//j/AAAVAAYAAAD+//n/AAAXAAgAAAD9//n/AAAWAAgAAAD8//n/AAAVAAYAAAD8//r/AAAXAAcAAAD8//v/AAAXAAgAAAD7//v/AAAWAAYAAAD6//v/AAAVAAYAAAD6//z/AAAXAAgAAAD5//z/AAAVAAYAAAD5//3/AAAXAAcAAAD5//7/AAAXAAcAAAD5////AAAVAAgAAAD6////AAAWAAgAAAD7////AAAWAAYAAAD8////AAAXAAYAAAD8/wAAAAAVAAgAAAD9/wAAAAAWAAYAAAD+/wAAAAAWAAYAAAD//wAAAAAWAAgAAAAAABUAAAAYAAgAAAAAABQAAAAXAAcAAAAAABMAAAAVAAcAAAAAABIAAAAXAAcAAAAAABEAAAAVAAYAAAABABEAAAAWAAYAAAACABEAAAAWAAYAAAADABEAAAAXAAgAAAADABAAAAAVAAYAAAAEABAAAAAXAAgAAAAEAA8AAAAVAAcAAAAEAA4AAAAVAAcAAAAEAA0AAAAVAAcAAAAEAAwAAAAVAAYAAAAFAAwAAAAWAAgAAAAGAAwAAAAWAAgAAAAHAAwAAAAWAAYAAAAIAAwAAAAWAAgAAAAJAAwAAAAXAAYAAAAJAA0AAAAVAAgAAAAKAA0AAAAWAAYAAAALAA0AAAAXAAgAAAALAAwAAAAXAAcAAAALAAsAAAAXAAcAAAALAAoAAAAVAAYAAAAMAAoAAAAWAAgAAAANAAoAAAAXAAgAAAANAAkAAAAXAAcAAAANAAgAAAAVAAcAAAANAAcAAAAVAAcAAAANAAYAAAAVAAcAAAANAAUAAAAXAAcAAAANAAQAAAAXAAYAAAAMAAQAAAAVAAgAAAAMAAMAAAAVAAcAAAAMAAIAAAAXAAcAAAAMAAEAAAAXAAYAAAALAAEAAAAWAAYAAAAKAAEAAAAWAAgAAAAJAAEAAAAVAAgAAAAJAAAAAAAXAAYAAAAIAAAAAAAVAAgAAAABAO//AAAaAAgAAAAAAO//AAAVAAYAAAAAAPD/AAAVAAcAAAAAAPH/AAAXAAgAAAD///H/AAAVAAYAAAD///L/AAAXAAgAAAD+//L/AAAVAAYAAAD+//P/AAAVAAcAAAD+//T/AAAXAAgAAAD9//T/AAAVAAYAAAD8//X/AAAWAAYAAAD7//X/AAAWAAYAAAD9//X/AAAXAAgAAAD6//X/AAAWAAgAAAD5//X/AAAWAAgAAAD4//X/AAAWAAYAAAD3//X/AAAVAAYAAAD3//b/AAAXAAgAAAD2//b/AAAWAAYAAAD1//f/AAAXAAcAAAD1//j/AAAXAAgAAAD0//n/AAAVAAcAAAD0//r/AAAVAAcAAAD0//v/AAAVAAcAAAD0//j/AAAVAAYAAAD1//b/AAAVAAYAAAD0//z/AAAVAAcAAAD0//3/AAAXAAcAAAD0//7/AAAVAAcAAAD0////AAAVAAcAAAD0/wAAAAAVAAgAAAD1/wAAAAAXAAYAAADy/wIAAAAVAAgAAADx/wEAAAAVAAgAAAD1/wEAAAAVAAgAAAD2/wEAAAAWAAgAAAD3/wEAAAAWAAYAAAD4/wEAAAAXAAYAAAD4/wIAAAAVAAgAAAD5/wIAAAAXAAYAAAD5/wMAAAAVAAcAAAD5/wQAAAAVAAgAAAD6/wQAAAAXAAYAAAD6/wUAAAAVAAgAAAD7/wUAAAAWAAYAAAD8/wUAAAAXAAYAAAD8/wYAAAAVAAgAAAD9/wYAAAAWAAgAAAD+/wYAAAAWAAYAAAD//wYAAAAWAAYAAAAAAAYAAAAXAAgAAAAAAAUAAAAXAAcAAAAAAAQAAAAXAAcAAAAAAAMAAAAXAAcAAAAAAAIAAAAXAAcAAAAAAAEAAAAVAAcAAAAIAP//AAAVAAcAAAAIAP7/AAAXAAcAAAAIAP3/AAAXAAYAAAAHAP3/AAAVAAgAAAAHAPz/AAAVAAcAAAAHAPv/AAAXAAYAAAAGAPv/AAAWAAYAAAAFAPv/AAAVAAgAAAAFAPr/AAAXAAYAAAAEAPr/AAAWAAYAAAADAPr/AAAVAAgAAAADAPn/AAAXAAYAAAACAPn/AAAWAAgAAAABAPn/AAAVAAYAAAD///b/AAAVAAYAAAD///f/AAAVAAcAAAABAPr/AAAXAAgAAAAAAPr/AAAVAAYAAAAAAPv/AAAVAAcAAAAAAPz/AAAVAAcAAAAAAP3/AAAXAAcAAAAAAP7/AAAVAAcAAAAAAP//AAAXAAcAAAA=") +tile_set = ExtResource("1_hcuwu") + +[node name="YSorted" type="Node2D" parent="Level"] +y_sort_enabled = true +texture_filter = 1 + +[node name="TileMapLayer" type="TileMapLayer" parent="Level/YSorted"] +y_sort_enabled = true +tile_map_data = PackedByteArray("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") +tile_set = ExtResource("1_hcuwu") +navigation_enabled = false + +[node name="StaticBody2D" type="StaticBody2D" parent="Level/YSorted"] + +[node name="Sakura" type="Sprite2D" parent="Level/YSorted/StaticBody2D"] +position = Vector2(17, -5) +texture = ExtResource("2_6njhj") +offset = Vector2(8, -54) +flip_h = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Level/YSorted/StaticBody2D"] +position = Vector2(33.5, -8.5) +shape = SubResource("RectangleShape2D_16726") + +[node name="Shrine" type="Sprite2D" parent="Level/YSorted"] +position = Vector2(0, 38.5) +texture = ExtResource("3_6njhj") +offset = Vector2(8, -54) +flip_h = true + +[node name="Camera2D" type="Camera2D" parent="."] +position = Vector2(0, -40) +zoom = Vector2(4.5, 4.5) + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_6njhj") + +[node name="CanvasLayer" type="CanvasLayer" parent="."] + +[node name="Label" type="Label" parent="CanvasLayer"] +texture_filter = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -128.0 +offset_top = -22.0 +offset_right = 128.0 +offset_bottom = 164.0 +grow_horizontal = 2 +text = "陥落" +label_settings = SubResource("LabelSettings_gna3x") +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="Label2" type="Label" parent="CanvasLayer"] +texture_filter = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -106.0 +offset_top = 93.0 +offset_right = 106.0 +offset_bottom = 211.0 +grow_horizontal = 2 +text = "The shrine has fallen" +label_settings = SubResource("LabelSettings_crwea") +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="HFlowContainer" type="HFlowContainer" parent="CanvasLayer"] +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -147.0 +offset_top = -122.0 +offset_right = 147.0 +offset_bottom = -2.0 +grow_horizontal = 2 +grow_vertical = 0 +alignment = 1 + +[node name="Retry" type="TextureButton" parent="CanvasLayer/HFlowContainer"] +texture_filter = 1 +custom_minimum_size = Vector2(200, 50) +layout_mode = 2 +texture_normal = ExtResource("5_gna3x") +stretch_mode = 5 +script = ExtResource("7_crwea") +_changeTo = 1 + +[node name="Label" type="Label" parent="CanvasLayer/HFlowContainer/Retry"] +texture_filter = 1 +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -2.0 +offset_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "Retry" +label_settings = SubResource("LabelSettings_hcuwu") +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="Menu" type="TextureButton" parent="CanvasLayer/HFlowContainer"] +texture_filter = 1 +custom_minimum_size = Vector2(200, 50) +layout_mode = 2 +texture_normal = ExtResource("5_gna3x") +stretch_mode = 5 +script = ExtResource("7_crwea") + +[node name="Label" type="Label" parent="CanvasLayer/HFlowContainer/Menu"] +texture_filter = 1 +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -2.0 +offset_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "Main Menu" +label_settings = SubResource("LabelSettings_hcuwu") +horizontal_alignment = 1 +vertical_alignment = 1 diff --git a/Scenes/game.tscn b/Scenes/game.tscn index 3f052e8..38ecef1 100644 --- a/Scenes/game.tscn +++ b/Scenes/game.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=45 format=4 uid="uid://csyk43kt3xbyx"] +[gd_scene load_steps=54 format=4 uid="uid://csyk43kt3xbyx"] [ext_resource type="TileSet" uid="uid://b15j7vhkfu415" path="res://Resources/environmentTileMap.tres" id="1_ebmjs"] [ext_resource type="Script" uid="uid://djp8dmixf6sq2" path="res://Scripts/Common/GameController.cs" id="1_i6g32"] [ext_resource type="Script" uid="uid://b0uosq6r5dbqa" path="res://Scripts/Turrets/TurretController.cs" id="1_nb51f"] +[ext_resource type="Script" uid="uid://ch2o7voah6o3o" path="res://Scripts/Common/PauseManager.cs" id="1_tgy6u"] [ext_resource type="Script" uid="uid://bhxyvnirfeipr" path="res://Scripts/Enemies/EnemyPool.cs" id="2_i6g32"] [ext_resource type="Script" uid="uid://cds2rrl4yjexf" path="res://Scripts/Enemies/EnemySpawner.cs" id="3_1l0tm"] [ext_resource type="PackedScene" uid="uid://8230dpmp7mic" path="res://Prefabs/Turrets/Placeholders/kitsune_ph.tscn" id="3_ewbju"] @@ -25,7 +26,11 @@ [ext_resource type="Shader" uid="uid://8dk8mi2w1xl6" path="res://Scenes/game.tres" id="14_1phco"] [ext_resource type="Texture2D" uid="uid://2x62ipg12256" path="res://Assets/Sprites/Vfx/particle.png" id="16_22asu"] [ext_resource type="Script" uid="uid://dxcke7geb20dm" path="res://Scripts/Misc/Floating.gd" id="19_fkdbe"] -[ext_resource type="AudioStream" uid="uid://dbsuw8omrcx1d" path="res://Assets/Sounds/Music/8bit-mysterious-kyouto_reverb_Loop.ogg" id="26_fkdbe"] +[ext_resource type="Script" uid="uid://fxb27qlab5nb" path="res://Scripts/UI/PriceUpdater.cs" id="25_mucmn"] +[ext_resource type="FontFile" uid="uid://2ojf62uk562d" path="res://Assets/Fonts/DotGothic16-Regular.ttf" id="26_81klo"] +[ext_resource type="Texture2D" uid="uid://cdaoxfxcl87xq" path="res://Assets/Sprites/UI/Score.png" id="27_8m3t6"] +[ext_resource type="Texture2D" uid="uid://dudgvn6o3ex" path="res://Assets/Sprites/UI/button.png" id="27_tgy6u"] +[ext_resource type="Script" uid="uid://bsmpt1ig823du" path="res://Scripts/UI/SceneChangerBtn.cs" id="29_cwurv"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_1l0tm"] size = Vector2(19, 11) @@ -119,6 +124,9 @@ adjustment_contrast = 1.1 atlas = ExtResource("11_o5yvi") region = Rect2(0, 0, 16, 16) +[sub_resource type="LabelSettings" id="LabelSettings_ese38"] +font = ExtResource("12_rfjv2") + [sub_resource type="AtlasTexture" id="AtlasTexture_nnt18"] atlas = ExtResource("11_o5yvi") region = Rect2(0, 16, 16, 15) @@ -137,9 +145,31 @@ shadow_size = 0 [sub_resource type="ShaderMaterial" id="ShaderMaterial_nb51f"] shader = ExtResource("14_1phco") -[node name="Root" type="Node2D"] +[sub_resource type="LabelSettings" id="LabelSettings_cwurv"] +font = ExtResource("26_81klo") +font_size = 128 +outline_size = 12 +outline_color = Color(0, 0, 0, 1) + +[sub_resource type="LabelSettings" id="LabelSettings_mucmn"] +font = ExtResource("12_rfjv2") +font_size = 18 +outline_size = 2 +outline_color = Color(0, 0, 0, 1) + +[sub_resource type="LabelSettings" id="LabelSettings_8m3t6"] +font = ExtResource("26_81klo") +font_size = 36 + +[node name="Game" type="Node2D"] texture_filter = 1 +[node name="PauseManager" type="Node" parent="." node_paths=PackedStringArray("_hud", "_pauseMenu")] +process_mode = 3 +script = ExtResource("1_tgy6u") +_hud = NodePath("../Hud") +_pauseMenu = NodePath("../PauseMenu") + [node name="TurretController" type="Node2D" parent="." node_paths=PackedStringArray("_turretParent")] script = ExtResource("1_nb51f") _typeToPrefab = Dictionary[int, PackedScene]({ @@ -153,12 +183,14 @@ _typeToPlaceholder = Dictionary[int, PackedScene]({ 2: ExtResource("5_7nbq1") }) _turretParent = NodePath("../Level/YSorted/Turrets") +BasePrice = 125 -[node name="GameController" type="Node" parent="." node_paths=PackedStringArray("_CurrencyLabel", "_ShrineHealthLabel")] +[node name="GameController" type="Node" parent="." node_paths=PackedStringArray("_CurrencyLabel", "_ShrineHealthLabel", "_scoreLabel")] script = ExtResource("1_i6g32") _ShrineStartHP = 100.0 -_CurrencyLabel = NodePath("../CanvasLayer/UIRoot/CurrencyImg/CurrencyLabel") -_ShrineHealthLabel = NodePath("../CanvasLayer/UIRoot/ShrineHealthImg/ShrineHealthLabel") +_CurrencyLabel = NodePath("../Hud/UIRoot/CurrencyImg/CurrencyLabel") +_ShrineHealthLabel = NodePath("../Hud/UIRoot/ShrineHealthImg/ShrineHealthLabel") +_scoreLabel = NodePath("../Hud/UIRoot/Score/ScoreLabel") [node name="EnemyController" type="Node" parent="."] @@ -395,9 +427,9 @@ current = true [node name="WorldEnvironment" type="WorldEnvironment" parent="."] environment = SubResource("Environment_h4fw4") -[node name="CanvasLayer" type="CanvasLayer" parent="."] +[node name="Hud" type="CanvasLayer" parent="."] -[node name="UIRoot" type="Control" parent="CanvasLayer"] +[node name="UIRoot" type="Control" parent="Hud"] texture_filter = 1 layout_mode = 3 anchors_preset = 15 @@ -407,7 +439,7 @@ grow_horizontal = 2 grow_vertical = 2 mouse_filter = 1 -[node name="GridContainer" type="GridContainer" parent="CanvasLayer/UIRoot"] +[node name="GridContainer" type="GridContainer" parent="Hud/UIRoot"] layout_mode = 1 anchors_preset = 7 anchor_left = 0.5 @@ -423,28 +455,90 @@ grow_vertical = 0 scale = Vector2(2, 2) columns = 3 -[node name="Oni" type="Button" parent="CanvasLayer/UIRoot/GridContainer"] +[node name="Oni" type="Button" parent="Hud/UIRoot/GridContainer"] custom_minimum_size = Vector2(42, 42) layout_mode = 2 icon = SubResource("AtlasTexture_nb51f") icon_alignment = 1 expand_icon = true -[node name="Kitsune" type="Button" parent="CanvasLayer/UIRoot/GridContainer"] +[node name="Price" type="Label" parent="Hud/UIRoot/GridContainer/Oni"] +visible = false +layout_mode = 0 +offset_left = 20.0 +offset_top = -20.0 +offset_right = 60.0 +offset_bottom = 3.0 +text = "999" +label_settings = SubResource("LabelSettings_ese38") +vertical_alignment = 1 +script = ExtResource("25_mucmn") + +[node name="TextureRect" type="TextureRect" parent="Hud/UIRoot/GridContainer/Oni/Price"] +layout_mode = 0 +offset_left = -20.0 +offset_right = 20.0 +offset_bottom = 40.0 +scale = Vector2(0.5, 0.5) +texture = ExtResource("13_1phco") + +[node name="Kitsune" type="Button" parent="Hud/UIRoot/GridContainer"] custom_minimum_size = Vector2(42, 42) layout_mode = 2 icon = SubResource("AtlasTexture_nnt18") icon_alignment = 1 expand_icon = true -[node name="Tengu" type="Button" parent="CanvasLayer/UIRoot/GridContainer"] +[node name="Price" type="Label" parent="Hud/UIRoot/GridContainer/Kitsune"] +visible = false +layout_mode = 0 +offset_left = 14.0 +offset_top = -20.0 +offset_right = 54.0 +offset_bottom = 3.0 +text = "125" +label_settings = SubResource("LabelSettings_ese38") +horizontal_alignment = 1 +vertical_alignment = 1 +script = ExtResource("25_mucmn") + +[node name="TextureRect" type="TextureRect" parent="Hud/UIRoot/GridContainer/Kitsune/Price"] +layout_mode = 0 +offset_left = -14.0 +offset_right = 26.0 +offset_bottom = 40.0 +scale = Vector2(0.5, 0.5) +texture = ExtResource("13_1phco") + +[node name="Tengu" type="Button" parent="Hud/UIRoot/GridContainer"] custom_minimum_size = Vector2(42, 42) layout_mode = 2 icon = SubResource("AtlasTexture_ewbju") icon_alignment = 1 expand_icon = true -[node name="CurrencyImg" type="TextureRect" parent="CanvasLayer/UIRoot"] +[node name="Price" type="Label" parent="Hud/UIRoot/GridContainer/Tengu"] +visible = false +layout_mode = 0 +offset_left = 12.0 +offset_top = -20.0 +offset_right = 52.0 +offset_bottom = 3.0 +text = "125" +label_settings = SubResource("LabelSettings_ese38") +horizontal_alignment = 1 +vertical_alignment = 1 +script = ExtResource("25_mucmn") + +[node name="TextureRect" type="TextureRect" parent="Hud/UIRoot/GridContainer/Tengu/Price"] +layout_mode = 0 +offset_left = -12.0 +offset_right = 28.0 +offset_bottom = 40.0 +scale = Vector2(0.5, 0.5) +texture = ExtResource("13_1phco") + +[node name="CurrencyImg" type="TextureRect" parent="Hud/UIRoot"] layout_mode = 1 offset_left = 8.0 offset_top = 8.0 @@ -453,7 +547,7 @@ offset_bottom = 48.0 scale = Vector2(2, 2) texture = ExtResource("13_1phco") -[node name="CurrencyLabel" type="Label" parent="CanvasLayer/UIRoot/CurrencyImg"] +[node name="CurrencyLabel" type="Label" parent="Hud/UIRoot/CurrencyImg"] layout_mode = 1 offset_left = 40.0 offset_top = 8.0 @@ -462,7 +556,26 @@ offset_bottom = 36.0 text = "99999999" label_settings = SubResource("LabelSettings_o5yvi") -[node name="ShrineHealthImg" type="TextureRect" parent="CanvasLayer/UIRoot"] +[node name="Score" type="TextureRect" parent="Hud/UIRoot"] +layout_mode = 1 +offset_left = 1096.0 +offset_top = 8.0 +offset_right = 1120.0 +offset_bottom = 32.0 +scale = Vector2(2, 2) +texture = ExtResource("27_8m3t6") + +[node name="ScoreLabel" type="Label" parent="Hud/UIRoot/Score"] +layout_mode = 1 +offset_left = -228.0 +offset_top = -2.5 +offset_right = -2.0 +offset_bottom = 25.5 +text = "99999999" +label_settings = SubResource("LabelSettings_o5yvi") +horizontal_alignment = 2 + +[node name="ShrineHealthImg" type="TextureRect" parent="Hud/UIRoot"] self_modulate = Color(1, 0, 0, 1) material = SubResource("ShaderMaterial_nb51f") layout_mode = 1 @@ -473,7 +586,7 @@ offset_bottom = 144.0 scale = Vector2(2, 2) texture = ExtResource("13_1phco") -[node name="ShrineHealthLabel" type="Label" parent="CanvasLayer/UIRoot/ShrineHealthImg"] +[node name="ShrineHealthLabel" type="Label" parent="Hud/UIRoot/ShrineHealthImg"] layout_mode = 1 offset_left = 40.0 offset_top = 8.0 @@ -482,7 +595,7 @@ offset_bottom = 36.0 text = "100%" label_settings = SubResource("LabelSettings_o5yvi") -[node name="StartWaveBtn" type="Button" parent="CanvasLayer/UIRoot"] +[node name="StartWaveBtn" type="Button" parent="Hud/UIRoot"] visible = false layout_mode = 0 offset_left = 872.0 @@ -492,13 +605,107 @@ offset_bottom = 599.0 scale = Vector2(2, 2) text = "Start Next Wave" -[node name="MusicPLayer" type="AudioStreamPlayer" parent="."] -stream = ExtResource("26_fkdbe") -volume_db = -30.0 -autoplay = true -parameters/looping = true +[node name="PauseMenu" type="CanvasLayer" parent="."] +process_mode = 3 +visible = false -[connection signal="pressed" from="CanvasLayer/UIRoot/GridContainer/Oni" to="TurretController" method="StartPlaceingTurret" binds= [2]] -[connection signal="pressed" from="CanvasLayer/UIRoot/GridContainer/Kitsune" to="TurretController" method="StartPlaceingTurret" binds= [0]] -[connection signal="pressed" from="CanvasLayer/UIRoot/GridContainer/Tengu" to="TurretController" method="StartPlaceingTurret" binds= [1]] -[connection signal="pressed" from="CanvasLayer/UIRoot/StartWaveBtn" to="GameController" method="StartWave"] +[node name="Label" type="Label" parent="PauseMenu"] +texture_filter = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -128.0 +offset_top = -22.0 +offset_right = 128.0 +offset_bottom = 164.0 +grow_horizontal = 2 +text = "一時停止" +label_settings = SubResource("LabelSettings_cwurv") +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="Label2" type="Label" parent="PauseMenu"] +texture_filter = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -106.0 +offset_top = 93.0 +offset_right = 106.0 +offset_bottom = 211.0 +grow_horizontal = 2 +text = "The game is paused" +label_settings = SubResource("LabelSettings_mucmn") +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="HFlowContainer" type="HFlowContainer" parent="PauseMenu"] +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -147.0 +offset_top = -122.0 +offset_right = 147.0 +offset_bottom = -2.0 +grow_horizontal = 2 +grow_vertical = 0 +alignment = 1 + +[node name="Continue" type="TextureButton" parent="PauseMenu/HFlowContainer"] +texture_filter = 1 +custom_minimum_size = Vector2(200, 50) +layout_mode = 2 +texture_normal = ExtResource("27_tgy6u") +stretch_mode = 5 + +[node name="Label" type="Label" parent="PauseMenu/HFlowContainer/Continue"] +texture_filter = 1 +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -2.0 +offset_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "Continue" +label_settings = SubResource("LabelSettings_8m3t6") +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="Menu" type="TextureButton" parent="PauseMenu/HFlowContainer"] +texture_filter = 1 +custom_minimum_size = Vector2(200, 50) +layout_mode = 2 +texture_normal = ExtResource("27_tgy6u") +stretch_mode = 5 +script = ExtResource("29_cwurv") + +[node name="Label" type="Label" parent="PauseMenu/HFlowContainer/Menu"] +texture_filter = 1 +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -2.0 +offset_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "Main Menu" +label_settings = SubResource("LabelSettings_8m3t6") +horizontal_alignment = 1 +vertical_alignment = 1 + +[connection signal="mouse_entered" from="Hud/UIRoot/GridContainer/Oni" to="Hud/UIRoot/GridContainer/Oni/Price" method="set_visible" binds= [true]] +[connection signal="mouse_exited" from="Hud/UIRoot/GridContainer/Oni" to="Hud/UIRoot/GridContainer/Oni/Price" method="set_visible" binds= [false]] +[connection signal="pressed" from="Hud/UIRoot/GridContainer/Oni" to="TurretController" method="StartPlaceingTurret" binds= [2]] +[connection signal="mouse_entered" from="Hud/UIRoot/GridContainer/Kitsune" to="Hud/UIRoot/GridContainer/Kitsune/Price" method="set_visible" binds= [true]] +[connection signal="mouse_exited" from="Hud/UIRoot/GridContainer/Kitsune" to="Hud/UIRoot/GridContainer/Kitsune/Price" method="set_visible" binds= [false]] +[connection signal="pressed" from="Hud/UIRoot/GridContainer/Kitsune" to="TurretController" method="StartPlaceingTurret" binds= [0]] +[connection signal="mouse_entered" from="Hud/UIRoot/GridContainer/Tengu" to="Hud/UIRoot/GridContainer/Tengu/Price" method="set_visible" binds= [true]] +[connection signal="mouse_exited" from="Hud/UIRoot/GridContainer/Tengu" to="Hud/UIRoot/GridContainer/Tengu/Price" method="set_visible" binds= [false]] +[connection signal="pressed" from="Hud/UIRoot/GridContainer/Tengu" to="TurretController" method="StartPlaceingTurret" binds= [1]] +[connection signal="pressed" from="Hud/UIRoot/StartWaveBtn" to="GameController" method="StartWave"] +[connection signal="pressed" from="PauseMenu/HFlowContainer/Continue" to="PauseManager" method="ContinueGame"] diff --git a/Scenes/menu.tscn b/Scenes/menu.tscn new file mode 100644 index 0000000..338450a --- /dev/null +++ b/Scenes/menu.tscn @@ -0,0 +1,267 @@ +[gd_scene load_steps=12 format=3 uid="uid://cof1iapx258cw"] + +[ext_resource type="Texture2D" uid="uid://bb6vffiwr24cs" path="res://Assets/Sprites/UI/logokg.png" id="1_1rerr"] +[ext_resource type="Texture2D" uid="uid://dudgvn6o3ex" path="res://Assets/Sprites/UI/button.png" id="1_cayip"] +[ext_resource type="FontFile" uid="uid://2ojf62uk562d" path="res://Assets/Fonts/DotGothic16-Regular.ttf" id="2_158mb"] +[ext_resource type="Script" uid="uid://bsmpt1ig823du" path="res://Scripts/UI/SceneChangerBtn.cs" id="2_jsrd8"] +[ext_resource type="Texture2D" uid="uid://2x62ipg12256" path="res://Assets/Sprites/Vfx/particle.png" id="4_158mb"] +[ext_resource type="Script" uid="uid://dsjivlkkwvwqs" path="res://Scripts/UI/QuitBtn.gd" id="4_wbdvm"] +[ext_resource type="FontFile" uid="uid://b8lsp07ucxq6p" path="res://Assets/Fonts/MintsodaLimeGreen13X16Regular-KVvzA.ttf" id="4_wwsa2"] + +[sub_resource type="LabelSettings" id="LabelSettings_wwsa2"] +font = ExtResource("2_158mb") +font_size = 36 + +[sub_resource type="LabelSettings" id="LabelSettings_jsrd8"] +font = ExtResource("4_wwsa2") +font_size = 51 + +[sub_resource type="LabelSettings" id="LabelSettings_wbdvm"] +font = ExtResource("4_wwsa2") +font_size = 26 + +[sub_resource type="Gradient" id="Gradient_wwsa2"] +offsets = PackedFloat32Array(0, 0.6683673, 1) +colors = PackedColorArray(0, 0, 0, 0, 4.416, 2.127, 3.729, 1, 1, 1, 1, 0) + +[node name="Menu" type="Node2D"] + +[node name="Camera2D" type="Camera2D" parent="."] +zoom = Vector2(4, 4) + +[node name="CanvasLayer" type="CanvasLayer" parent="."] + +[node name="Control" type="Control" parent="CanvasLayer"] +texture_filter = 1 +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="HFlowContainer" type="VFlowContainer" parent="CanvasLayer/Control"] +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -100.0 +offset_top = -244.0 +offset_right = 100.0 +offset_bottom = -19.0 +grow_horizontal = 2 +grow_vertical = 0 +alignment = 1 +last_wrap_alignment = 2 + +[node name="Start" type="TextureButton" parent="CanvasLayer/Control/HFlowContainer"] +texture_filter = 1 +custom_minimum_size = Vector2(200, 50) +layout_mode = 2 +texture_normal = ExtResource("1_cayip") +stretch_mode = 5 +script = ExtResource("2_jsrd8") +_changeTo = 1 + +[node name="Label" type="Label" parent="CanvasLayer/Control/HFlowContainer/Start"] +texture_filter = 1 +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -2.0 +offset_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "Start" +label_settings = SubResource("LabelSettings_wwsa2") +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="Settings" type="TextureButton" parent="CanvasLayer/Control/HFlowContainer"] +visible = false +texture_filter = 1 +custom_minimum_size = Vector2(200, 50) +layout_mode = 2 +texture_normal = ExtResource("1_cayip") +stretch_mode = 5 + +[node name="Label" type="Label" parent="CanvasLayer/Control/HFlowContainer/Settings"] +texture_filter = 1 +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -2.0 +offset_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "Settings" +label_settings = SubResource("LabelSettings_wwsa2") +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="Credits" type="TextureButton" parent="CanvasLayer/Control/HFlowContainer"] +texture_filter = 1 +custom_minimum_size = Vector2(200, 50) +layout_mode = 2 +texture_normal = ExtResource("1_cayip") +stretch_mode = 5 + +[node name="Label" type="Label" parent="CanvasLayer/Control/HFlowContainer/Credits"] +texture_filter = 1 +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -2.0 +offset_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "Credits" +label_settings = SubResource("LabelSettings_wwsa2") +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="Quit" type="TextureButton" parent="CanvasLayer/Control/HFlowContainer"] +texture_filter = 1 +custom_minimum_size = Vector2(200, 50) +layout_mode = 2 +texture_normal = ExtResource("1_cayip") +stretch_mode = 5 +script = ExtResource("4_wbdvm") + +[node name="Label" type="Label" parent="CanvasLayer/Control/HFlowContainer/Quit"] +texture_filter = 1 +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -2.0 +offset_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "Quit" +label_settings = SubResource("LabelSettings_wwsa2") +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="Logo" type="TextureRect" parent="CanvasLayer/Control"] +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -368.0 +offset_top = -38.0 +offset_right = 368.00006 +offset_bottom = 422.0 +grow_horizontal = 2 +texture = ExtResource("1_1rerr") + +[node name="Credits" type="Control" parent="CanvasLayer/Control"] +visible = false +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="Mainmenu" type="TextureButton" parent="CanvasLayer/Control/Credits"] +texture_filter = 1 +custom_minimum_size = Vector2(200, 50) +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -100.0 +offset_top = -82.0 +offset_right = 100.0 +offset_bottom = -32.0 +grow_horizontal = 2 +grow_vertical = 0 +texture_normal = ExtResource("1_cayip") +stretch_mode = 5 + +[node name="Label" type="Label" parent="CanvasLayer/Control/Credits/Mainmenu"] +texture_filter = 1 +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -2.0 +offset_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "Back" +label_settings = SubResource("LabelSettings_wwsa2") +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="Label" type="Label" parent="CanvasLayer/Control/Credits"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -102.0 +offset_top = 45.0 +offset_right = 102.0 +offset_bottom = 166.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "Credits +" +label_settings = SubResource("LabelSettings_jsrd8") +horizontal_alignment = 1 + +[node name="Label2" type="Label" parent="CanvasLayer/Control/Credits"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -244.0 +offset_top = 104.0 +offset_right = 244.0 +offset_bottom = 266.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "Marumarsu - programming & SFX +Sraapfft - art +Belzebunny - art +Music - music.storyinvention.com +" +label_settings = SubResource("LabelSettings_wbdvm") + +[node name="CPUParticles2D" type="CPUParticles2D" parent="."] +position = Vector2(-4, -84) +amount = 32 +texture = ExtResource("4_158mb") +lifetime = 10.0 +randomness = 1.0 +lifetime_randomness = 0.31 +emission_shape = 3 +emission_rect_extents = Vector2(152.29, 1) +spread = 0.0 +gravity = Vector2(7, 15) +angular_velocity_min = -50.0 +angular_velocity_max = 50.0 +radial_accel_min = -10.0 +radial_accel_max = 10.0 +scale_amount_min = 0.2 +scale_amount_max = 0.3 +color = Color(4.415934, 2.1274936, 3.7294016, 1) +color_ramp = SubResource("Gradient_wwsa2") + +[connection signal="pressed" from="CanvasLayer/Control/HFlowContainer/Credits" to="CanvasLayer/Control/HFlowContainer" method="set_visible" binds= [false]] +[connection signal="pressed" from="CanvasLayer/Control/HFlowContainer/Credits" to="CanvasLayer/Control/Credits" method="set_visible" binds= [true]] +[connection signal="pressed" from="CanvasLayer/Control/HFlowContainer/Quit" to="CanvasLayer/Control/HFlowContainer/Quit" method="_on_QuitButton_pressed"] +[connection signal="pressed" from="CanvasLayer/Control/Credits/Mainmenu" to="CanvasLayer/Control/HFlowContainer" method="set_visible" binds= [true]] +[connection signal="pressed" from="CanvasLayer/Control/Credits/Mainmenu" to="CanvasLayer/Control/Credits" method="set_visible" binds= [false]] diff --git a/Scripts/Common/GameController.cs b/Scripts/Common/GameController.cs index 7525df8..3cd01d8 100644 --- a/Scripts/Common/GameController.cs +++ b/Scripts/Common/GameController.cs @@ -8,9 +8,11 @@ public partial class GameController : Node [Export] private float _ShrineStartHP; [Export] private Label _CurrencyLabel; [Export] private Label _ShrineHealthLabel; + [Export] private Label _scoreLabel; public int Wave { get; private set; } public int Currency { get; private set; } + public int Score { get; private set; } public float ShrineHealth { get; private set; } private bool _waveOnGoing = false; @@ -20,10 +22,11 @@ public partial class GameController : Node GameController.Instance = this; Wave = 0; Currency = 300; - ShrineHealth = 100; - + ShrineHealth = _ShrineStartHP; + _CurrencyLabel.Text = Currency.ToString(); _ShrineHealthLabel.Text = $"{(100f * (ShrineHealth /_ShrineStartHP)):F1}%"; + _scoreLabel.Text = "0"; CallDeferred(nameof(DelayNextWave)); } @@ -34,12 +37,7 @@ public partial class GameController : Node Wave++; _waveOnGoing = true; - int amountToSpawn = (int)Math.Round(5 * Math.Pow(Wave, 1.05)); - - for (int i = 0; i < 100; i++) - { - // GD.Print((int)Math.Round(5 * Math.Pow(i + 1, 1.05))); - } + int amountToSpawn = (int)Math.Round(5 * Math.Pow(Wave, 1.025)); EnemySpawner.Instance.EnemiesSpawned = amountToSpawn; @@ -73,7 +71,7 @@ public partial class GameController : Node _ShrineHealthLabel.Text = $"{(100f * (ShrineHealth /_ShrineStartHP)):F1}%"; if (ShrineHealth <= 0) { - // TODO LOSE SCENARIO + SceneManager.Instance.ChangeScene(Scenes.End); } } @@ -81,6 +79,8 @@ public partial class GameController : Node { v = Math.Abs(v); Currency += v; + Score += v; + _scoreLabel.Text = Score.ToString(); _CurrencyLabel.Text = Currency.ToString(); } diff --git a/Scripts/Common/PauseManager.cs b/Scripts/Common/PauseManager.cs new file mode 100644 index 0000000..b567aed --- /dev/null +++ b/Scripts/Common/PauseManager.cs @@ -0,0 +1,36 @@ +using Godot; +using System; + +public partial class PauseManager : Node +{ + [Export] private CanvasLayer _hud; + [Export] private CanvasLayer _pauseMenu; + + public override void _Process(double delta) + { + if (Input.IsActionJustPressed("pause")) + { + bool paused = GetTree().Paused; + if (!paused) + { + PauseGame(); + return; + } + ContinueGame(); + } + } + + public void PauseGame() + { + GetTree().Paused = true; + _hud.Visible = false; + _pauseMenu.Visible = true; + } + + public void ContinueGame() + { + GetTree().Paused = false; + _hud.Visible = true; + _pauseMenu.Visible = false; + } +} diff --git a/Scripts/Common/PauseManager.cs.uid b/Scripts/Common/PauseManager.cs.uid new file mode 100644 index 0000000..08c2ef9 --- /dev/null +++ b/Scripts/Common/PauseManager.cs.uid @@ -0,0 +1 @@ +uid://ch2o7voah6o3o diff --git a/Scripts/Common/SceneManager.cs b/Scripts/Common/SceneManager.cs new file mode 100644 index 0000000..020d5aa --- /dev/null +++ b/Scripts/Common/SceneManager.cs @@ -0,0 +1,84 @@ +using Godot; +using System; + +public enum Scenes +{ + Menu, + Game, + End +} + +public partial class SceneManager : Node +{ + public static SceneManager Instance; + + [Export] private Node _root; + + [Export] private PackedScene _gameScene; + [Export] private PackedScene _menuScene; + [Export] private PackedScene _endScene; + + private Node _game; + private Node _menu; + private Node _end; + + public override void _Ready() + { + Instance = this; + CallDeferred(nameof(EnterMenu)); + } + + public void ChangeScene(Scenes s) + { + GetTree().Paused = false; + switch (s) + { + case Scenes.Menu: + EnterMenu(); + break; + case Scenes.Game: + EnterGame(); + break; + case Scenes.End: + EnterEnd(); + break; + default: + throw new ArgumentOutOfRangeException(nameof(s), s, null); + } + } + + private void EnterMenu() + { + RemoveScene(ref _game); + RemoveScene(ref _end); + AddScene(ref _menuScene, ref _menu); + } + + private void EnterGame() + { + RemoveScene(ref _menu); + RemoveScene(ref _end); + AddScene(ref _gameScene, ref _game); + } + + private void EnterEnd() // Not the Minecraft + { + RemoveScene(ref _game); + RemoveScene(ref _menu); + AddScene(ref _endScene, ref _end); + } + + private void RemoveScene(ref Node n) + { + if (n == null) return; + n.GetParent()?.RemoveChild(n); + n.QueueFree(); + n = null; + } + + private void AddScene(ref PackedScene s, ref Node n) + { + n = s.Instantiate(); + _root.AddChild(n); + } +} diff --git a/Scripts/Common/SceneManager.cs.uid b/Scripts/Common/SceneManager.cs.uid new file mode 100644 index 0000000..959a04a --- /dev/null +++ b/Scripts/Common/SceneManager.cs.uid @@ -0,0 +1 @@ +uid://bmdb22du7uvr1 diff --git a/Scripts/Enemies/EnemyMovement.cs b/Scripts/Enemies/EnemyMovement.cs index edbe598..7917871 100644 --- a/Scripts/Enemies/EnemyMovement.cs +++ b/Scripts/Enemies/EnemyMovement.cs @@ -8,7 +8,7 @@ public partial class EnemyMovement : Node [Export] private float _speed; private float _finalSpeed => _speed + 0.15f * (float)Math.Log(GameController.Instance.Wave + 1); - + private double _time = 0; public override void _EnterTree() diff --git a/Scripts/Enemies/EnemyPool.cs b/Scripts/Enemies/EnemyPool.cs index 9c8c22c..1f70151 100644 --- a/Scripts/Enemies/EnemyPool.cs +++ b/Scripts/Enemies/EnemyPool.cs @@ -1,3 +1,4 @@ +using System; using Godot; using System.Collections.Generic; @@ -53,10 +54,10 @@ public partial class EnemyPool : Node private void Died(Enemy e) { - GameController.Instance.AddCurrency(25); + GameController.Instance.AddCurrency((int)Math.Floor(e.Health.MaxHP)); ReturnToPool(e); } - + private void ReturnToPool(Enemy e) { EnemySpawner.Instance.EnemiesSpawned--; diff --git a/Scripts/Projectiles/Projectile.cs b/Scripts/Projectiles/Projectile.cs index 334f857..6ca21bf 100644 --- a/Scripts/Projectiles/Projectile.cs +++ b/Scripts/Projectiles/Projectile.cs @@ -13,6 +13,7 @@ public partial class Projectile : Node2D public event Action OnDespawn; public Vector2 Direction; + public float Damage; public override void _Ready() { @@ -34,7 +35,7 @@ public partial class Projectile : Node2D if (area is EnemyArea earea) { float isSe = _superEffective.Contains(earea.Enemy.Type) ? 2f : 1f; - earea.Enemy.Health.Substract(_baseDamage * isSe); + earea.Enemy.Health.Substract(Damage * isSe); } CallDeferred(nameof(Despawn)); diff --git a/Scripts/Turrets/DragMover.cs b/Scripts/Turrets/DragMover.cs index c77490c..582c958 100644 --- a/Scripts/Turrets/DragMover.cs +++ b/Scripts/Turrets/DragMover.cs @@ -7,6 +7,7 @@ public partial class DragMover : Node [Export] public Area2D CheckArea; // Overlap validation [Export] public Area2D ShootArea; // This gets disabled while dragging + private bool _tresholdReached = false; private bool _dragging; private Vector2 _dragOffset; private Vector2 _originalPosition; @@ -30,36 +31,52 @@ public partial class DragMover : Node if (!_canMove) return; if (@event is not InputEventMouseButton mb) return; if (mb.ButtonIndex != MouseButton.Left) return; - + if (mb.Pressed) { _dragging = true; ShootArea.Monitoring = false; _originalPosition = Parent.GlobalPosition; + Parent.SetModulate(Color.FromHtml("ffffff20")); _dragOffset = Parent.GlobalPosition - Parent.GetGlobalMousePosition(); } else { - _dragging = false; ShootArea.Monitoring = true; - - // Check overlaps when released - if (CheckArea.HasOverlappingAreas() || CheckArea.HasOverlappingBodies()) + if (CheckArea.HasOverlappingAreas() || CheckArea.HasOverlappingBodies() || !_tresholdReached) { Parent.GlobalPosition = _originalPosition; + Parent.SetModulate(Color.FromHtml("ffffffff")); } else { MovementDelay(); } + _tresholdReached = false; + _dragging = false; } } public override void _Process(double delta) { + if ((Parent.GetGlobalMousePosition() + _dragOffset).DistanceTo(_originalPosition) >= 10f && _dragging) + { + _tresholdReached = true; + } + + if ((Parent.GetGlobalMousePosition() + _dragOffset).DistanceTo(_originalPosition) <= 10f && !_tresholdReached) return; if (!_dragging) return; + if (CheckArea.HasOverlappingAreas() || CheckArea.HasOverlappingBodies()) + { + Parent.SetModulate(Color.FromHtml("ff000020")); + } + else + { + Parent.SetModulate(Color.FromHtml("ffffff20")); + } + Parent.GlobalPosition = Parent.GetGlobalMousePosition() + _dragOffset; } @@ -68,7 +85,7 @@ public partial class DragMover : Node ShootArea.Monitoring = false; _canMove = false; Parent.SetModulate(Color.FromHtml("ffffff20")); - await ToSignal(GetTree().CreateTimer(4), SceneTreeTimer.SignalName.Timeout); + await ToSignal(GetTree().CreateTimer(1.5), SceneTreeTimer.SignalName.Timeout); Parent.SetModulate(Color.FromHtml("ffffffff")); ShootArea.Monitoring = true; _canMove = true; diff --git a/Scripts/Turrets/Turret.cs b/Scripts/Turrets/Turret.cs index cec777e..3c2fbeb 100644 --- a/Scripts/Turrets/Turret.cs +++ b/Scripts/Turrets/Turret.cs @@ -13,9 +13,20 @@ public partial class Turret : Node [Export] private ProjectilePool _projectilePool; [Export] private AudioStreamPlayer2D _audio; private float _fireTimer = 0f; - + + public int Level { get; private set; } = 1; + public int UpgradeCost => 31 + (int)(31 * Math.Pow(Level, 1.75f)); + + public float FireRate => _fireRate + (Level - 1) * 0.05f; + public float Damage => 25 + (int)(10 + Math.Pow(Level, 1.5f)); + private HashSet _enemiesInRange = new HashSet(); + public void Upgrade() + { + Level++; + } + public override void _EnterTree() { _Attackrange.AreaEntered += EnemyEntered; @@ -42,7 +53,7 @@ public partial class Turret : Node { if (_enemiesInRange.Count == 0) return; _fireTimer += (float)delta; - if (!(_fireTimer >= 1f / _fireRate)) return; + if (!(_fireTimer >= 1f / FireRate)) return; _fireTimer = 0; _audio?.SetPitchScale(RandomHelper.Float(0.8f, 1.2f)); _audio?.Play(); @@ -50,6 +61,7 @@ public partial class Turret : Node var dir = (t.GlobalPosition - _parent.GlobalPosition).Normalized(); var proj = _projectilePool.Get(); proj.Direction = dir; + proj.Damage = Damage; proj.GlobalPosition = _parent.GlobalPosition; proj.Rotation = dir.Angle(); ProjectileParent.Instance.AddChild(proj); diff --git a/Scripts/Turrets/TurretController.cs b/Scripts/Turrets/TurretController.cs index c614b86..226cd50 100644 --- a/Scripts/Turrets/TurretController.cs +++ b/Scripts/Turrets/TurretController.cs @@ -1,6 +1,6 @@ using System; +using System.Collections.Generic; using Godot; -using Godot.Collections; public enum TurretType { @@ -11,10 +11,17 @@ public enum TurretType public partial class TurretController : Node2D { - [Export] private Dictionary _typeToPrefab; - [Export] private Dictionary _typeToPlaceholder; + public static TurretController Instance; + + [Export] private Godot.Collections.Dictionary _typeToPrefab; + [Export] private Godot.Collections.Dictionary _typeToPlaceholder; [Export] private Node2D _turretParent; + [Export] public int BasePrice; + public int TurretAmount => _allTurrets.Count; + + public int TurretPrice => BasePrice + (int)Math.Round(30f * Math.Pow(TurretAmount, 1.5f)); + [Signal] public delegate void PlaceTurretEventHandler(TurretType t); @@ -23,8 +30,11 @@ public partial class TurretController : Node2D private TurretPlaceholder _turretPlaceholder; private TurretType _currentlyPlacingType; + private HashSet _allTurrets = new(); + public override void _Ready() { + Instance = this; PlaceTurret += StartPlaceingTurret; } @@ -40,8 +50,9 @@ public partial class TurretController : Node2D { case MouseButton.Left: if (!_turretPlaceholder.CanPlace) return; - if (!GameController.Instance.TryRemoveCurrency(_turretPlaceholder.Cost)) return; + if (!GameController.Instance.TryRemoveCurrency(TurretPrice)) return; var newT = _typeToPrefab[_currentlyPlacingType].Instantiate() as Node2D; + _allTurrets.Add(newT); _turretParent.AddChild(newT); newT.GlobalPosition = mpos; break; diff --git a/Scripts/Turrets/TurretUpgrader.cs b/Scripts/Turrets/TurretUpgrader.cs new file mode 100644 index 0000000..3398ba0 --- /dev/null +++ b/Scripts/Turrets/TurretUpgrader.cs @@ -0,0 +1,48 @@ +using Godot; + +public partial class TurretUpgrader : Node +{ + [Export] private Turret _turret; + [Export] private Area2D _clickArea; + [Export] private Control _ui; + [Export] private Label _costLabel; + [Export] private Label _damageLabel; + [Export] private Label _fireRateLabel; + + public override void _Ready() + { + _clickArea.InputEvent += OnClickAreaInputEvent; + _clickArea.MouseEntered += MouseEntered; + _clickArea.MouseExited += MouseExited; + } + + private void OnClickAreaInputEvent(Node viewport, InputEvent @event, long shapeIdx) + { + if (@event is not InputEventMouseButton m) + { + return; + } + if (m.ButtonIndex != MouseButton.Right) return; + + if (!GameController.Instance.TryRemoveCurrency(_turret.UpgradeCost)) return; + _turret.Upgrade(); + _costLabel.Text = _turret.UpgradeCost.ToString(); + _damageLabel.Text = _turret.Damage.ToString(); + _fireRateLabel.Text = _turret.FireRate.ToString(); + } + + private void MouseEntered() + { + if (_ui == null) return; + _ui.Visible = true; + _costLabel.Text = _turret.UpgradeCost.ToString(); + _damageLabel.Text = _turret.Damage.ToString(); + _fireRateLabel.Text = _turret.FireRate.ToString(); + } + + private void MouseExited() + { + if (_ui == null) return; + _ui.Visible = false; + } +} \ No newline at end of file diff --git a/Scripts/Turrets/TurretUpgrader.cs.uid b/Scripts/Turrets/TurretUpgrader.cs.uid new file mode 100644 index 0000000..7a92c2d --- /dev/null +++ b/Scripts/Turrets/TurretUpgrader.cs.uid @@ -0,0 +1 @@ +uid://qf0qrqg0l7np diff --git a/Scripts/UI/PriceUpdater.cs b/Scripts/UI/PriceUpdater.cs new file mode 100644 index 0000000..6ddf790 --- /dev/null +++ b/Scripts/UI/PriceUpdater.cs @@ -0,0 +1,10 @@ +using Godot; +using System; + +public partial class PriceUpdater : Label +{ + public override void _Process(double delta) + { + Text = TurretController.Instance.TurretPrice.ToString(); + } +} diff --git a/Scripts/UI/PriceUpdater.cs.uid b/Scripts/UI/PriceUpdater.cs.uid new file mode 100644 index 0000000..1eaadfb --- /dev/null +++ b/Scripts/UI/PriceUpdater.cs.uid @@ -0,0 +1 @@ +uid://fxb27qlab5nb diff --git a/Scripts/UI/QuitBtn.gd b/Scripts/UI/QuitBtn.gd new file mode 100644 index 0000000..907d070 --- /dev/null +++ b/Scripts/UI/QuitBtn.gd @@ -0,0 +1,4 @@ +extends TextureButton + +func _on_QuitButton_pressed(): + get_tree().quit() diff --git a/Scripts/UI/QuitBtn.gd.uid b/Scripts/UI/QuitBtn.gd.uid new file mode 100644 index 0000000..edee3ac --- /dev/null +++ b/Scripts/UI/QuitBtn.gd.uid @@ -0,0 +1 @@ +uid://dsjivlkkwvwqs diff --git a/Scripts/UI/SceneChangerBtn.cs b/Scripts/UI/SceneChangerBtn.cs new file mode 100644 index 0000000..a5877e6 --- /dev/null +++ b/Scripts/UI/SceneChangerBtn.cs @@ -0,0 +1,16 @@ +using Godot; + +public partial class SceneChangerBtn : TextureButton +{ + [Export] private Scenes _changeTo; + + public override void _Ready() + { + ButtonUp += Change; + } + + private void Change() + { + SceneManager.Instance.ChangeScene(_changeTo); + } +} diff --git a/Scripts/UI/SceneChangerBtn.cs.uid b/Scripts/UI/SceneChangerBtn.cs.uid new file mode 100644 index 0000000..615c14d --- /dev/null +++ b/Scripts/UI/SceneChangerBtn.cs.uid @@ -0,0 +1 @@ +uid://bsmpt1ig823du diff --git a/project.godot b/project.godot index 3ebd1a5..0c4b22d 100644 --- a/project.godot +++ b/project.godot @@ -15,7 +15,7 @@ config/name_localized={ "ja": "仮面の保護者" } config/version="0.0.1" -run/main_scene="uid://csyk43kt3xbyx" +run/main_scene="uid://ddoe833kg11n5" config/features=PackedStringArray("4.5", "C#", "Forward Plus") boot_splash/show_image=false config/icon="res://icon.svg" @@ -66,6 +66,12 @@ attack={ , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":2,"pressure":0.0,"pressed":false,"script":null) ] } +pause={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":6,"pressure":0.0,"pressed":false,"script":null) +] +} [physics]