diff --git a/.gitignore b/.gitignore index d9aac21..b8b1d9d 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,6 @@ export_presets.cfg .mono/ data_*/ mono_crash.*.json + +# Godot/editor temp files +*.tmp \ No newline at end of file diff --git a/README.md b/README.md index 1b9e7b5..5954a50 100644 --- a/README.md +++ b/README.md @@ -25,8 +25,8 @@ Practice and learn the basics of the Godot Game Engine: - Add new levels to the game. - Make the UI more attractive and interesting. -- Implement sound. -- Implement enemies. +- Implement background music and add more sound effects. +- Implement variety of enemies with different attacks. ## How to Play This Game on Your Machine? @@ -57,6 +57,14 @@ Contributions to this project are welcome! If you'd like to contribute, please f 1. [Coco Code YouTube channel](https://www.youtube.com/watch?v=5V9f3MT86M8) and [video 2](https://www.youtube.com/watch?v=zL__a0Ei6Vs) 2. [Pixel adventure assets](https://pixelfrog-assets.itch.io/pixel-adventure-1) +3. [Brackeys YouTube Video](https://www.youtube.com/watch?v=LOhfqjmasi0) + +SFX are collected from: +* https://pixabay.com/sound-effects/search/retro%20food%20eating/ +* https://mixkit.co/free-sound-effects/game/ +* https://opengameart.org/content/library-of-game-sounds +* Bullet Pixel Art: https://bdragon1727.itch.io/fire-pixel-bullet-16x16 +* Enemy Pixel Art, Explosion, Hit Sound: https://brackeysgames.itch.io/brackeys-platformer-bundle ## License @@ -65,4 +73,3 @@ This project is licensed under the MIT License. ## Authors - [Md Mahmudul Hasan](https://github.com/MahmudulHasn) - Initial work -``` diff --git a/src/Pixel12x10.ttf b/src/assets/fonts/Pixel12x10.ttf similarity index 100% rename from src/Pixel12x10.ttf rename to src/assets/fonts/Pixel12x10.ttf diff --git a/src/Pixel12x10.ttf.import b/src/assets/fonts/Pixel12x10.ttf.import similarity index 58% rename from src/Pixel12x10.ttf.import rename to src/assets/fonts/Pixel12x10.ttf.import index 33745b0..a6cc72e 100644 --- a/src/Pixel12x10.ttf.import +++ b/src/assets/fonts/Pixel12x10.ttf.import @@ -3,25 +3,28 @@ importer="font_data_dynamic" type="FontFile" uid="uid://24exgbvh8liw" -path="res://.godot/imported/Pixel12x10.ttf-a5ac1331ffe4169facaf292785e0b57d.fontdata" +path="res://.godot/imported/Pixel12x10.ttf-a630306e89dc0c1d3e4eaf1be2d6452e.fontdata" [deps] -source_file="res://Pixel12x10.ttf" -dest_files=["res://.godot/imported/Pixel12x10.ttf-a5ac1331ffe4169facaf292785e0b57d.fontdata"] +source_file="res://assets/fonts/Pixel12x10.ttf" +dest_files=["res://.godot/imported/Pixel12x10.ttf-a630306e89dc0c1d3e4eaf1be2d6452e.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=1 +keep_rounding_remainders=true oversampling=0.0 Fallbacks=null fallbacks=[] diff --git a/src/icon.svg b/src/assets/icon.svg similarity index 100% rename from src/icon.svg rename to src/assets/icon.svg diff --git a/src/icon.svg.import b/src/assets/icon.svg.import similarity index 64% rename from src/icon.svg.import rename to src/assets/icon.svg.import index 5b577eb..bb8c596 100644 --- a/src/icon.svg.import +++ b/src/assets/icon.svg.import @@ -3,21 +3,23 @@ importer="texture" type="CompressedTexture2D" uid="uid://bkekd7yxl8q8n" -path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex" +path="res://.godot/imported/icon.svg-56083ea2a1f1a4f1e49773bdc6d7826c.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://icon.svg" -dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"] +source_file="res://assets/icon.svg" +dest_files=["res://.godot/imported/icon.svg-56083ea2a1f1a4f1e49773bdc6d7826c.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 @@ -25,6 +27,10 @@ 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 diff --git a/src/logo.png b/src/assets/logo.png similarity index 100% rename from src/logo.png rename to src/assets/logo.png diff --git a/src/logo.png.import b/src/assets/logo.png.import similarity index 60% rename from src/logo.png.import rename to src/assets/logo.png.import index 95a52c9..cf3708e 100644 --- a/src/logo.png.import +++ b/src/assets/logo.png.import @@ -3,21 +3,23 @@ importer="texture" type="CompressedTexture2D" uid="uid://h8ofoam00ee7" -path="res://.godot/imported/logo.png-cca8726399059c8d4f806e28e356b14d.ctex" +path="res://.godot/imported/logo.png-e2220799298e3631eb0e245316e0501a.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://logo.png" -dest_files=["res://.godot/imported/logo.png-cca8726399059c8d4f806e28e356b14d.ctex"] +source_file="res://assets/logo.png" +dest_files=["res://.godot/imported/logo.png-e2220799298e3631eb0e245316e0501a.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 @@ -25,6 +27,10 @@ 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 diff --git a/src/assets/sounds/eating_chips.wav b/src/assets/sounds/eating_chips.wav new file mode 100644 index 0000000..609c1cf Binary files /dev/null and b/src/assets/sounds/eating_chips.wav differ diff --git a/src/assets/sounds/eating_chips.wav.import b/src/assets/sounds/eating_chips.wav.import new file mode 100644 index 0000000..8e7a8ca --- /dev/null +++ b/src/assets/sounds/eating_chips.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://ds6aapbd8gtqj" +path="res://.godot/imported/eating_chips.wav-13c3ac8107ad6124e5a3648fc784d5ff.sample" + +[deps] + +source_file="res://assets/sounds/eating_chips.wav" +dest_files=["res://.godot/imported/eating_chips.wav-13c3ac8107ad6124e5a3648fc784d5ff.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/src/assets/sounds/explosion.wav b/src/assets/sounds/explosion.wav new file mode 100644 index 0000000..8a67b16 Binary files /dev/null and b/src/assets/sounds/explosion.wav differ diff --git a/src/assets/sounds/explosion.wav.import b/src/assets/sounds/explosion.wav.import new file mode 100644 index 0000000..06cd322 --- /dev/null +++ b/src/assets/sounds/explosion.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://ccwe75wc22bi1" +path="res://.godot/imported/explosion.wav-52e05e8d4b6600106c8dde082c90f915.sample" + +[deps] + +source_file="res://assets/sounds/explosion.wav" +dest_files=["res://.godot/imported/explosion.wav-52e05e8d4b6600106c8dde082c90f915.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/src/assets/sounds/hurt.wav b/src/assets/sounds/hurt.wav new file mode 100644 index 0000000..b46ecd7 Binary files /dev/null and b/src/assets/sounds/hurt.wav differ diff --git a/src/assets/sounds/hurt.wav.import b/src/assets/sounds/hurt.wav.import new file mode 100644 index 0000000..2edf599 --- /dev/null +++ b/src/assets/sounds/hurt.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://b4d7cblbraru8" +path="res://.godot/imported/hurt.wav-792baeb99505afd6a1496d4e4330b023.sample" + +[deps] + +source_file="res://assets/sounds/hurt.wav" +dest_files=["res://.godot/imported/hurt.wav-792baeb99505afd6a1496d4e4330b023.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/src/assets/sounds/jump_01.wav b/src/assets/sounds/jump_01.wav new file mode 100644 index 0000000..00a0266 Binary files /dev/null and b/src/assets/sounds/jump_01.wav differ diff --git a/src/assets/sounds/jump_01.wav.import b/src/assets/sounds/jump_01.wav.import new file mode 100644 index 0000000..ca6411a --- /dev/null +++ b/src/assets/sounds/jump_01.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://di1hle5wfth5w" +path="res://.godot/imported/jump_01.wav-dff3db895ca86b715c16ad19277eb998.sample" + +[deps] + +source_file="res://assets/sounds/jump_01.wav" +dest_files=["res://.godot/imported/jump_01.wav-dff3db895ca86b715c16ad19277eb998.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/src/assets/sounds/level_completed.wav b/src/assets/sounds/level_completed.wav new file mode 100644 index 0000000..b62f38c Binary files /dev/null and b/src/assets/sounds/level_completed.wav differ diff --git a/src/assets/sounds/level_completed.wav.import b/src/assets/sounds/level_completed.wav.import new file mode 100644 index 0000000..613e91f --- /dev/null +++ b/src/assets/sounds/level_completed.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://bq3nix7feex4u" +path="res://.godot/imported/level_completed.wav-1aa9ef9894f26d6f45e4107b4e843e8a.sample" + +[deps] + +source_file="res://assets/sounds/level_completed.wav" +dest_files=["res://.godot/imported/level_completed.wav-1aa9ef9894f26d6f45e4107b4e843e8a.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/src/Brown.png b/src/assets/sprites/Brown.png similarity index 100% rename from src/Brown.png rename to src/assets/sprites/Brown.png diff --git a/src/Brown.png.import b/src/assets/sprites/Brown.png.import similarity index 59% rename from src/Brown.png.import rename to src/assets/sprites/Brown.png.import index 3a19f6a..c7b19ed 100644 --- a/src/Brown.png.import +++ b/src/assets/sprites/Brown.png.import @@ -3,21 +3,23 @@ importer="texture" type="CompressedTexture2D" uid="uid://bryutm3lyetn6" -path="res://.godot/imported/Brown.png-150dcd85596b8e4cffe30274d1cab3fe.ctex" +path="res://.godot/imported/Brown.png-2675b63c7078d7e15d90edc75fc75b03.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Brown.png" -dest_files=["res://.godot/imported/Brown.png-150dcd85596b8e4cffe30274d1cab3fe.ctex"] +source_file="res://assets/sprites/Brown.png" +dest_files=["res://.godot/imported/Brown.png-2675b63c7078d7e15d90edc75fc75b03.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 @@ -25,6 +27,10 @@ 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 diff --git a/src/Checkpoint (Flag Idle)(64x64).png b/src/assets/sprites/Checkpoint (Flag Idle)(64x64).png similarity index 100% rename from src/Checkpoint (Flag Idle)(64x64).png rename to src/assets/sprites/Checkpoint (Flag Idle)(64x64).png diff --git a/src/Checkpoint (Flag Idle)(64x64).png.import b/src/assets/sprites/Checkpoint (Flag Idle)(64x64).png.import similarity index 61% rename from src/Checkpoint (Flag Idle)(64x64).png.import rename to src/assets/sprites/Checkpoint (Flag Idle)(64x64).png.import index 8683128..e1f0782 100644 --- a/src/Checkpoint (Flag Idle)(64x64).png.import +++ b/src/assets/sprites/Checkpoint (Flag Idle)(64x64).png.import @@ -3,21 +3,23 @@ importer="texture" type="CompressedTexture2D" uid="uid://bic2env31gc2" -path="res://.godot/imported/Checkpoint (Flag Idle)(64x64).png-68510ca7f061ea8a579e6cce3799486d.ctex" +path="res://.godot/imported/Checkpoint (Flag Idle)(64x64).png-5d0421c3927e42b229e4cc59080707c8.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Checkpoint (Flag Idle)(64x64).png" -dest_files=["res://.godot/imported/Checkpoint (Flag Idle)(64x64).png-68510ca7f061ea8a579e6cce3799486d.ctex"] +source_file="res://assets/sprites/Checkpoint (Flag Idle)(64x64).png" +dest_files=["res://.godot/imported/Checkpoint (Flag Idle)(64x64).png-5d0421c3927e42b229e4cc59080707c8.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 @@ -25,6 +27,10 @@ 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 diff --git a/src/End (Idle).png b/src/assets/sprites/End (Idle).png similarity index 100% rename from src/End (Idle).png rename to src/assets/sprites/End (Idle).png diff --git a/src/End (Idle).png.import b/src/assets/sprites/End (Idle).png.import similarity index 58% rename from src/End (Idle).png.import rename to src/assets/sprites/End (Idle).png.import index dd04548..db664c3 100644 --- a/src/End (Idle).png.import +++ b/src/assets/sprites/End (Idle).png.import @@ -3,21 +3,23 @@ importer="texture" type="CompressedTexture2D" uid="uid://dufj711m75b2q" -path="res://.godot/imported/End (Idle).png-387af11c9537f00eab43f14e3ccc1c3d.ctex" +path="res://.godot/imported/End (Idle).png-6f8bc88662c744ae19d81e22ed87c5e6.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://End (Idle).png" -dest_files=["res://.godot/imported/End (Idle).png-387af11c9537f00eab43f14e3ccc1c3d.ctex"] +source_file="res://assets/sprites/End (Idle).png" +dest_files=["res://.godot/imported/End (Idle).png-6f8bc88662c744ae19d81e22ed87c5e6.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 @@ -25,6 +27,10 @@ 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 diff --git a/src/Gray.png b/src/assets/sprites/Gray.png similarity index 100% rename from src/Gray.png rename to src/assets/sprites/Gray.png diff --git a/src/Gray.png.import b/src/assets/sprites/Gray.png.import similarity index 59% rename from src/Gray.png.import rename to src/assets/sprites/Gray.png.import index f1a4be0..b5726f4 100644 --- a/src/Gray.png.import +++ b/src/assets/sprites/Gray.png.import @@ -3,21 +3,23 @@ importer="texture" type="CompressedTexture2D" uid="uid://la8jl1agaetd" -path="res://.godot/imported/Gray.png-86eb58dbcab696be1601153a322cc2d3.ctex" +path="res://.godot/imported/Gray.png-cfb7a64915d57d5e658c988695851105.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Gray.png" -dest_files=["res://.godot/imported/Gray.png-86eb58dbcab696be1601153a322cc2d3.ctex"] +source_file="res://assets/sprites/Gray.png" +dest_files=["res://.godot/imported/Gray.png-cfb7a64915d57d5e658c988695851105.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 @@ -25,6 +27,10 @@ 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 diff --git a/src/Terrain (16x16).png b/src/assets/sprites/Terrain (16x16).png similarity index 100% rename from src/Terrain (16x16).png rename to src/assets/sprites/Terrain (16x16).png diff --git a/src/Terrain (16x16).png.import b/src/assets/sprites/Terrain (16x16).png.import similarity index 57% rename from src/Terrain (16x16).png.import rename to src/assets/sprites/Terrain (16x16).png.import index 1020f45..94b12e1 100644 --- a/src/Terrain (16x16).png.import +++ b/src/assets/sprites/Terrain (16x16).png.import @@ -3,21 +3,23 @@ importer="texture" type="CompressedTexture2D" uid="uid://bnoowio0hp7o2" -path="res://.godot/imported/Terrain (16x16).png-f072e8a5f99e915c05031c83401c87a9.ctex" +path="res://.godot/imported/Terrain (16x16).png-becc5a5db60d507de408dbdb498b1861.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Terrain (16x16).png" -dest_files=["res://.godot/imported/Terrain (16x16).png-f072e8a5f99e915c05031c83401c87a9.ctex"] +source_file="res://assets/sprites/Terrain (16x16).png" +dest_files=["res://.godot/imported/Terrain (16x16).png-becc5a5db60d507de408dbdb498b1861.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 @@ -25,6 +27,10 @@ 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 diff --git a/src/assets/sprites/enemies/SlimeGreen.png b/src/assets/sprites/enemies/SlimeGreen.png new file mode 100644 index 0000000..a21cb6f Binary files /dev/null and b/src/assets/sprites/enemies/SlimeGreen.png differ diff --git a/src/assets/sprites/enemies/SlimeGreen.png.import b/src/assets/sprites/enemies/SlimeGreen.png.import new file mode 100644 index 0000000..96dbb52 --- /dev/null +++ b/src/assets/sprites/enemies/SlimeGreen.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://41rop1ea8n31" +path="res://.godot/imported/SlimeGreen.png-bce5cbd1905822c139cde9d2330bbca5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/sprites/enemies/SlimeGreen.png" +dest_files=["res://.godot/imported/SlimeGreen.png-bce5cbd1905822c139cde9d2330bbca5.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/src/Apple.png b/src/assets/sprites/objects/Apple.png similarity index 100% rename from src/Apple.png rename to src/assets/sprites/objects/Apple.png diff --git a/src/Apple.png.import b/src/assets/sprites/objects/Apple.png.import similarity index 59% rename from src/Apple.png.import rename to src/assets/sprites/objects/Apple.png.import index 0dd212a..5a8ed5a 100644 --- a/src/Apple.png.import +++ b/src/assets/sprites/objects/Apple.png.import @@ -3,21 +3,23 @@ importer="texture" type="CompressedTexture2D" uid="uid://clbe64mr3lls0" -path="res://.godot/imported/Apple.png-6cd13b76053e3795414d24077e6ea26f.ctex" +path="res://.godot/imported/Apple.png-6e3233cd95d47c4511f66e961912d27c.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Apple.png" -dest_files=["res://.godot/imported/Apple.png-6cd13b76053e3795414d24077e6ea26f.ctex"] +source_file="res://assets/sprites/objects/Apple.png" +dest_files=["res://.godot/imported/Apple.png-6e3233cd95d47c4511f66e961912d27c.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 @@ -25,6 +27,10 @@ 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 diff --git a/src/assets/sprites/objects/Bullet.png b/src/assets/sprites/objects/Bullet.png new file mode 100644 index 0000000..06ecd23 Binary files /dev/null and b/src/assets/sprites/objects/Bullet.png differ diff --git a/src/assets/sprites/objects/Bullet.png.import b/src/assets/sprites/objects/Bullet.png.import new file mode 100644 index 0000000..3a06f80 --- /dev/null +++ b/src/assets/sprites/objects/Bullet.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dlmroe6k6uskg" +path="res://.godot/imported/Bullet.png-a174ec97e59e322e36947483c8edc4f2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/sprites/objects/Bullet.png" +dest_files=["res://.godot/imported/Bullet.png-a174ec97e59e322e36947483c8edc4f2.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/src/Idle (32x32).png b/src/assets/sprites/player/Idle (32x32).png similarity index 100% rename from src/Idle (32x32).png rename to src/assets/sprites/player/Idle (32x32).png diff --git a/src/Idle (32x32).png.import b/src/assets/sprites/player/Idle (32x32).png.import similarity index 57% rename from src/Idle (32x32).png.import rename to src/assets/sprites/player/Idle (32x32).png.import index 33e19cd..1fcb04e 100644 --- a/src/Idle (32x32).png.import +++ b/src/assets/sprites/player/Idle (32x32).png.import @@ -3,21 +3,23 @@ importer="texture" type="CompressedTexture2D" uid="uid://l8xdu6vfy1mm" -path="res://.godot/imported/Idle (32x32).png-eab6f8bc6cc3e2ad30a389b322c823ee.ctex" +path="res://.godot/imported/Idle (32x32).png-b54b6df48b44ffc15f7d570f17110e17.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Idle (32x32).png" -dest_files=["res://.godot/imported/Idle (32x32).png-eab6f8bc6cc3e2ad30a389b322c823ee.ctex"] +source_file="res://assets/sprites/player/Idle (32x32).png" +dest_files=["res://.godot/imported/Idle (32x32).png-b54b6df48b44ffc15f7d570f17110e17.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 @@ -25,6 +27,10 @@ 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 diff --git a/src/Jump (32x32).png b/src/assets/sprites/player/Jump (32x32).png similarity index 100% rename from src/Jump (32x32).png rename to src/assets/sprites/player/Jump (32x32).png diff --git a/src/Jump (32x32).png.import b/src/assets/sprites/player/Jump (32x32).png.import similarity index 57% rename from src/Jump (32x32).png.import rename to src/assets/sprites/player/Jump (32x32).png.import index b22eb2b..44ce7ee 100644 --- a/src/Jump (32x32).png.import +++ b/src/assets/sprites/player/Jump (32x32).png.import @@ -3,21 +3,23 @@ importer="texture" type="CompressedTexture2D" uid="uid://ce82a8g8a6bq0" -path="res://.godot/imported/Jump (32x32).png-91bf01789c567d31f5c28cd22911709b.ctex" +path="res://.godot/imported/Jump (32x32).png-f7c6ff6de80c510de4e4c0b4247b4fbc.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Jump (32x32).png" -dest_files=["res://.godot/imported/Jump (32x32).png-91bf01789c567d31f5c28cd22911709b.ctex"] +source_file="res://assets/sprites/player/Jump (32x32).png" +dest_files=["res://.godot/imported/Jump (32x32).png-f7c6ff6de80c510de4e4c0b4247b4fbc.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 @@ -25,6 +27,10 @@ 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 diff --git a/src/Run (32x32).png b/src/assets/sprites/player/Run (32x32).png similarity index 100% rename from src/Run (32x32).png rename to src/assets/sprites/player/Run (32x32).png diff --git a/src/Run (32x32).png.import b/src/assets/sprites/player/Run (32x32).png.import similarity index 55% rename from src/Run (32x32).png.import rename to src/assets/sprites/player/Run (32x32).png.import index b4bde43..5364497 100644 --- a/src/Run (32x32).png.import +++ b/src/assets/sprites/player/Run (32x32).png.import @@ -2,22 +2,24 @@ importer="texture" type="CompressedTexture2D" -uid="uid://dowogoeyt1ydy" -path="res://.godot/imported/Run (32x32).png-448439aeb8095dde0c51c1fbc2bea5a9.ctex" +uid="uid://bwlp2n5fkdykn" +path="res://.godot/imported/Run (32x32).png-1f9f472aab1d3e6b64633743272b2de6.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Run (32x32).png" -dest_files=["res://.godot/imported/Run (32x32).png-448439aeb8095dde0c51c1fbc2bea5a9.ctex"] +source_file="res://assets/sprites/player/Run (32x32).png" +dest_files=["res://.godot/imported/Run (32x32).png-1f9f472aab1d3e6b64633743272b2de6.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 @@ -25,6 +27,10 @@ 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 diff --git a/src/default_bus_layout.tres b/src/default_bus_layout.tres new file mode 100644 index 0000000..2d30df2 --- /dev/null +++ b/src/default_bus_layout.tres @@ -0,0 +1,15 @@ +[gd_resource type="AudioBusLayout" format=3 uid="uid://btebyeynbdexd"] + +[resource] +bus/1/name = &"SFX" +bus/1/solo = false +bus/1/mute = false +bus/1/bypass_fx = false +bus/1/volume_db = 6.0199986 +bus/1/send = &"Master" +bus/2/name = &"UI" +bus/2/solo = false +bus/2/mute = false +bus/2/bypass_fx = false +bus/2/volume_db = 0.0 +bus/2/send = &"Master" diff --git a/src/game_manager.gd b/src/game_manager.gd deleted file mode 100644 index 1bd6e79..0000000 --- a/src/game_manager.gd +++ /dev/null @@ -1,12 +0,0 @@ -extends Node -# Onready variable to reference the Points Label node. -@onready var points_label = %"Points Label" - -var points = 0 -# Function to add points and update the label. -func add_points(): - points += 1 - print(points) - # Update the text of the points_label to reflect the new points total. - points_label.text = "points :" + str(points) - diff --git a/src/project.godot b/src/project.godot index 50e59de..40d14a0 100644 --- a/src/project.godot +++ b/src/project.godot @@ -8,35 +8,69 @@ config_version=5 +[animation] + +compatibility/default_parent_skeleton_in_mesh_instance_3d=true + [application] config/name="2D Game practice" -run/main_scene="res://scenes/main_menu.tscn" -config/features=PackedStringArray("4.2", "Mobile") -config/icon="res://icon.svg" +run/main_scene="res://ui/main_menu.tscn" +config/features=PackedStringArray("4.6", "Mobile") +config/icon="res://assets/icon.svg" + +[audio] + +buses/default_bus_layout="uid://btebyeynbdexd" + +[autoload] + +GameManager="*uid://cmiuh76gsvk85" +SoundManager="*uid://by2w4pfq3vf03" [display] window/stretch/mode="canvas_items" window/stretch/aspect="expand" +[dotnet] + +project/assembly_name="2D Game practice" + +[global_group] + +Player="All Player type Nodes" +Enemies="All Enemy type Nodes" +Collectibles="All Collectible type Nodes" + [input] left={ -"deadzone": 0.5, -"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":4194319,"key_label":0,"unicode":0,"echo":false,"script":null) -, 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":65,"key_label":0,"unicode":97,"echo":false,"script":null) +"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":4194319,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, 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":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null) ] } right={ -"deadzone": 0.5, -"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":4194321,"key_label":0,"unicode":0,"echo":false,"script":null) -, 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":68,"key_label":0,"unicode":100,"echo":false,"script":null) +"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":4194321,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, 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":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null) ] } jump={ -"deadzone": 0.5, -"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":32,"key_label":0,"unicode":32,"echo":false,"script":null) +"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":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null) +] +} +run={ +"deadzone": 0.2, +"events": [null, 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":4194325,"key_label":0,"unicode":0,"location":2,"echo":false,"script":null) +] +} +fire={ +"deadzone": 0.2, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":1,"canceled":false,"pressed":false,"double_click":false,"script":null) +, null, null, 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":4194325,"key_label":0,"unicode":0,"location":1,"echo":false,"script":null) ] } diff --git a/src/scenes/collectable.gd b/src/scenes/collectable.gd deleted file mode 100644 index 4bef938..0000000 --- a/src/scenes/collectable.gd +++ /dev/null @@ -1,21 +0,0 @@ -extends Area2D - -#=================== Explanation of Changes: -#Onready Variable: @onready var game_manager is used to reference the GameManager node, allowing for interaction with the game manager's functions. -#Body Entered Function: The _on_body_entered(body) function is called when another body enters the Area2D: -#Body Check: if body.name == "CharacterBody2D" checks if the body entering the area is the CharacterBody2D. -#Free Node: queue_free() removes the current Area2D node from the scene tree, effectively "destroying" it. -#Add Points: game_manager.add_points() calls the add_points function from the game manager to increase the player's points. -#==================================== - -# Onready variable to reference the GameManager node. -@onready var game_manager = %GameManager - -# Function called when a body enters the Area2D. -func _on_body_entered(body): - # Check if the body that entered is the CharacterBody2D. - if ( body.name == "CharacterBody2D" ): - # Free the current Area2D node from the scene tree. - queue_free() - # Call the add_points function from the game_manager to increase the points. - game_manager.add_points() diff --git a/src/scenes/exit_scene.gd b/src/scenes/exit_scene.gd deleted file mode 100644 index 2df31c4..0000000 --- a/src/scenes/exit_scene.gd +++ /dev/null @@ -1,4 +0,0 @@ -extends Node2D - -func _on_mainmenu_button_pressed(): - get_tree().change_scene_to_file("res://scenes/main_menu.tscn") diff --git a/src/scenes/finish.gd b/src/scenes/finish.gd deleted file mode 100644 index e69e36d..0000000 --- a/src/scenes/finish.gd +++ /dev/null @@ -1,7 +0,0 @@ -extends Area2D - -@export var target_lavel : PackedScene - -func _on_body_entered(body): - if ( body.name == "CharacterBody2D"): - get_tree().change_scene_to_packed(target_lavel) diff --git a/src/scenes/level1.tscn b/src/scenes/level1.tscn deleted file mode 100644 index d4def27..0000000 --- a/src/scenes/level1.tscn +++ /dev/null @@ -1,600 +0,0 @@ -[gd_scene load_steps=10 format=3 uid="uid://bjjaxq5h3ntj2"] - -[ext_resource type="Script" path="res://game_manager.gd" id="1_0ch06"] -[ext_resource type="Texture2D" uid="uid://la8jl1agaetd" path="res://Gray.png" id="2_4c82w"] -[ext_resource type="Texture2D" uid="uid://bnoowio0hp7o2" path="res://Terrain (16x16).png" id="3_i608o"] -[ext_resource type="PackedScene" uid="uid://d0gicsksxcad" path="res://scenes/main_character.tscn" id="4_cyvkj"] -[ext_resource type="PackedScene" uid="uid://bu8800vy3b34a" path="res://scenes/collectable.tscn" id="5_kcoiy"] -[ext_resource type="PackedScene" uid="uid://cqrbnj6mscgu2" path="res://scenes/finish.tscn" id="6_17liv"] -[ext_resource type="PackedScene" uid="uid://cwu26fbkoauu4" path="res://scenes/intermediate_scene.tscn" id="7_p3ftm"] - -[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_hrhtv"] -texture = ExtResource("3_i608o") -0:0/0 = 0 -0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -0:0/0/physics_layer_0/angular_velocity = 0.0 -1:0/0 = 0 -1:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -1:0/0/physics_layer_0/angular_velocity = 0.0 -2:0/0 = 0 -2:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -2:0/0/physics_layer_0/angular_velocity = 0.0 -3:0/0 = 0 -3:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -3:0/0/physics_layer_0/angular_velocity = 0.0 -4:0/0 = 0 -4:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -4:0/0/physics_layer_0/angular_velocity = 0.0 -6:0/0 = 0 -6:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -6:0/0/physics_layer_0/angular_velocity = 0.0 -7:0/0 = 0 -7:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -7:0/0/physics_layer_0/angular_velocity = 0.0 -8:0/0 = 0 -8:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -8:0/0/physics_layer_0/angular_velocity = 0.0 -9:0/0 = 0 -9:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -9:0/0/physics_layer_0/angular_velocity = 0.0 -10:0/0 = 0 -10:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -10:0/0/physics_layer_0/angular_velocity = 0.0 -12:0/0 = 0 -12:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -12:0/0/physics_layer_0/angular_velocity = 0.0 -13:0/0 = 0 -13:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -13:0/0/physics_layer_0/angular_velocity = 0.0 -14:0/0 = 0 -14:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -14:0/0/physics_layer_0/angular_velocity = 0.0 -15:0/0 = 0 -15:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -15:0/0/physics_layer_0/angular_velocity = 0.0 -17:0/0 = 0 -17:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -17:0/0/physics_layer_0/angular_velocity = 0.0 -18:0/0 = 0 -18:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -18:0/0/physics_layer_0/angular_velocity = 0.0 -19:0/0 = 0 -19:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -19:0/0/physics_layer_0/angular_velocity = 0.0 -0:1/0 = 0 -0:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -0:1/0/physics_layer_0/angular_velocity = 0.0 -1:1/0 = 0 -1:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -1:1/0/physics_layer_0/angular_velocity = 0.0 -2:1/0 = 0 -2:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -2:1/0/physics_layer_0/angular_velocity = 0.0 -3:1/0 = 0 -3:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -3:1/0/physics_layer_0/angular_velocity = 0.0 -4:1/0 = 0 -4:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -4:1/0/physics_layer_0/angular_velocity = 0.0 -6:1/0 = 0 -6:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -6:1/0/physics_layer_0/angular_velocity = 0.0 -7:1/0 = 0 -7:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -7:1/0/physics_layer_0/angular_velocity = 0.0 -8:1/0 = 0 -8:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -8:1/0/physics_layer_0/angular_velocity = 0.0 -9:1/0 = 0 -9:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -9:1/0/physics_layer_0/angular_velocity = 0.0 -10:1/0 = 0 -10:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -10:1/0/physics_layer_0/angular_velocity = 0.0 -12:1/0 = 0 -12:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -12:1/0/physics_layer_0/angular_velocity = 0.0 -13:1/0 = 0 -13:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -13:1/0/physics_layer_0/angular_velocity = 0.0 -14:1/0 = 0 -14:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -14:1/0/physics_layer_0/angular_velocity = 0.0 -15:1/0 = 0 -15:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -15:1/0/physics_layer_0/angular_velocity = 0.0 -17:1/0 = 0 -17:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -17:1/0/physics_layer_0/angular_velocity = 0.0 -17:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -18:1/0 = 0 -18:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -18:1/0/physics_layer_0/angular_velocity = 0.0 -18:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -19:1/0 = 0 -19:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -19:1/0/physics_layer_0/angular_velocity = 0.0 -19:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -0:2/0 = 0 -0:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) -0:2/0/physics_layer_0/angular_velocity = 0.0 -1:2/0 = 0 -1:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) -1:2/0/physics_layer_0/angular_velocity = 0.0 -2:2/0 = 0 -2:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) -2:2/0/physics_layer_0/angular_velocity = 0.0 -6:2/0 = 0 -6:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) -6:2/0/physics_layer_0/angular_velocity = 0.0 -7:2/0 = 0 -7:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) -7:2/0/physics_layer_0/angular_velocity = 0.0 -8:2/0 = 0 -8:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) -8:2/0/physics_layer_0/angular_velocity = 0.0 -13:2/0 = 0 -13:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) -13:2/0/physics_layer_0/angular_velocity = 0.0 -14:2/0 = 0 -14:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) -14:2/0/physics_layer_0/angular_velocity = 0.0 -15:2/0 = 0 -15:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) -15:2/0/physics_layer_0/angular_velocity = 0.0 -17:2/0 = 0 -17:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) -17:2/0/physics_layer_0/angular_velocity = 0.0 -18:2/0 = 0 -18:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) -18:2/0/physics_layer_0/angular_velocity = 0.0 -19:2/0 = 0 -19:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) -19:2/0/physics_layer_0/angular_velocity = 0.0 -0:4/0 = 0 -0:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -0:4/0/physics_layer_0/angular_velocity = 0.0 -1:4/0 = 0 -1:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -1:4/0/physics_layer_0/angular_velocity = 0.0 -2:4/0 = 0 -2:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -2:4/0/physics_layer_0/angular_velocity = 0.0 -3:4/0 = 0 -3:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -3:4/0/physics_layer_0/angular_velocity = 0.0 -4:4/0 = 0 -4:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -4:4/0/physics_layer_0/angular_velocity = 0.0 -6:4/0 = 0 -6:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -6:4/0/physics_layer_0/angular_velocity = 0.0 -6:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -7:4/0 = 0 -7:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -7:4/0/physics_layer_0/angular_velocity = 0.0 -7:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -8:4/0 = 0 -8:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -8:4/0/physics_layer_0/angular_velocity = 0.0 -8:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -9:4/0 = 0 -9:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -9:4/0/physics_layer_0/angular_velocity = 0.0 -9:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -10:4/0 = 0 -10:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -10:4/0/physics_layer_0/angular_velocity = 0.0 -10:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -12:4/0 = 0 -12:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -12:4/0/physics_layer_0/angular_velocity = 0.0 -13:4/0 = 0 -13:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -13:4/0/physics_layer_0/angular_velocity = 0.0 -14:4/0 = 0 -14:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -14:4/0/physics_layer_0/angular_velocity = 0.0 -15:4/0 = 0 -15:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -15:4/0/physics_layer_0/angular_velocity = 0.0 -17:4/0 = 0 -17:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -17:4/0/physics_layer_0/angular_velocity = 0.0 -18:4/0 = 0 -18:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -18:4/0/physics_layer_0/angular_velocity = 0.0 -19:4/0 = 0 -19:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -19:4/0/physics_layer_0/angular_velocity = 0.0 -20:4/0 = 0 -20:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -20:4/0/physics_layer_0/angular_velocity = 0.0 -21:4/0 = 0 -21:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -21:4/0/physics_layer_0/angular_velocity = 0.0 -0:5/0 = 0 -0:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -0:5/0/physics_layer_0/angular_velocity = 0.0 -1:5/0 = 0 -1:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -1:5/0/physics_layer_0/angular_velocity = 0.0 -2:5/0 = 0 -2:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -2:5/0/physics_layer_0/angular_velocity = 0.0 -3:5/0 = 0 -3:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -3:5/0/physics_layer_0/angular_velocity = 0.0 -4:5/0 = 0 -4:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -4:5/0/physics_layer_0/angular_velocity = 0.0 -6:5/0 = 0 -6:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -6:5/0/physics_layer_0/angular_velocity = 0.0 -6:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -7:5/0 = 0 -7:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -7:5/0/physics_layer_0/angular_velocity = 0.0 -7:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -8:5/0 = 0 -8:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -8:5/0/physics_layer_0/angular_velocity = 0.0 -8:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -9:5/0 = 0 -9:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -9:5/0/physics_layer_0/angular_velocity = 0.0 -9:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -10:5/0 = 0 -10:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -10:5/0/physics_layer_0/angular_velocity = 0.0 -10:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -12:5/0 = 0 -12:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -12:5/0/physics_layer_0/angular_velocity = 0.0 -13:5/0 = 0 -13:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -13:5/0/physics_layer_0/angular_velocity = 0.0 -14:5/0 = 0 -14:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -14:5/0/physics_layer_0/angular_velocity = 0.0 -15:5/0 = 0 -15:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -15:5/0/physics_layer_0/angular_velocity = 0.0 -17:5/0 = 0 -17:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -17:5/0/physics_layer_0/angular_velocity = 0.0 -18:5/0 = 0 -18:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -18:5/0/physics_layer_0/angular_velocity = 0.0 -19:5/0 = 0 -19:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -19:5/0/physics_layer_0/angular_velocity = 0.0 -20:5/0 = 0 -20:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -20:5/0/physics_layer_0/angular_velocity = 0.0 -21:5/0 = 0 -21:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -21:5/0/physics_layer_0/angular_velocity = 0.0 -0:6/0 = 0 -0:6/0/physics_layer_0/linear_velocity = Vector2(0, 0) -0:6/0/physics_layer_0/angular_velocity = 0.0 -1:6/0 = 0 -1:6/0/physics_layer_0/linear_velocity = Vector2(0, 0) -1:6/0/physics_layer_0/angular_velocity = 0.0 -2:6/0 = 0 -2:6/0/physics_layer_0/linear_velocity = Vector2(0, 0) -2:6/0/physics_layer_0/angular_velocity = 0.0 -6:6/0 = 0 -6:6/0/physics_layer_0/linear_velocity = Vector2(0, 0) -6:6/0/physics_layer_0/angular_velocity = 0.0 -6:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -7:6/0 = 0 -7:6/0/physics_layer_0/linear_velocity = Vector2(0, 0) -7:6/0/physics_layer_0/angular_velocity = 0.0 -7:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -8:6/0 = 0 -8:6/0/physics_layer_0/linear_velocity = Vector2(0, 0) -8:6/0/physics_layer_0/angular_velocity = 0.0 -8:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -13:6/0 = 0 -13:6/0/physics_layer_0/linear_velocity = Vector2(0, 0) -13:6/0/physics_layer_0/angular_velocity = 0.0 -14:6/0 = 0 -14:6/0/physics_layer_0/linear_velocity = Vector2(0, 0) -14:6/0/physics_layer_0/angular_velocity = 0.0 -15:6/0 = 0 -15:6/0/physics_layer_0/linear_velocity = Vector2(0, 0) -15:6/0/physics_layer_0/angular_velocity = 0.0 -17:6/0 = 0 -17:6/0/physics_layer_0/linear_velocity = Vector2(0, 0) -17:6/0/physics_layer_0/angular_velocity = 0.0 -18:6/0 = 0 -18:6/0/physics_layer_0/linear_velocity = Vector2(0, 0) -18:6/0/physics_layer_0/angular_velocity = 0.0 -19:6/0 = 0 -19:6/0/physics_layer_0/linear_velocity = Vector2(0, 0) -19:6/0/physics_layer_0/angular_velocity = 0.0 -0:8/0 = 0 -0:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -0:8/0/physics_layer_0/angular_velocity = 0.0 -1:8/0 = 0 -1:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -1:8/0/physics_layer_0/angular_velocity = 0.0 -2:8/0 = 0 -2:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -2:8/0/physics_layer_0/angular_velocity = 0.0 -3:8/0 = 0 -3:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -3:8/0/physics_layer_0/angular_velocity = 0.0 -4:8/0 = 0 -4:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -4:8/0/physics_layer_0/angular_velocity = 0.0 -6:8/0 = 0 -6:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -6:8/0/physics_layer_0/angular_velocity = 0.0 -7:8/0 = 0 -7:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -7:8/0/physics_layer_0/angular_velocity = 0.0 -8:8/0 = 0 -8:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -8:8/0/physics_layer_0/angular_velocity = 0.0 -9:8/0 = 0 -9:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -9:8/0/physics_layer_0/angular_velocity = 0.0 -10:8/0 = 0 -10:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -10:8/0/physics_layer_0/angular_velocity = 0.0 -12:8/0 = 0 -12:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -12:8/0/physics_layer_0/angular_velocity = 0.0 -13:8/0 = 0 -13:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -13:8/0/physics_layer_0/angular_velocity = 0.0 -14:8/0 = 0 -14:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -14:8/0/physics_layer_0/angular_velocity = 0.0 -15:8/0 = 0 -15:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -15:8/0/physics_layer_0/angular_velocity = 0.0 -17:8/0 = 0 -17:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -17:8/0/physics_layer_0/angular_velocity = 0.0 -18:8/0 = 0 -18:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -18:8/0/physics_layer_0/angular_velocity = 0.0 -19:8/0 = 0 -19:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -19:8/0/physics_layer_0/angular_velocity = 0.0 -20:8/0 = 0 -20:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -20:8/0/physics_layer_0/angular_velocity = 0.0 -0:9/0 = 0 -0:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -0:9/0/physics_layer_0/angular_velocity = 0.0 -1:9/0 = 0 -1:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -1:9/0/physics_layer_0/angular_velocity = 0.0 -2:9/0 = 0 -2:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -2:9/0/physics_layer_0/angular_velocity = 0.0 -3:9/0 = 0 -3:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -3:9/0/physics_layer_0/angular_velocity = 0.0 -4:9/0 = 0 -4:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -4:9/0/physics_layer_0/angular_velocity = 0.0 -6:9/0 = 0 -6:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -6:9/0/physics_layer_0/angular_velocity = 0.0 -7:9/0 = 0 -7:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -7:9/0/physics_layer_0/angular_velocity = 0.0 -8:9/0 = 0 -8:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -8:9/0/physics_layer_0/angular_velocity = 0.0 -9:9/0 = 0 -9:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -9:9/0/physics_layer_0/angular_velocity = 0.0 -10:9/0 = 0 -10:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -10:9/0/physics_layer_0/angular_velocity = 0.0 -12:9/0 = 0 -12:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -12:9/0/physics_layer_0/angular_velocity = 0.0 -13:9/0 = 0 -13:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -13:9/0/physics_layer_0/angular_velocity = 0.0 -14:9/0 = 0 -14:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -14:9/0/physics_layer_0/angular_velocity = 0.0 -15:9/0 = 0 -15:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -15:9/0/physics_layer_0/angular_velocity = 0.0 -17:9/0 = 0 -17:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -17:9/0/physics_layer_0/angular_velocity = 0.0 -18:9/0 = 0 -18:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -18:9/0/physics_layer_0/angular_velocity = 0.0 -19:9/0 = 0 -19:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -19:9/0/physics_layer_0/angular_velocity = 0.0 -20:9/0 = 0 -20:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -20:9/0/physics_layer_0/angular_velocity = 0.0 -0:10/0 = 0 -0:10/0/physics_layer_0/linear_velocity = Vector2(0, 0) -0:10/0/physics_layer_0/angular_velocity = 0.0 -1:10/0 = 0 -1:10/0/physics_layer_0/linear_velocity = Vector2(0, 0) -1:10/0/physics_layer_0/angular_velocity = 0.0 -2:10/0 = 0 -2:10/0/physics_layer_0/linear_velocity = Vector2(0, 0) -2:10/0/physics_layer_0/angular_velocity = 0.0 -6:10/0 = 0 -6:10/0/physics_layer_0/linear_velocity = Vector2(0, 0) -6:10/0/physics_layer_0/angular_velocity = 0.0 -7:10/0 = 0 -7:10/0/physics_layer_0/linear_velocity = Vector2(0, 0) -7:10/0/physics_layer_0/angular_velocity = 0.0 -8:10/0 = 0 -8:10/0/physics_layer_0/linear_velocity = Vector2(0, 0) -8:10/0/physics_layer_0/angular_velocity = 0.0 -13:10/0 = 0 -13:10/0/physics_layer_0/linear_velocity = Vector2(0, 0) -13:10/0/physics_layer_0/angular_velocity = 0.0 -14:10/0 = 0 -14:10/0/physics_layer_0/linear_velocity = Vector2(0, 0) -14:10/0/physics_layer_0/angular_velocity = 0.0 -15:10/0 = 0 -15:10/0/physics_layer_0/linear_velocity = Vector2(0, 0) -15:10/0/physics_layer_0/angular_velocity = 0.0 -18:10/0 = 0 -18:10/0/physics_layer_0/linear_velocity = Vector2(0, 0) -18:10/0/physics_layer_0/angular_velocity = 0.0 -19:10/0 = 0 -19:10/0/physics_layer_0/linear_velocity = Vector2(0, 0) -19:10/0/physics_layer_0/angular_velocity = 0.0 -20:10/0 = 0 -20:10/0/physics_layer_0/linear_velocity = Vector2(0, 0) -20:10/0/physics_layer_0/angular_velocity = 0.0 - -[sub_resource type="TileSet" id="TileSet_r2lpe"] -physics_layer_0/collision_layer = 1 -sources/0 = SubResource("TileSetAtlasSource_hrhtv") - -[node name="Node" type="Node"] - -[node name="GameManager" type="Node" parent="."] -unique_name_in_owner = true -script = ExtResource("1_0ch06") - -[node name="Scene Objects" type="Node" parent="."] - -[node name="TextureRect" type="TextureRect" parent="Scene Objects"] -texture_filter = 1 -offset_right = 2562.0 -offset_bottom = 634.0 -texture = ExtResource("2_4c82w") -stretch_mode = 1 - -[node name="TileMap" type="TileMap" parent="Scene Objects"] -texture_filter = 1 -scale = Vector2(3, 3) -tile_set = SubResource("TileSet_r2lpe") -format = 2 -layer_0/tile_data = PackedInt32Array(917503, 393216, 4, 851968, 458752, 4, 851969, 458752, 4, 851990, 458752, 4, 851991, 458752, 4, 851992, 458752, 4, 851989, 458752, 4, 851988, 458752, 4, 851987, 458752, 4, 851986, 458752, 4, 851985, 458752, 4, 851984, 458752, 4, 851983, 458752, 4, 851982, 458752, 4, 851981, 458752, 4, 851980, 458752, 4, 851979, 458752, 4, 851978, 458752, 4, 851977, 458752, 4, 851976, 458752, 4, 851975, 458752, 4, 851974, 458752, 4, 851973, 458752, 4, 851972, 458752, 4, 851971, 458752, 4, 851970, 458752, 4, 851967, 524288, 5, 786431, 524288, 5, 720895, 524288, 5, 655359, 524288, 5, 589823, 524288, 5, 524287, 524288, 5, 458751, 524288, 5, 393215, 524288, 5, 327679, 524288, 5, 262143, 524288, 5, 196607, 524288, 5, 131071, 524288, 5, 65535, 524288, 5, -1, 458752, 5, -65536, 458752, 6, -65535, 458752, 6, -65534, 458752, 6, -65533, 458752, 6, -65532, 458752, 6, -65531, 458752, 6, -65530, 458752, 6, -65529, 458752, 6, -65528, 458752, 6, -65527, 458752, 6, -65526, 458752, 6, -65525, 458752, 6, -65524, 458752, 6, -65523, 458752, 6, -65522, 458752, 6, -65521, 458752, 6, -65520, 458752, 6, -65519, 458752, 6, -65518, 458752, 6, -65517, 458752, 6, -65516, 458752, 6, -65515, 458752, 6, -65514, 458752, 6, -65513, 458752, 6, -65512, 458752, 6, 393216, 458752, 4, 393217, 524288, 4, 458752, 393216, 5, 524288, 393216, 5, 458753, 589824, 5, 524289, 589824, 5, 589824, 393216, 5, 589825, 458752, 5, 655360, 393216, 5, 655361, 655360, 4, 720896, 393216, 5, 720897, 524288, 5, 786432, 393216, 6, 786433, 524288, 6, 458754, 524288, 4, 524290, 655360, 5, 589826, 524288, 5, 786437, 393216, 4, 786438, 458752, 4, 786439, 524288, 4, 720905, 393216, 4, 720906, 458752, 4, 720907, 524288, 4, 720910, 393216, 4, 786446, 393216, 5, 720911, 524288, 4, 786447, 458752, 5, 786448, 524288, 4, 589842, 393216, 4, 655378, 393216, 6, 589843, 458752, 4, 655379, 458752, 6, 589844, 524288, 4, 655380, 524288, 6, 393237, 393216, 4, 393238, 458752, 4, 327694, 524288, 4, 327689, 393216, 4, 327690, 524288, 4, 327691, 1114112, 1, 262148, 393216, 4, 262149, 458752, 4, 262150, 524288, 4, 131072, 458752, 4, 131073, 524288, 4, 524294, 393216, 4, 524295, 524288, 4, 720908, 1114112, 1, 720909, 1245184, 1, 327692, 1179648, 1, 327693, 1245184, 1, 458773, 589824, 4, 524309, 589824, 5, 458774, 655360, 4, 524310, 655360, 5, 393230, 393216, 5, 393231, 458752, 4, 393232, 524288, 4, 196608, 458752, 6, 196609, 524288, 6, 393239, 524288, 4, 655362, 524288, 6, 458772, 393216, 4, 131090, 393216, 4, 131082, 393216, 4, 131083, 524288, 4, 131084, 1114112, 1, 131085, 1245184, 1, 131086, 393216, 4, 131087, 458752, 4, 131088, 524288, 4, 131091, 524288, 4, -65511, 458752, 6, -65510, 458752, 6, -65509, 458752, 6, -65508, 458752, 6, -65507, 458752, 6, -65506, 458752, 6, -65505, 458752, 6, -65504, 458752, 6, -65503, 458752, 6, -65502, 458752, 6, -65501, 458752, 6, -65500, 458752, 6, -65499, 458752, 6, -65498, 458752, 6, -65497, 458752, 6, -65496, 458752, 6, -65495, 458752, 6, -65494, 458752, 6, -65493, 458752, 6, -65492, 458752, 6, -65491, 458752, 6, -65490, 458752, 6, -65489, 458752, 6, -65488, 458752, 6, -65487, 458752, 6, -65486, 458752, 6, -65485, 458752, 6, -65484, 458752, 6, 851993, 458752, 4, 851994, 458752, 4, 851995, 458752, 4, 851996, 458752, 4, 851997, 458752, 4, 851998, 458752, 4, 851999, 458752, 4, 852000, 458752, 4, 852001, 458752, 4, 852002, 458752, 4, 852003, 458752, 4, 852004, 458752, 4, 852005, 458752, 4, 852006, 458752, 4, 852007, 458752, 4, 852008, 458752, 4, 852009, 458752, 4, 852010, 458752, 4, 852011, 458752, 4, 852012, 458752, 4, 852013, 458752, 4, 852014, 458752, 4, 852015, 458752, 4, 852016, 458752, 4, 852017, 458752, 4, 852018, 458752, 4, 852019, 458752, 4, 852020, 458752, 4, -65483, 458752, 5, 53, 393216, 5, 65589, 393216, 5, 131125, 393216, 5, 196661, 393216, 5, 262197, 393216, 5, 327733, 393216, 5, 393269, 393216, 5, 458805, 393216, 5, 524341, 393216, 5, 589877, 393216, 5, 655413, 393216, 5, 720949, 393216, 5, 786485, 393216, 5, 852021, 458752, 4, 458775, 524288, 5, 524311, 524288, 6, 655385, 393216, 4, 720921, 393216, 6, 655386, 458752, 4, 720922, 458752, 6, 655387, 524288, 4, 720923, 524288, 6, 196635, 393216, 4, 262171, 393216, 5, 327707, 393216, 6, 196636, 458752, 4, 262172, 458752, 5, 327708, 524288, 6, 196637, 524288, 4, 262173, 524288, 6, 327713, 393216, 4, 393249, 393216, 6, 327714, 458752, 4, 393250, 458752, 5, 458786, 393216, 6, 327715, 524288, 4, 393251, 524288, 5, 458787, 524288, 6, 131110, 393216, 4, 196646, 393216, 6, 131111, 524288, 4, 196647, 458752, 6, 196648, 524288, 4, 327730, 393216, 4, 393266, 393216, 5, 327731, 458752, 4, 393267, 458752, 5, 327732, 524288, 4, 393268, 524288, 5, 458802, 589824, 4, 458803, 655360, 4, 458804, 524288, 5, 524338, 589824, 5, 524339, 458752, 4, 524340, 524288, 5, 589874, 393216, 5, 589875, 458752, 5, 589876, 524288, 5, 655410, 393216, 5, 655411, 458752, 5, 655412, 524288, 5, 720946, 393216, 5, 720947, 458752, 5, 720948, 524288, 5, 786482, 393216, 6, 786483, 458752, 6, 786484, 524288, 6, 458797, 393216, 4, 524333, 393216, 6, 458798, 458752, 4, 524334, 524288, 6, 458799, 524288, 4, 720926, 393216, 4, 786462, 393216, 5, 720927, 458752, 4, 786463, 458752, 5, 720928, 524288, 4, 786464, 524288, 5, 786469, 393216, 4, 786470, 458752, 4, 786471, 524288, 4, 524329, 524288, 4, 196652, 393216, 4, 196653, 458752, 4, 196654, 524288, 4, 524326, 458752, 4, 589862, 524288, 6, 589865, 393216, 6, 786480, 458752, 4, 786481, 524288, 4, 786478, 393216, 4, 786479, 458752, 4, 196649, 1114112, 1, 196650, 1179648, 1, 196651, 1245184, 1, 524319, 393216, 4, 524320, 524288, 4, 524325, 393216, 4, 589861, 393216, 6, 524327, 1114112, 1, 524328, 1245184, 1, -65537, 458752, 805306374, -131072, 458752, 805306374, -131071, 458752, 805306374, -131070, 458752, 805306374, -131069, 458752, 805306374, -131068, 458752, 805306374, -131067, 458752, 805306374, -131066, 458752, 805306374, -131065, 458752, 805306374, -131064, 458752, 805306374, -131063, 458752, 805306374, -131062, 458752, 805306374, -131061, 458752, 805306374, -131060, 458752, 805306374, -131059, 458752, 805306374, -131058, 458752, 805306374, -131057, 458752, 805306374, -131056, 458752, 805306374, -131055, 458752, 805306374, -131054, 458752, 805306374, -131053, 458752, 805306374, -131052, 458752, 805306374, -131051, 458752, 805306374, -131050, 458752, 805306374, -131049, 458752, 805306374, -131048, 458752, 805306374, -131047, 458752, 805306374, -131046, 458752, 805306374, -131045, 458752, 805306374, -131044, 458752, 805306374, -131043, 458752, 805306374, -131042, 458752, 805306374, -131041, 458752, 805306374, -131040, 458752, 805306374, -131039, 458752, 805306374, -131038, 458752, 805306374, -131037, 458752, 805306374, -131036, 458752, 805306374, -131035, 458752, 805306374, -131034, 458752, 805306374, -131033, 458752, 805306374, -131032, 458752, 805306374, -131031, 458752, 805306374, -131030, 458752, 805306374, -131029, 458752, 805306374, -131028, 458752, 805306374, -131027, 458752, 805306374, -131026, 458752, 805306374, -131025, 458752, 805306374, -131024, 458752, 805306374, -131023, 458752, 805306374, -131022, 458752, 805306374, -131021, 458752, 805306374, -131020, 458752, 805306374, -131019, 458752, 805306374, -131018, 524288, 1610612742, -65482, 524288, 5, 54, 524288, 5, 65590, 524288, 5, 131126, 524288, 5, 196662, 524288, 5, 262198, 524288, 5, 327734, 524288, 5, 393270, 524288, 5, 458806, 524288, 5, 524342, 524288, 5, 589878, 524288, 5, 655414, 524288, 5, 720950, 524288, 5, 786486, 524288, 5, 852022, 524288, 5, 917558, 524288, 6, 983039, 458752, 6, 917504, 458752, 6, 917505, 458752, 6, 917506, 458752, 6, 917507, 458752, 6, 917508, 458752, 6, 917509, 458752, 6, 917510, 458752, 6, 917511, 458752, 6, 917512, 458752, 6, 917513, 458752, 6, 917514, 458752, 6, 917515, 458752, 6, 917516, 458752, 6, 917517, 458752, 6, 917518, 458752, 6, 917519, 458752, 6, 917520, 458752, 6, 917521, 458752, 6, 917522, 458752, 6, 917523, 458752, 6, 917524, 458752, 6, 917525, 458752, 6, 917526, 458752, 6, 917527, 458752, 6, 917528, 458752, 6, 917529, 458752, 6, 917530, 458752, 6, 917531, 458752, 6, 917532, 458752, 6, 917533, 458752, 6, 917534, 458752, 6, 917535, 458752, 6, 917536, 458752, 6, 917537, 458752, 6, 983073, 458752, 805306374, 917538, 458752, 6, 917539, 458752, 6, 917540, 458752, 6, 917541, 458752, 6, 917542, 458752, 6, 917543, 458752, 6, 917544, 458752, 6, 917545, 458752, 6, 917546, 458752, 6, 917547, 458752, 6, 917548, 458752, 6, 917549, 458752, 6, 917550, 458752, 6, 917551, 458752, 6, 917552, 458752, 6, 917553, 458752, 6, 917554, 458752, 6, 917555, 458752, 6, 917556, 458752, 6, 917557, 458752, 6, 983091, 458752, 805306374, 983090, 458752, 805306374, 983089, 458752, 805306374, 1048624, 458752, 5, 1048623, 458752, 5, 1048622, 458752, 5, 1048621, 458752, 5, 1048620, 458752, 5, 1048619, 458752, 5, 1048618, 458752, 5, 1048617, 458752, 5, 1048616, 458752, 5, 1048615, 458752, 5, 1048614, 458752, 5, 1048613, 458752, 5, 1048612, 458752, 5, 1048611, 458752, 5, 1048610, 458752, 5, 983074, 458752, 805306374, 983072, 458752, 805306374, 983075, 458752, 805306374, 983076, 458752, 805306374, 983077, 458752, 805306374, 983078, 458752, 805306374, 983079, 458752, 805306374, 983080, 458752, 805306374, 983081, 458752, 805306374, 983082, 458752, 805306374, 983083, 458752, 805306374, 983084, 458752, 805306374, 983085, 458752, 805306374, 983086, 458752, 805306374, 983087, 458752, 805306374, 983088, 458752, 805306374, 983092, 458752, 805306374, 983093, 458752, 805306374, 983094, 458752, 805306374, 983095, 458752, 5, 1048629, 458752, 5, 1048628, 458752, 5, 1048627, 458752, 5, 1048626, 458752, 5, 1048625, 458752, 5, 1048630, 458752, 5, 1048631, 458752, 5, 1048609, 458752, 5, 1048608, 458752, 5, 1048607, 458752, 5, 1048606, 458752, 5, 1048605, 458752, 5, 1048604, 458752, 5, 1048603, 458752, 5, 1048602, 458752, 5, 1048601, 458752, 5, 1048600, 458752, 5, 1048599, 458752, 5, 1048598, 458752, 5, 1048597, 458752, 5, 1048596, 458752, 5, 1048595, 458752, 5, 983060, 458752, 805306374, 983061, 458752, 805306374, 983062, 458752, 805306374, 983063, 458752, 805306374, 983064, 458752, 805306374, 983065, 458752, 805306374, 983066, 458752, 805306374, 983067, 458752, 805306374, 983068, 458752, 805306374, 983069, 458752, 805306374, 983070, 458752, 805306374, 983071, 458752, 805306374, 983059, 458752, 805306374, 983058, 458752, 805306374, 983057, 458752, 805306374, 983056, 458752, 805306374, 983055, 458752, 805306374, 983054, 458752, 805306374, 983053, 458752, 805306374, 983052, 458752, 805306374, 983051, 458752, 805306374, 983050, 458752, 805306374, 983049, 458752, 805306374, 983048, 458752, 805306374, 983047, 458752, 805306374, 983046, 458752, 805306374, 983045, 458752, 805306374, 983044, 458752, 805306374, 983043, 458752, 805306374, 983042, 458752, 805306374, 983041, 458752, 805306374, 983040, 458752, 805306374, 1048575, 458752, 805306374, 1048574, 458752, 805306374, 1048573, 458752, 5, 983037, 458752, 1610612742, 983038, 393216, 6, 917502, 393216, 5, 851966, 393216, 5, 786430, 393216, 5, 720894, 393216, 5, 655358, 393216, 5, 589822, 393216, 5, 524286, 393216, 5, 458750, 393216, 5, 393214, 393216, 5, 393213, 458752, 1610612742, 327677, 458752, 1610612742, 262141, 458752, 1610612742, 196605, 458752, 1610612742, 131069, 458752, 1610612742, 65534, 393216, 5, -2, 393216, 5, -65538, 524288, 805306374, -65539, 458752, 1610612742, -3, 458752, 1610612742, 65533, 458752, 1610612742, 458749, 458752, 1610612742, 524285, 458752, 1610612742, 589821, 458752, 1610612742, 655357, 458752, 1610612742, 720893, 458752, 1610612742, -131075, 458752, 5, -131074, 458752, 6, -131073, 458752, 6, -196608, 458752, 6, -196607, 458752, 6, -196606, 458752, 6, -196605, 458752, 6, -196604, 458752, 6, -196603, 458752, 6, -196602, 458752, 6, -196601, 458752, 6, -196600, 458752, 6, -196599, 458752, 6, -196598, 458752, 6, -196597, 458752, 6, -196596, 458752, 6, -196595, 458752, 6, -196594, 458752, 6, -196593, 458752, 6, -196592, 458752, 6, -196591, 458752, 6, -196590, 458752, 6, -196589, 458752, 6, -196588, 458752, 6, -196587, 458752, 6, -196586, 458752, 6, -196585, 458752, 6, -196584, 458752, 6, -196583, 458752, 6, -196582, 458752, 6, -196581, 458752, 6, -196580, 458752, 6, -196579, 458752, 6, -196578, 458752, 6, -196577, 458752, 6, -196611, 458752, 5, -196610, 458752, 5, -196609, 458752, 5, -262144, 458752, 5, -262143, 458752, 5, -262142, 458752, 5, -262141, 458752, 5, -262140, 458752, 5, -262139, 458752, 5, -262138, 458752, 5, -262137, 458752, 5, -262136, 458752, 5, -262135, 458752, 5, -262134, 458752, 5, -262133, 458752, 5, -262132, 458752, 5, -262131, 458752, 5, -262130, 458752, 5, -262129, 458752, 5, -262128, 458752, 5, -262127, 458752, 5, -262126, 458752, 5, -262125, 458752, 5, -262124, 458752, 5, -262123, 458752, 5, -262122, 458752, 5, -262121, 458752, 5, -262120, 458752, 5, -262119, 458752, 5, -262118, 458752, 5, -262117, 458752, 5, -262116, 458752, 5, -262115, 458752, 5, -262114, 458752, 5, -262113, 458752, 5, -262112, 458752, 5, -262111, 458752, 5, -262110, 458752, 5, -262109, 458752, 5, -262108, 458752, 5, -262147, 458752, 5, -262146, 458752, 5, -262145, 458752, 5, -327680, 458752, 5, -327679, 458752, 5, -327678, 458752, 5, -327677, 458752, 5, -327676, 458752, 5, -327675, 458752, 5, -327674, 458752, 5, -327673, 458752, 5, -327672, 458752, 5, -327671, 458752, 5, -327670, 458752, 5, -327669, 458752, 5, -327668, 458752, 5, -327667, 458752, 5, -327666, 458752, 5, -327665, 458752, 5, -327664, 458752, 5, -327663, 458752, 5, -327662, 458752, 5, -327661, 458752, 5, -327660, 458752, 5, -327659, 458752, 5, -327658, 458752, 5, -327657, 458752, 5, -327656, 458752, 5, -327655, 458752, 5, -327654, 458752, 5, -327653, 458752, 5, -327652, 458752, 5, -327651, 458752, 5, -327650, 458752, 5, -327649, 458752, 5, -327648, 458752, 5, -327647, 458752, 5, -327646, 458752, 5, -327645, 458752, 5, -327644, 458752, 5, -327643, 458752, 5, -327642, 458752, 5, -327641, 458752, 5, -327640, 458752, 5, -327639, 458752, 5, -327638, 458752, 5, -327682, 458752, 5, -327681, 458752, 5, -393216, 458752, 5, -393215, 458752, 5, -393214, 458752, 5, -393213, 458752, 5, -393212, 458752, 5, -393211, 458752, 5, -393210, 458752, 5, -393209, 458752, 5, -393208, 458752, 5, -393207, 458752, 5, -393206, 458752, 5, -393205, 458752, 5, -393204, 458752, 5, -393203, 458752, 5, -393202, 458752, 5, -393201, 458752, 5, -393200, 458752, 5, -393199, 458752, 5, -393198, 458752, 5, -393197, 458752, 5, -393196, 458752, 5, -393195, 458752, 5, -393194, 458752, 5, -393193, 458752, 5, -393192, 458752, 5, -393191, 458752, 5, -393190, 458752, 5, -393189, 458752, 5, -393188, 458752, 5, -393187, 458752, 5, -393186, 458752, 5, -393185, 458752, 5, -393184, 458752, 5, -393183, 458752, 5, -393182, 458752, 5, -393181, 458752, 5, -393180, 458752, 5, -393179, 458752, 5, -393178, 458752, 5, -393177, 458752, 5, -393176, 458752, 5, -393175, 458752, 5, -327683, 458752, 5, -327684, 458752, 5, -262148, 458752, 5, -196612, 458752, 5, -131076, 458752, 5, -65540, 458752, 5, -4, 458752, 5, 65532, 458752, 5, 131068, 458752, 5, 196604, 458752, 5, 262140, 458752, 5, 327676, 458752, 5, 393212, 458752, 5, 458748, 458752, 5, 458747, 458752, 5, 524283, 458752, 5, 589819, 458752, 5, 655355, 458752, 5, 720891, 458752, 5, 786427, 458752, 5, 786428, 458752, 5, 720892, 458752, 5, 655356, 458752, 5, 589820, 458752, 5, 524284, 458752, 5, 393211, 458752, 5, 393210, 458752, 5, 393209, 458752, 5, 393208, 458752, 5, 393207, 458752, 5, 393206, 458752, 5, 327670, 458752, 5, 327671, 458752, 5, 327672, 458752, 5, 327673, 458752, 5, 327674, 458752, 5, 327675, 458752, 5, 262138, 458752, 5, 262137, 458752, 5, 262136, 458752, 5, 262135, 458752, 5, 262134, 458752, 5, 196602, 458752, 5, 196603, 458752, 5, 262139, 458752, 5, 131067, 458752, 5, 131066, 458752, 5, 131065, 458752, 5, 131064, 458752, 5, 196599, 458752, 5, 196598, 458752, 5, 196600, 458752, 5, 196601, 458752, 5, 131062, 458752, 5, 65526, 458752, 5, 65527, 458752, 5, 65528, 458752, 5, 65529, 458752, 5, 65530, 458752, 5, 65531, 458752, 5, 131063, 458752, 5, -5, 458752, 5, -65541, 458752, 5, -65542, 458752, 5, -7, 458752, 5, -6, 458752, 5, -65544, 458752, 5, -65543, 458752, 5, -131077, 458752, 5, -131078, 458752, 5, -8, 458752, 5, -131079, 458752, 5, -196613, 458752, 5, -196614, 458752, 5, -196615, 458752, 5, -9, 458752, 5, -65545, 458752, 5, -131080, 458752, 5, -262150, 458752, 5, -262149, 458752, 5, -327685, 458752, 5, -327686, 458752, 5, -327687, 458752, 5, -327688, 458752, 5, -327689, 458752, 5, -327690, 458752, 5, -327691, 458752, 5, -262155, 458752, 5, -196619, 458752, 5, -131083, 458752, 5, -65547, 458752, 5, -11, 458752, 5, -10, 458752, 5, -65546, 458752, 5, -131082, 458752, 5, -196618, 458752, 5, -262154, 458752, 5, -262153, 458752, 5, -262152, 458752, 5, -262151, 458752, 5, -196616, 458752, 5, -196617, 458752, 5, -131081, 458752, 5, 65525, 458752, 5, 131061, 458752, 5, 196597, 458752, 5, 262133, 458752, 5, 327669, 458752, 5, 458742, 458752, 5, 524278, 458752, 5, 589814, 458752, 5, 655350, 458752, 5, 720886, 458752, 5, 786422, 458752, 5, 851958, 458752, 5, 917494, 458752, 5, 393205, 458752, 5, 458741, 458752, 5, 524277, 458752, 5, 589813, 458752, 5, 655349, 458752, 5, 720885, 458752, 5, 786421, 458752, 5, 851957, 458752, 5, 917493, 458752, 5, 983029, 458752, 5, 1048565, 458752, 5, 1114101, 458752, 5, 1179637, 458752, 5, 1245173, 458752, 5, 458743, 458752, 5, 524279, 458752, 5, 589815, 458752, 5, 655352, 458752, 5, 589816, 458752, 5, 589817, 458752, 5, 524281, 458752, 5, 524282, 458752, 5, 458745, 458752, 5, 524280, 458752, 5, 458744, 458752, 5, 458746, 458752, 5, 655353, 458752, 5, 720889, 458752, 5, 786425, 458752, 5, 851961, 458752, 5, 917497, 458752, 5, 917496, 458752, 5, 983032, 458752, 5, 851960, 458752, 5, 786424, 458752, 5, 720887, 458752, 5, 655351, 458752, 5, 786423, 458752, 5, 851959, 458752, 5, 917495, 458752, 5, 983033, 458752, 5, 720888, 458752, 5, 589818, 458752, 5, 655354, 458752, 5, 720890, 458752, 5, 786426, 458752, 5, 851962, 458752, 5, 917498, 458752, 5, 983034, 458752, 5, 1048570, 458752, 5, 1114106, 458752, 5, 1048569, 458752, 5, 1114104, 458752, 5, 1179640, 458752, 5, 1048568, 458752, 5, 983031, 458752, 5, 1048567, 458752, 5, 1114102, 458752, 5, 1048566, 458752, 5, 983030, 458752, 5, 1179638, 458752, 5, 1245174, 458752, 5, 1114103, 458752, 5, 1179639, 458752, 5, 1245175, 458752, 5, 1245176, 458752, 5, 1114105, 458752, 5, 1179641, 458752, 5, 1245177, 458752, 5, 1245178, 458752, 5, 1179642, 458752, 5, 1048571, 458752, 5, 983035, 458752, 5, 917499, 458752, 5, 851963, 458752, 5, 786429, 458752, 1610612742, 851965, 458752, 1610612742, 851964, 458752, 5, 917500, 458752, 5, 983036, 458752, 5, 917501, 458752, 1610612742, 1048572, 458752, 5, 1114107, 458752, 5, 1179643, 458752, 5, 1245179, 458752, 5, 1245180, 458752, 5, 1245181, 458752, 5, 1245182, 458752, 5, 1114108, 458752, 5, 1114109, 458752, 5, 1114110, 458752, 5, 1114111, 458752, 5, 1048576, 458752, 5, 1048577, 458752, 5, 1048578, 458752, 5, 1048579, 458752, 5, 1048580, 458752, 5, 1048590, 458752, 5, 1048591, 458752, 5, 1048592, 458752, 5, 1048593, 458752, 5, 1048594, 458752, 5, 1114127, 458752, 5, 1114126, 458752, 5, 1114125, 458752, 5, 1114124, 458752, 5, 1114123, 458752, 5, 1114122, 458752, 5, 1114121, 458752, 5, 1114120, 458752, 5, 1114119, 458752, 5, 1048582, 458752, 5, 1048581, 458752, 5, 1048583, 458752, 5, 1048584, 458752, 5, 1048585, 458752, 5, 1048586, 458752, 5, 1048587, 458752, 5, 1048588, 458752, 5, 1048589, 458752, 5, 1114112, 458752, 5, 1179647, 458752, 5, 1179646, 458752, 5, 1179645, 458752, 5, 1179644, 458752, 5, 1114113, 458752, 5, 1114114, 458752, 5, 1114115, 458752, 5, 1114116, 458752, 5, 1114117, 458752, 5, 1114118, 458752, 5, 1179649, 458752, 5, 1179648, 458752, 5, 1245183, 458752, 5, 1179650, 458752, 5, 1179651, 458752, 5, 1179652, 458752, 5, 1179659, 458752, 5, 1179660, 458752, 5, 1179661, 458752, 5, 1179658, 458752, 5, 1179657, 458752, 5, 1179656, 458752, 5, 1179655, 458752, 5, 1179654, 458752, 5, 1179653, 458752, 5, 1179662, 458752, 5, 1179663, 458752, 5, 1179664, 458752, 5, 1179665, 458752, 5, 1179666, 458752, 5, 1114130, 458752, 5, 1114131, 458752, 5, 1114129, 458752, 5, 1114128, 458752, 5, 1114132, 458752, 5, 1114133, 458752, 5, 1114134, 458752, 5, 1114135, 458752, 5, 1114136, 458752, 5, 1114137, 458752, 5, 1114138, 458752, 5, 1114139, 458752, 5, 1114140, 458752, 5, 1114141, 458752, 5, 1114142, 458752, 5, 1114143, 458752, 5, 1114144, 458752, 5, 1114145, 458752, 5, 1114146, 458752, 5, 1114147, 458752, 5, 1114148, 458752, 5, 1114149, 458752, 5, 1114150, 458752, 5, 1114151, 458752, 5, 1114152, 458752, 5, 1114153, 458752, 5, 1114154, 458752, 5, 1114155, 458752, 5, 1179667, 458752, 5, 1179668, 458752, 5, 1179669, 458752, 5, 1179670, 458752, 5, 1179671, 458752, 5, 1179672, 458752, 5, 1179673, 458752, 5, 1179674, 458752, 5, 1179675, 458752, 5, 1179676, 458752, 5, 1179677, 458752, 5, 1179678, 458752, 5, 1179679, 458752, 5, 1179680, 458752, 5, 1179681, 458752, 5, 1179682, 458752, 5, 1179683, 458752, 5, 1179684, 458752, 5, 1179685, 458752, 5, 1179686, 458752, 5, 1179687, 458752, 5, 1179688, 458752, 5, 1179689, 458752, 5, 1179690, 458752, 5, 1179691, 458752, 5, 1179692, 458752, 5, 1179693, 458752, 5, 1179694, 458752, 5, 1114156, 458752, 5, 1114157, 458752, 5, 1114158, 458752, 5, 1114159, 458752, 5, 1114160, 458752, 5, 1114161, 458752, 5, 1114162, 458752, 5, 1114163, 458752, 5, 1114164, 458752, 5, 1114165, 458752, 5, 1114166, 458752, 5, 1114167, 458752, 5, 1179695, 458752, 5, 1179696, 458752, 5, 1179697, 458752, 5, 1179698, 458752, 5, 1179699, 458752, 5, 1179700, 458752, 5, 1179701, 458752, 5, 1179702, 458752, 5, 1179703, 458752, 5, 917559, 458752, 1342177286, 852023, 458752, 1342177286, 786487, 458752, 1342177286, 720951, 458752, 1342177286, 655415, 458752, 1342177286, 589879, 458752, 1342177286, 524343, 458752, 1342177286, 458807, 458752, 1342177286, 393271, 458752, 1342177286, 327735, 458752, 1342177286, 262199, 458752, 1342177286, 196663, 458752, 1342177286, 131127, 458752, 1342177286, 65591, 458752, 1342177286, 55, 458752, 1342177286, -65481, 458752, 1342177286, -131017, 458752, 1342177286, -131016, 458752, 5, -131015, 458752, 5, -65479, 458752, 5, 57, 458752, 5, 65593, 458752, 5, 131129, 458752, 5, 196665, 458752, 5, 262201, 458752, 5, 327737, 458752, 5, 393273, 458752, 5, 458809, 458752, 5, 524345, 458752, 5, 589881, 458752, 5, 655417, 458752, 5, 720953, 458752, 5, 786489, 458752, 5, 852025, 458752, 5, 917561, 458752, 5, 983097, 458752, 5, 1048633, 458752, 5, 1114169, 458752, 5, 1179705, 458752, 5, 1179704, 458752, 5, 1114168, 458752, 5, 1048632, 458752, 5, 983096, 458752, 5, 917560, 458752, 5, 852024, 458752, 5, 786488, 458752, 5, 720952, 458752, 5, 655416, 458752, 5, 589880, 458752, 5, 524344, 458752, 5, 458808, 458752, 5, 393272, 458752, 5, 327736, 458752, 5, 262200, 458752, 5, 196664, 458752, 5, 131128, 458752, 5, 65592, 458752, 5, 56, 458752, 5, -65480, 458752, 5, -196576, 458752, 6, -196575, 458752, 6, -196574, 458752, 6, -196573, 458752, 6, -196572, 458752, 6, -196571, 458752, 6, -196570, 458752, 6, -196569, 458752, 6, -196568, 458752, 6, -196567, 458752, 6, -196566, 458752, 6, -196565, 458752, 6, -196564, 458752, 6, -196563, 458752, 6, -196562, 458752, 6, -196561, 458752, 6, -196560, 458752, 6, -196559, 458752, 6, -196558, 458752, 6, -196557, 458752, 6, -196556, 458752, 6, -196555, 458752, 6, -196554, 458752, 6, -196553, 458752, 5, -196552, 458752, 5, -196551, 458752, 5, -262107, 458752, 5, -262106, 458752, 5, -262105, 458752, 5, -262104, 458752, 5, -262103, 458752, 5, -262102, 458752, 5, -262101, 458752, 5, -262100, 458752, 5, -262099, 458752, 5, -262098, 458752, 5, -262097, 458752, 5, -262096, 458752, 5, -262095, 458752, 5, -262094, 458752, 5, -262093, 458752, 5, -262092, 458752, 5, -262091, 458752, 5, -262090, 458752, 5, -262089, 458752, 5, -262088, 458752, 5, -262087, 458752, 5, -393174, 458752, 5, -393173, 458752, 5, -393172, 458752, 5, -393171, 458752, 5, -393170, 458752, 5, -393169, 458752, 5, -393168, 458752, 5, -393167, 458752, 5, -393166, 458752, 5, -393165, 458752, 5, -393164, 458752, 5, -393163, 458752, 5, -393162, 458752, 5, -393161, 458752, 5, -393160, 458752, 5, -393159, 458752, 5, -327623, 458752, 5, -327624, 458752, 5, -327625, 458752, 5, -327626, 458752, 5, -327627, 458752, 5, -327628, 458752, 5, -327629, 458752, 5, -327630, 458752, 5, -327631, 458752, 5, -327632, 458752, 5, -327633, 458752, 5, -327634, 458752, 5, -327635, 458752, 5, -327636, 458752, 5, -327637, 458752, 5, -393158, 458752, 5, -327622, 458752, 5, -262086, 458752, 5, -196550, 458752, 5, -131014, 458752, 5, -65478, 458752, 5, 58, 458752, 5, 65594, 458752, 5, 131130, 458752, 5, 196666, 458752, 5, 262202, 458752, 5, 327738, 458752, 5, 393274, 458752, 5, 458810, 458752, 5, 524346, 458752, 5, 589882, 458752, 5, 655418, 458752, 5, 720954, 458752, 5, 786490, 458752, 5, 852026, 458752, 5, 917562, 458752, 5, 983098, 458752, 5, 1048634, 458752, 5, 1114170, 458752, 5, 1179706, 458752, 5, -393157, 458752, 5, -327621, 458752, 5, -262085, 458752, 5, -196549, 458752, 5, -131013, 458752, 5, -65477, 458752, 5, 60, 458752, 5, 65596, 458752, 5, 131132, 458752, 5, 196668, 458752, 5, 262204, 458752, 5, 327740, 458752, 5, 393276, 458752, 5, 458812, 458752, 5, 524348, 458752, 5, 589884, 458752, 5, 655420, 458752, 5, 720956, 458752, 5, 786492, 458752, 5, -393156, 458752, 5, -327620, 458752, 5, -262084, 458752, 5, -196548, 458752, 5, -131012, 458752, 5, -65476, 458752, 5, 59, 458752, 5, 65595, 458752, 5, 131131, 458752, 5, 196667, 458752, 5, 262203, 458752, 5, 327739, 458752, 5, 393275, 458752, 5, 458811, 458752, 5, 524347, 458752, 5, 589883, 458752, 5, 655419, 458752, 5, 720955, 458752, 5, 786491, 458752, 5, 852027, 458752, 5, 917563, 458752, 5, 983099, 458752, 5, 1048635, 458752, 5, 1114171, 458752, 5, 1179707, 458752, 5, 852028, 458752, 5, 917564, 458752, 5, 983100, 458752, 5, 1048636, 458752, 5, 1114172, 458752, 5, 1179708, 458752, 5, -393155, 458752, 5, -327619, 458752, 5, -262083, 458752, 5, -196547, 458752, 5, -131011, 458752, 5, -65475, 458752, 5, 61, 458752, 5, 65597, 458752, 5, 131133, 458752, 5, 196669, 458752, 5, 262205, 458752, 5, 327741, 458752, 5, 393277, 458752, 5, 458813, 458752, 5, 524349, 458752, 5, 589885, 458752, 5, 655421, 458752, 5, 720957, 458752, 5, 786493, 458752, 5, 852029, 458752, 5, 852030, 458752, 5, 917566, 458752, 5, 983102, 458752, 5, 1048638, 458752, 5, 1048637, 458752, 5, 1114173, 458752, 5, 1179709, 458752, 5, 1179710, 458752, 5, 1114174, 458752, 5, 786494, 458752, 5, 720958, 458752, 5, 655422, 458752, 5, 589886, 458752, 5, 524350, 458752, 5, 458814, 458752, 5, 393278, 458752, 5, 327742, 458752, 5, 262206, 458752, 5, 196670, 458752, 5, 131134, 458752, 5, 65598, 458752, 5, 62, 458752, 5, -65474, 458752, 5, -131010, 458752, 5, -196546, 458752, 5, -262082, 458752, 5, -327618, 458752, 5, -393154, 458752, 5, 917565, 458752, 5, 983101, 458752, 5, -327692, 458752, 5, -262156, 458752, 5, -196620, 458752, 5, -131084, 458752, 5, -65548, 458752, 5, -12, 458752, 5, 65524, 458752, 5, 131060, 458752, 5, 196596, 458752, 5, 262132, 458752, 5, 327668, 458752, 5, 393204, 458752, 5, 458740, 458752, 5, 524276, 458752, 5, 589812, 458752, 5, 655348, 458752, 5, 720884, 458752, 5, 786420, 458752, 5, 851956, 458752, 5, 917492, 458752, 5, 983028, 458752, 5, 1048564, 458752, 5, 1114100, 458752, 5, 1179636, 458752, 5, 1245172, 458752, 5, 131070, 393216, 5, 196606, 393216, 5, 262142, 393216, 5, 327678, 393216, 5, 196631, 458752, 4, 262166, 393216, 4, 262167, 393216, 5, 262168, 524288, 4, 262169, 1114112, 1, 262170, 1245184, 1, 1310708, 458752, 5, 1310709, 458752, 5, 1310710, 458752, 5, 1310711, 458752, 5, 1310712, 458752, 5, 1310713, 458752, 5, 1310714, 458752, 5, 1310715, 458752, 5, 1310716, 458752, 5, 1310717, 458752, 5, 1310718, 458752, 5, 1310719, 458752, 5, 1245184, 458752, 5, 1245185, 458752, 5, 1245186, 458752, 5, 1245187, 458752, 5, 1245188, 458752, 5, 1245189, 458752, 5, 1245190, 458752, 5, 1245191, 458752, 5, 1245192, 458752, 5, 1245193, 458752, 5, 1245194, 458752, 5, 1245195, 458752, 5, 1245196, 458752, 5, 1245197, 458752, 5, 1245198, 458752, 5, 1245199, 458752, 5, 1245200, 458752, 5, 1245201, 458752, 5, 1245202, 458752, 5, 1245203, 458752, 5, 1245204, 458752, 5, 1245205, 458752, 5, 1245206, 458752, 5, 1245207, 458752, 5, 1245208, 458752, 5, 1245209, 458752, 5, 1245210, 458752, 5, 1245211, 458752, 5, 1245212, 458752, 5, 1245213, 458752, 5, 1245214, 458752, 5, 1245215, 458752, 5, 1245216, 458752, 5, 1245217, 458752, 5, 1245218, 458752, 5, 1245219, 458752, 5, 1245220, 458752, 5, 1245221, 458752, 5, 1245222, 458752, 5, 1245223, 458752, 5, 1245224, 458752, 5, 1245225, 458752, 5, 1245226, 458752, 5, 1245227, 458752, 5, 1245228, 458752, 5, 1245229, 458752, 5, 1245230, 458752, 5, 1245231, 458752, 5, 1245232, 458752, 5, 1245233, 458752, 5, 1245234, 458752, 5, 1245235, 458752, 5, 1245236, 458752, 5, 1245237, 458752, 5, 1245238, 458752, 5, 1245239, 458752, 5, 1245240, 458752, 5, 1245241, 458752, 5, 1245242, 458752, 5, 1245243, 458752, 5, 1245244, 458752, 5, 1245245, 458752, 5, 1245246, 458752, 5, -393153, 458752, 5, -327617, 458752, 5, -262081, 458752, 5, -196545, 458752, 5, -131009, 458752, 5, -65473, 458752, 5, 63, 458752, 5, 65599, 458752, 5, 131135, 458752, 5, 196671, 458752, 5, 262207, 458752, 5, 327743, 458752, 5, 393279, 458752, 5, 458815, 458752, 5, 524351, 458752, 5, 589887, 458752, 5, 655423, 458752, 5, 720959, 458752, 5, 786495, 458752, 5, 852031, 458752, 5, 917567, 458752, 5, 983103, 458752, 5, 1048639, 458752, 5, 1114175, 458752, 5, 1179711, 458752, 5, 1245247, 458752, 5, -393152, 458752, 5, -327616, 458752, 5, -262080, 458752, 5, -196544, 458752, 5, -131008, 458752, 5, -65472, 458752, 5, 64, 458752, 5, 65600, 458752, 5, 131136, 458752, 5, 196672, 458752, 5, 262208, 458752, 5, 327744, 458752, 5, 393280, 458752, 5, 458816, 458752, 5, 524352, 458752, 5, 589888, 458752, 5, 655424, 458752, 5, 720960, 458752, 5, 786496, 458752, 5, 852032, 458752, 5, 917568, 458752, 5, 983104, 458752, 5, 1048640, 458752, 5, 1114176, 458752, 5, 1179712, 458752, 5, 1245248, 458752, 5, 589873, 458752, 4, 589872, 393216, 4) - -[node name="CharacterBody2D" parent="Scene Objects" instance=ExtResource("4_cyvkj")] -position = Vector2(84, 534) - -[node name="Camera2D" type="Camera2D" parent="Scene Objects/CharacterBody2D"] -position = Vector2(105, 59) -position_smoothing_enabled = true -position_smoothing_speed = 7.0 - -[node name="Collectables group" type="Node" parent="Scene Objects"] - -[node name="collectable" parent="Scene Objects/Collectables group" instance=ExtResource("5_kcoiy")] -position = Vector2(288, 521) - -[node name="collectable2" parent="Scene Objects/Collectables group" instance=ExtResource("5_kcoiy")] -position = Vector2(471, 480) - -[node name="collectable4" parent="Scene Objects/Collectables group" instance=ExtResource("5_kcoiy")] -position = Vector2(615, 479) - -[node name="collectable6" parent="Scene Objects/Collectables group" instance=ExtResource("5_kcoiy")] -position = Vector2(885, 379) - -[node name="collectable7" parent="Scene Objects/Collectables group" instance=ExtResource("5_kcoiy")] -position = Vector2(741, 232) - -[node name="collectable8" parent="Scene Objects/Collectables group" instance=ExtResource("5_kcoiy")] -position = Vector2(571, 185) - -[node name="collectable9" parent="Scene Objects/Collectables group" instance=ExtResource("5_kcoiy")] -position = Vector2(309, 336) - -[node name="collectable11" parent="Scene Objects/Collectables group" instance=ExtResource("5_kcoiy")] -position = Vector2(15, 233) - -[node name="collectable12" parent="Scene Objects/Collectables group" instance=ExtResource("5_kcoiy")] -position = Vector2(18, 37) - -[node name="collectable13" parent="Scene Objects/Collectables group" instance=ExtResource("5_kcoiy")] -position = Vector2(238, 144) - -[node name="collectable14" parent="Scene Objects/Collectables group" instance=ExtResource("5_kcoiy")] -position = Vector2(500, 41) - -[node name="collectable15" parent="Scene Objects/Collectables group" instance=ExtResource("5_kcoiy")] -position = Vector2(1106, 100) - -[node name="collectable17" parent="Scene Objects/Collectables group" instance=ExtResource("5_kcoiy")] -position = Vector2(882, 50) - -[node name="collectable21" parent="Scene Objects/Collectables group" instance=ExtResource("5_kcoiy")] -position = Vector2(781, 521) - -[node name="collectable3" parent="Scene Objects/Collectables group" instance=ExtResource("5_kcoiy")] -position = Vector2(1237, 428) - -[node name="collectable5" parent="Scene Objects/Collectables group" instance=ExtResource("5_kcoiy")] -position = Vector2(1510, 336) - -[node name="collectable10" parent="Scene Objects/Collectables group" instance=ExtResource("5_kcoiy")] -position = Vector2(2031, 267) - -[node name="collectable16" parent="Scene Objects/Collectables group" instance=ExtResource("5_kcoiy")] -position = Vector2(1933, 90) - -[node name="collectable19" parent="Scene Objects/Collectables group" instance=ExtResource("5_kcoiy")] -position = Vector2(2480, 187) - -[node name="collectable20" parent="Scene Objects/Collectables group" instance=ExtResource("5_kcoiy")] -position = Vector2(2152, 87) - -[node name="collectable22" parent="Scene Objects/Collectables group" instance=ExtResource("5_kcoiy")] -position = Vector2(1623, 192) - -[node name="collectable18" parent="Scene Objects/Collectables group" instance=ExtResource("5_kcoiy")] -position = Vector2(2353, 380) - -[node name="collectable23" parent="Scene Objects/Collectables group" instance=ExtResource("5_kcoiy")] -position = Vector2(2054, 485) - -[node name="collectable24" parent="Scene Objects/Collectables group" instance=ExtResource("5_kcoiy")] -position = Vector2(1657, 463) - -[node name="collectable25" parent="Scene Objects/Collectables group" instance=ExtResource("5_kcoiy")] -position = Vector2(1502, 61) - -[node name="Finish" parent="Scene Objects" instance=ExtResource("6_17liv")] -texture_filter = 1 -position = Vector2(1870, 64) -target_lavel = ExtResource("7_p3ftm") - -[node name="UI" type="CanvasLayer" parent="."] - -[node name="Panel" type="Panel" parent="UI"] -offset_left = 16.0 -offset_top = 18.0 -offset_right = 190.0 -offset_bottom = 80.0 - -[node name="Points Label" type="Label" parent="UI/Panel"] -unique_name_in_owner = true -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -theme_override_colors/font_color = Color(0.964706, 0.929412, 0, 1) -theme_override_colors/font_shadow_color = Color(0.117647, 0, 0, 1) -theme_override_colors/font_outline_color = Color(0, 0, 0, 0) -theme_override_font_sizes/font_size = 20 -text = "Points : 0" -horizontal_alignment = 1 -vertical_alignment = 1 diff --git a/src/scenes/level2.tscn b/src/scenes/level2.tscn deleted file mode 100644 index 31cd0af..0000000 --- a/src/scenes/level2.tscn +++ /dev/null @@ -1,611 +0,0 @@ -[gd_scene load_steps=10 format=3 uid="uid://bij5pmaxb2a5q"] - -[ext_resource type="Script" path="res://game_manager.gd" id="1_bks1i"] -[ext_resource type="Texture2D" uid="uid://la8jl1agaetd" path="res://Gray.png" id="2_dvf6n"] -[ext_resource type="Texture2D" uid="uid://bnoowio0hp7o2" path="res://Terrain (16x16).png" id="3_3jsqb"] -[ext_resource type="PackedScene" uid="uid://d0gicsksxcad" path="res://scenes/main_character.tscn" id="4_gl3ga"] -[ext_resource type="PackedScene" uid="uid://bu8800vy3b34a" path="res://scenes/collectable.tscn" id="5_q578j"] -[ext_resource type="PackedScene" uid="uid://cqrbnj6mscgu2" path="res://scenes/finish.tscn" id="6_rsnk0"] -[ext_resource type="PackedScene" uid="uid://pjv6r6e0wjdy" path="res://scenes/exit_scene.tscn" id="7_dilak"] - -[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_hrhtv"] -texture = ExtResource("3_3jsqb") -0:0/0 = 0 -0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -0:0/0/physics_layer_0/angular_velocity = 0.0 -1:0/0 = 0 -1:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -1:0/0/physics_layer_0/angular_velocity = 0.0 -2:0/0 = 0 -2:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -2:0/0/physics_layer_0/angular_velocity = 0.0 -3:0/0 = 0 -3:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -3:0/0/physics_layer_0/angular_velocity = 0.0 -4:0/0 = 0 -4:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -4:0/0/physics_layer_0/angular_velocity = 0.0 -6:0/0 = 0 -6:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -6:0/0/physics_layer_0/angular_velocity = 0.0 -6:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -7:0/0 = 0 -7:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -7:0/0/physics_layer_0/angular_velocity = 0.0 -7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -8:0/0 = 0 -8:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -8:0/0/physics_layer_0/angular_velocity = 0.0 -8:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -9:0/0 = 0 -9:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -9:0/0/physics_layer_0/angular_velocity = 0.0 -9:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -10:0/0 = 0 -10:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -10:0/0/physics_layer_0/angular_velocity = 0.0 -10:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -12:0/0 = 0 -12:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -12:0/0/physics_layer_0/angular_velocity = 0.0 -13:0/0 = 0 -13:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -13:0/0/physics_layer_0/angular_velocity = 0.0 -14:0/0 = 0 -14:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -14:0/0/physics_layer_0/angular_velocity = 0.0 -15:0/0 = 0 -15:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -15:0/0/physics_layer_0/angular_velocity = 0.0 -17:0/0 = 0 -17:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -17:0/0/physics_layer_0/angular_velocity = 0.0 -18:0/0 = 0 -18:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -18:0/0/physics_layer_0/angular_velocity = 0.0 -19:0/0 = 0 -19:0/0/physics_layer_0/linear_velocity = Vector2(0, 0) -19:0/0/physics_layer_0/angular_velocity = 0.0 -0:1/0 = 0 -0:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -0:1/0/physics_layer_0/angular_velocity = 0.0 -1:1/0 = 0 -1:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -1:1/0/physics_layer_0/angular_velocity = 0.0 -2:1/0 = 0 -2:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -2:1/0/physics_layer_0/angular_velocity = 0.0 -3:1/0 = 0 -3:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -3:1/0/physics_layer_0/angular_velocity = 0.0 -4:1/0 = 0 -4:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -4:1/0/physics_layer_0/angular_velocity = 0.0 -6:1/0 = 0 -6:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -6:1/0/physics_layer_0/angular_velocity = 0.0 -6:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -7:1/0 = 0 -7:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -7:1/0/physics_layer_0/angular_velocity = 0.0 -7:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -8:1/0 = 0 -8:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -8:1/0/physics_layer_0/angular_velocity = 0.0 -8:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -9:1/0 = 0 -9:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -9:1/0/physics_layer_0/angular_velocity = 0.0 -9:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -10:1/0 = 0 -10:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -10:1/0/physics_layer_0/angular_velocity = 0.0 -10:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -12:1/0 = 0 -12:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -12:1/0/physics_layer_0/angular_velocity = 0.0 -13:1/0 = 0 -13:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -13:1/0/physics_layer_0/angular_velocity = 0.0 -14:1/0 = 0 -14:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -14:1/0/physics_layer_0/angular_velocity = 0.0 -15:1/0 = 0 -15:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -15:1/0/physics_layer_0/angular_velocity = 0.0 -17:1/0 = 0 -17:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -17:1/0/physics_layer_0/angular_velocity = 0.0 -17:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -18:1/0 = 0 -18:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -18:1/0/physics_layer_0/angular_velocity = 0.0 -18:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -19:1/0 = 0 -19:1/0/physics_layer_0/linear_velocity = Vector2(0, 0) -19:1/0/physics_layer_0/angular_velocity = 0.0 -19:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -0:2/0 = 0 -0:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) -0:2/0/physics_layer_0/angular_velocity = 0.0 -1:2/0 = 0 -1:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) -1:2/0/physics_layer_0/angular_velocity = 0.0 -2:2/0 = 0 -2:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) -2:2/0/physics_layer_0/angular_velocity = 0.0 -6:2/0 = 0 -6:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) -6:2/0/physics_layer_0/angular_velocity = 0.0 -6:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -7:2/0 = 0 -7:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) -7:2/0/physics_layer_0/angular_velocity = 0.0 -7:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -8:2/0 = 0 -8:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) -8:2/0/physics_layer_0/angular_velocity = 0.0 -8:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -13:2/0 = 0 -13:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) -13:2/0/physics_layer_0/angular_velocity = 0.0 -14:2/0 = 0 -14:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) -14:2/0/physics_layer_0/angular_velocity = 0.0 -15:2/0 = 0 -15:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) -15:2/0/physics_layer_0/angular_velocity = 0.0 -17:2/0 = 0 -17:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) -17:2/0/physics_layer_0/angular_velocity = 0.0 -17:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -18:2/0 = 0 -18:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) -18:2/0/physics_layer_0/angular_velocity = 0.0 -18:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -19:2/0 = 0 -19:2/0/physics_layer_0/linear_velocity = Vector2(0, 0) -19:2/0/physics_layer_0/angular_velocity = 0.0 -19:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -0:4/0 = 0 -0:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -0:4/0/physics_layer_0/angular_velocity = 0.0 -1:4/0 = 0 -1:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -1:4/0/physics_layer_0/angular_velocity = 0.0 -2:4/0 = 0 -2:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -2:4/0/physics_layer_0/angular_velocity = 0.0 -3:4/0 = 0 -3:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -3:4/0/physics_layer_0/angular_velocity = 0.0 -4:4/0 = 0 -4:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -4:4/0/physics_layer_0/angular_velocity = 0.0 -6:4/0 = 0 -6:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -6:4/0/physics_layer_0/angular_velocity = 0.0 -6:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -7:4/0 = 0 -7:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -7:4/0/physics_layer_0/angular_velocity = 0.0 -7:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -8:4/0 = 0 -8:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -8:4/0/physics_layer_0/angular_velocity = 0.0 -8:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -9:4/0 = 0 -9:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -9:4/0/physics_layer_0/angular_velocity = 0.0 -9:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -10:4/0 = 0 -10:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -10:4/0/physics_layer_0/angular_velocity = 0.0 -10:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -12:4/0 = 0 -12:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -12:4/0/physics_layer_0/angular_velocity = 0.0 -13:4/0 = 0 -13:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -13:4/0/physics_layer_0/angular_velocity = 0.0 -14:4/0 = 0 -14:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -14:4/0/physics_layer_0/angular_velocity = 0.0 -15:4/0 = 0 -15:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -15:4/0/physics_layer_0/angular_velocity = 0.0 -17:4/0 = 0 -17:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -17:4/0/physics_layer_0/angular_velocity = 0.0 -18:4/0 = 0 -18:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -18:4/0/physics_layer_0/angular_velocity = 0.0 -19:4/0 = 0 -19:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -19:4/0/physics_layer_0/angular_velocity = 0.0 -20:4/0 = 0 -20:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -20:4/0/physics_layer_0/angular_velocity = 0.0 -21:4/0 = 0 -21:4/0/physics_layer_0/linear_velocity = Vector2(0, 0) -21:4/0/physics_layer_0/angular_velocity = 0.0 -0:5/0 = 0 -0:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -0:5/0/physics_layer_0/angular_velocity = 0.0 -1:5/0 = 0 -1:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -1:5/0/physics_layer_0/angular_velocity = 0.0 -2:5/0 = 0 -2:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -2:5/0/physics_layer_0/angular_velocity = 0.0 -3:5/0 = 0 -3:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -3:5/0/physics_layer_0/angular_velocity = 0.0 -4:5/0 = 0 -4:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -4:5/0/physics_layer_0/angular_velocity = 0.0 -6:5/0 = 0 -6:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -6:5/0/physics_layer_0/angular_velocity = 0.0 -6:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -7:5/0 = 0 -7:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -7:5/0/physics_layer_0/angular_velocity = 0.0 -7:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -8:5/0 = 0 -8:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -8:5/0/physics_layer_0/angular_velocity = 0.0 -8:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -9:5/0 = 0 -9:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -9:5/0/physics_layer_0/angular_velocity = 0.0 -9:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -10:5/0 = 0 -10:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -10:5/0/physics_layer_0/angular_velocity = 0.0 -10:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -12:5/0 = 0 -12:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -12:5/0/physics_layer_0/angular_velocity = 0.0 -13:5/0 = 0 -13:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -13:5/0/physics_layer_0/angular_velocity = 0.0 -14:5/0 = 0 -14:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -14:5/0/physics_layer_0/angular_velocity = 0.0 -15:5/0 = 0 -15:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -15:5/0/physics_layer_0/angular_velocity = 0.0 -17:5/0 = 0 -17:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -17:5/0/physics_layer_0/angular_velocity = 0.0 -18:5/0 = 0 -18:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -18:5/0/physics_layer_0/angular_velocity = 0.0 -19:5/0 = 0 -19:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -19:5/0/physics_layer_0/angular_velocity = 0.0 -20:5/0 = 0 -20:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -20:5/0/physics_layer_0/angular_velocity = 0.0 -21:5/0 = 0 -21:5/0/physics_layer_0/linear_velocity = Vector2(0, 0) -21:5/0/physics_layer_0/angular_velocity = 0.0 -0:6/0 = 0 -0:6/0/physics_layer_0/linear_velocity = Vector2(0, 0) -0:6/0/physics_layer_0/angular_velocity = 0.0 -1:6/0 = 0 -1:6/0/physics_layer_0/linear_velocity = Vector2(0, 0) -1:6/0/physics_layer_0/angular_velocity = 0.0 -2:6/0 = 0 -2:6/0/physics_layer_0/linear_velocity = Vector2(0, 0) -2:6/0/physics_layer_0/angular_velocity = 0.0 -6:6/0 = 0 -6:6/0/physics_layer_0/linear_velocity = Vector2(0, 0) -6:6/0/physics_layer_0/angular_velocity = 0.0 -6:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -7:6/0 = 0 -7:6/0/physics_layer_0/linear_velocity = Vector2(0, 0) -7:6/0/physics_layer_0/angular_velocity = 0.0 -7:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -8:6/0 = 0 -8:6/0/physics_layer_0/linear_velocity = Vector2(0, 0) -8:6/0/physics_layer_0/angular_velocity = 0.0 -8:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -13:6/0 = 0 -13:6/0/physics_layer_0/linear_velocity = Vector2(0, 0) -13:6/0/physics_layer_0/angular_velocity = 0.0 -14:6/0 = 0 -14:6/0/physics_layer_0/linear_velocity = Vector2(0, 0) -14:6/0/physics_layer_0/angular_velocity = 0.0 -15:6/0 = 0 -15:6/0/physics_layer_0/linear_velocity = Vector2(0, 0) -15:6/0/physics_layer_0/angular_velocity = 0.0 -17:6/0 = 0 -17:6/0/physics_layer_0/linear_velocity = Vector2(0, 0) -17:6/0/physics_layer_0/angular_velocity = 0.0 -18:6/0 = 0 -18:6/0/physics_layer_0/linear_velocity = Vector2(0, 0) -18:6/0/physics_layer_0/angular_velocity = 0.0 -19:6/0 = 0 -19:6/0/physics_layer_0/linear_velocity = Vector2(0, 0) -19:6/0/physics_layer_0/angular_velocity = 0.0 -0:8/0 = 0 -0:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -0:8/0/physics_layer_0/angular_velocity = 0.0 -0:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -1:8/0 = 0 -1:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -1:8/0/physics_layer_0/angular_velocity = 0.0 -1:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -2:8/0 = 0 -2:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -2:8/0/physics_layer_0/angular_velocity = 0.0 -2:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -3:8/0 = 0 -3:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -3:8/0/physics_layer_0/angular_velocity = 0.0 -4:8/0 = 0 -4:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -4:8/0/physics_layer_0/angular_velocity = 0.0 -6:8/0 = 0 -6:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -6:8/0/physics_layer_0/angular_velocity = 0.0 -7:8/0 = 0 -7:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -7:8/0/physics_layer_0/angular_velocity = 0.0 -8:8/0 = 0 -8:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -8:8/0/physics_layer_0/angular_velocity = 0.0 -9:8/0 = 0 -9:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -9:8/0/physics_layer_0/angular_velocity = 0.0 -10:8/0 = 0 -10:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -10:8/0/physics_layer_0/angular_velocity = 0.0 -12:8/0 = 0 -12:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -12:8/0/physics_layer_0/angular_velocity = 0.0 -13:8/0 = 0 -13:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -13:8/0/physics_layer_0/angular_velocity = 0.0 -14:8/0 = 0 -14:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -14:8/0/physics_layer_0/angular_velocity = 0.0 -15:8/0 = 0 -15:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -15:8/0/physics_layer_0/angular_velocity = 0.0 -17:8/0 = 0 -17:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -17:8/0/physics_layer_0/angular_velocity = 0.0 -18:8/0 = 0 -18:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -18:8/0/physics_layer_0/angular_velocity = 0.0 -19:8/0 = 0 -19:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -19:8/0/physics_layer_0/angular_velocity = 0.0 -20:8/0 = 0 -20:8/0/physics_layer_0/linear_velocity = Vector2(0, 0) -20:8/0/physics_layer_0/angular_velocity = 0.0 -0:9/0 = 0 -0:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -0:9/0/physics_layer_0/angular_velocity = 0.0 -0:9/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -1:9/0 = 0 -1:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -1:9/0/physics_layer_0/angular_velocity = 0.0 -2:9/0 = 0 -2:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -2:9/0/physics_layer_0/angular_velocity = 0.0 -2:9/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -3:9/0 = 0 -3:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -3:9/0/physics_layer_0/angular_velocity = 0.0 -4:9/0 = 0 -4:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -4:9/0/physics_layer_0/angular_velocity = 0.0 -6:9/0 = 0 -6:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -6:9/0/physics_layer_0/angular_velocity = 0.0 -7:9/0 = 0 -7:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -7:9/0/physics_layer_0/angular_velocity = 0.0 -8:9/0 = 0 -8:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -8:9/0/physics_layer_0/angular_velocity = 0.0 -9:9/0 = 0 -9:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -9:9/0/physics_layer_0/angular_velocity = 0.0 -10:9/0 = 0 -10:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -10:9/0/physics_layer_0/angular_velocity = 0.0 -12:9/0 = 0 -12:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -12:9/0/physics_layer_0/angular_velocity = 0.0 -13:9/0 = 0 -13:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -13:9/0/physics_layer_0/angular_velocity = 0.0 -14:9/0 = 0 -14:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -14:9/0/physics_layer_0/angular_velocity = 0.0 -15:9/0 = 0 -15:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -15:9/0/physics_layer_0/angular_velocity = 0.0 -17:9/0 = 0 -17:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -17:9/0/physics_layer_0/angular_velocity = 0.0 -18:9/0 = 0 -18:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -18:9/0/physics_layer_0/angular_velocity = 0.0 -19:9/0 = 0 -19:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -19:9/0/physics_layer_0/angular_velocity = 0.0 -20:9/0 = 0 -20:9/0/physics_layer_0/linear_velocity = Vector2(0, 0) -20:9/0/physics_layer_0/angular_velocity = 0.0 -0:10/0 = 0 -0:10/0/physics_layer_0/linear_velocity = Vector2(0, 0) -0:10/0/physics_layer_0/angular_velocity = 0.0 -0:10/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -1:10/0 = 0 -1:10/0/physics_layer_0/linear_velocity = Vector2(0, 0) -1:10/0/physics_layer_0/angular_velocity = 0.0 -1:10/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -2:10/0 = 0 -2:10/0/physics_layer_0/linear_velocity = Vector2(0, 0) -2:10/0/physics_layer_0/angular_velocity = 0.0 -2:10/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) -6:10/0 = 0 -6:10/0/physics_layer_0/linear_velocity = Vector2(0, 0) -6:10/0/physics_layer_0/angular_velocity = 0.0 -7:10/0 = 0 -7:10/0/physics_layer_0/linear_velocity = Vector2(0, 0) -7:10/0/physics_layer_0/angular_velocity = 0.0 -8:10/0 = 0 -8:10/0/physics_layer_0/linear_velocity = Vector2(0, 0) -8:10/0/physics_layer_0/angular_velocity = 0.0 -13:10/0 = 0 -13:10/0/physics_layer_0/linear_velocity = Vector2(0, 0) -13:10/0/physics_layer_0/angular_velocity = 0.0 -14:10/0 = 0 -14:10/0/physics_layer_0/linear_velocity = Vector2(0, 0) -14:10/0/physics_layer_0/angular_velocity = 0.0 -15:10/0 = 0 -15:10/0/physics_layer_0/linear_velocity = Vector2(0, 0) -15:10/0/physics_layer_0/angular_velocity = 0.0 -18:10/0 = 0 -18:10/0/physics_layer_0/linear_velocity = Vector2(0, 0) -18:10/0/physics_layer_0/angular_velocity = 0.0 -19:10/0 = 0 -19:10/0/physics_layer_0/linear_velocity = Vector2(0, 0) -19:10/0/physics_layer_0/angular_velocity = 0.0 -20:10/0 = 0 -20:10/0/physics_layer_0/linear_velocity = Vector2(0, 0) -20:10/0/physics_layer_0/angular_velocity = 0.0 - -[sub_resource type="TileSet" id="TileSet_r2lpe"] -physics_layer_0/collision_layer = 1 -sources/0 = SubResource("TileSetAtlasSource_hrhtv") - -[node name="Node" type="Node"] - -[node name="GameManager" type="Node" parent="."] -unique_name_in_owner = true -script = ExtResource("1_bks1i") - -[node name="Scene Objects" type="Node" parent="."] - -[node name="TextureRect" type="TextureRect" parent="Scene Objects"] -texture_filter = 1 -offset_left = -87.0 -offset_top = 3.0 -offset_right = -23.0 -offset_bottom = 637.0 -texture = ExtResource("2_dvf6n") -stretch_mode = 1 - -[node name="TileMap" type="TileMap" parent="Scene Objects"] -texture_filter = 1 -scale = Vector2(3, 3) -tile_set = SubResource("TileSet_r2lpe") -format = 2 -layer_0/tile_data = PackedInt32Array(851969, 65536, 8, 851990, 65536, 8, 851991, 65536, 8, 851992, 65536, 8, 851989, 65536, 8, 851988, 65536, 8, 851987, 65536, 8, 851986, 65536, 8, 851985, 65536, 8, 851984, 65536, 8, 851983, 65536, 8, 851982, 65536, 8, 851981, 65536, 8, 851980, 65536, 8, 851979, 65536, 8, 851978, 65536, 8, 851977, 65536, 8, 851976, 65536, 8, 851975, 65536, 8, 851974, 65536, 8, 851973, 65536, 8, 851972, 65536, 8, 851971, 65536, 8, 851970, 65536, 8, 851967, 131072, 9, 786431, 131072, 9, 720895, 131072, 9, 655359, 131072, 9, 589823, 131072, 9, 524287, 131072, 9, 458751, 131072, 9, -1, 131072, 1342177288, -65536, 65536, 10, -65535, 65536, 10, -65534, 65536, 10, -65533, 65536, 10, -65532, 65536, 10, -65531, 65536, 10, -65530, 65536, 10, -65529, 65536, 10, -65528, 65536, 10, -65527, 65536, 10, -65526, 65536, 10, -65525, 65536, 10, -65524, 65536, 10, -65523, 65536, 10, -65522, 65536, 10, -65521, 65536, 10, -65520, 65536, 10, -65519, 65536, 10, -65518, 65536, 10, -65517, 65536, 10, -65516, 65536, 10, -65515, 65536, 10, -65514, 65536, 10, -65513, 65536, 10, -65512, 65536, 10, -65511, 65536, 10, -65510, 65536, 10, -65509, 65536, 10, -65508, 65536, 10, -65507, 65536, 10, -65506, 65536, 10, -65505, 65536, 10, -65504, 65536, 10, -65503, 65536, 10, -65502, 65536, 10, -65501, 65536, 10, -65500, 65536, 10, -65499, 65536, 10, -65498, 65536, 10, -65497, 65536, 10, -65496, 65536, 10, -65495, 65536, 10, -65494, 65536, 10, -65493, 65536, 10, -65492, 65536, 10, -65491, 65536, 10, -65490, 65536, 10, -65489, 65536, 10, -65488, 65536, 10, -65487, 65536, 10, -65486, 65536, 10, -65485, 65536, 10, -65484, 65536, 10, 851993, 65536, 8, 851994, 65536, 8, 851995, 65536, 8, 851996, 65536, 8, 851997, 65536, 8, 851998, 65536, 8, 851999, 65536, 8, 852000, 65536, 8, 852001, 65536, 8, 852002, 65536, 8, 852003, 65536, 8, 852004, 65536, 8, 852005, 65536, 8, 852006, 65536, 8, 852007, 65536, 8, 852008, 65536, 8, 852009, 65536, 8, 852010, 65536, 8, 852011, 65536, 8, 852012, 65536, 8, 852013, 65536, 8, 852014, 65536, 8, 852015, 65536, 8, 852016, 65536, 8, 852017, 65536, 8, 852018, 65536, 8, 852019, 65536, 8, 852020, 65536, 8, -65483, 131072, 805306376, 852021, 131072, 1610612744, -65537, 65536, 9, -131072, 65536, 9, -131071, 65536, 9, -131070, 65536, 9, -131069, 65536, 9, -131068, 65536, 9, -131067, 65536, 9, -131066, 196608, 9, -131065, 262144, 9, -131064, 65536, 9, -131063, 65536, 9, -131062, 65536, 9, -131061, 65536, 9, -131060, 65536, 9, -131059, 65536, 9, -131058, 65536, 9, -131057, 65536, 9, -131056, 65536, 9, -131055, 65536, 9, -131054, 65536, 9, -131053, 196608, 9, -131052, 262144, 9, -131051, 65536, 9, -131050, 196608, 9, -131049, 262144, 9, -131048, 65536, 9, -131047, 65536, 9, -131046, 65536, 9, -131045, 65536, 9, -131044, 65536, 9, -131043, 65536, 9, -131042, 65536, 9, -131041, 65536, 9, -131040, 65536, 9, -131039, 65536, 9, -131038, 65536, 9, -131037, 65536, 9, -131036, 65536, 9, -131035, 65536, 9, -131034, 65536, 9, -131033, 65536, 9, -131032, 65536, 9, -131031, 65536, 9, -131030, 65536, 9, -131029, 65536, 9, -131028, 65536, 9, -131027, 65536, 9, -131026, 65536, 9, -131025, 65536, 9, -131024, 65536, 9, -131023, 65536, 9, -131022, 65536, 9, -131021, 65536, 9, -131020, 65536, 9, -131019, 65536, 9, -131018, 196608, 9, -65482, 65536, 9, 852022, 65536, 9, 917558, 65536, 9, 917504, 65536, 9, 917505, 65536, 9, 917506, 65536, 9, 917507, 65536, 9, 917508, 65536, 9, 917509, 65536, 9, 917510, 65536, 9, 917511, 65536, 9, 917512, 65536, 9, 917513, 65536, 9, 917514, 65536, 9, 917515, 65536, 9, 917516, 65536, 9, 917517, 65536, 9, 917518, 65536, 9, 917519, 65536, 9, 917520, 65536, 9, 917521, 65536, 9, 917522, 65536, 9, 917523, 65536, 9, 917524, 65536, 9, 917525, 196608, 8, 917526, 262144, 8, 917527, 65536, 9, 917528, 65536, 9, 917529, 65536, 9, 917530, 65536, 9, 917531, 65536, 9, 917532, 65536, 9, 917533, 65536, 9, 917534, 65536, 9, 917535, 65536, 9, 917536, 65536, 9, 917537, 65536, 9, 983073, 458752, 805306374, 917538, 65536, 9, 917539, 65536, 9, 917540, 65536, 9, 917541, 65536, 9, 917542, 196608, 8, 917543, 262144, 8, 917544, 65536, 9, 917545, 65536, 9, 917546, 65536, 9, 917547, 65536, 9, 917548, 65536, 9, 917549, 65536, 9, 917550, 196608, 8, 917551, 262144, 8, 917552, 65536, 9, 917553, 65536, 9, 917554, 65536, 9, 917555, 65536, 9, 917556, 65536, 9, 917557, 65536, 9, 983091, 196608, 8, 983090, 458752, 805306374, 983089, 458752, 805306374, 1048624, 458752, 5, 1048623, 458752, 5, 1048622, 458752, 5, 1048621, 458752, 5, 1048620, 458752, 5, 1048619, 458752, 5, 1048618, 458752, 5, 1048617, 458752, 5, 1048616, 458752, 5, 1048615, 458752, 5, 1048614, 458752, 5, 1048613, 458752, 5, 1048612, 458752, 5, 1048611, 458752, 5, 1048610, 458752, 5, 983074, 458752, 805306374, 983072, 458752, 805306374, 983075, 458752, 805306374, 983076, 458752, 805306374, 983077, 458752, 805306374, 983078, 196608, 9, 983079, 262144, 9, 983080, 458752, 805306374, 983081, 458752, 805306374, 983082, 458752, 805306374, 983083, 458752, 805306374, 983084, 458752, 805306374, 983085, 458752, 805306374, 983086, 196608, 9, 983087, 262144, 9, 983088, 458752, 805306374, 983092, 262144, 8, 983093, 196608, 8, 983094, 262144, 8, 983095, 196608, 8, 1048629, 196608, 9, 1048628, 262144, 9, 1048627, 196608, 9, 1048626, 458752, 5, 1048625, 458752, 5, 1048630, 262144, 9, 1048631, 196608, 9, 1048609, 458752, 5, 1048608, 458752, 5, 1048607, 262144, 9, 1048606, 196608, 9, 1048605, 262144, 8, 1048604, 196608, 8, 1048603, 262144, 9, 1048602, 196608, 9, 1048601, 458752, 5, 1048600, 458752, 5, 1048599, 458752, 5, 1048598, 458752, 5, 1048597, 458752, 5, 1048596, 262144, 9, 1048595, 196608, 9, 983060, 262144, 8, 983061, 196608, 9, 983062, 262144, 9, 983063, 458752, 805306374, 983064, 458752, 805306374, 983065, 458752, 805306374, 983066, 196608, 8, 983067, 262144, 8, 983068, 458752, 805306374, 983069, 458752, 805306374, 983070, 196608, 8, 983071, 262144, 8, 983059, 196608, 8, 983058, 458752, 805306374, 983057, 458752, 805306374, 983056, 458752, 805306374, 983055, 458752, 805306374, 983054, 458752, 805306374, 983053, 262144, 8, 983052, 196608, 8, 983051, 458752, 805306374, 983050, 458752, 805306374, 983049, 458752, 805306374, 983048, 458752, 805306374, 983047, 458752, 805306374, 983046, 458752, 805306374, 983045, 262144, 8, 983044, 196608, 8, 983043, 262144, 8, 983042, 196608, 8, 983041, 458752, 805306374, 983040, 458752, 805306374, 1048575, 262144, 9, 1048574, 196608, 9, 1048573, 458752, 5, 983037, 458752, 1610612742, 983038, 196608, 8, 917502, 65536, 9, 851966, 65536, 9, 786430, 65536, 9, 720894, 65536, 9, 655358, 65536, 9, 589822, 65536, 9, 524286, 65536, 9, 458750, 65536, 9, 393214, 65536, 9, 393213, 458752, 1610612742, 327677, 458752, 1610612742, 262141, 196608, 9, 196605, 196608, 8, 131069, 458752, 1610612742, 65534, 65536, 9, -2, 65536, 9, -65538, 65536, 9, -65539, 458752, 1610612742, -3, 262144, 8, 65533, 262144, 9, 458749, 262144, 8, 524285, 262144, 9, 589821, 458752, 1610612742, 655357, 458752, 1610612742, 720893, 458752, 1610612742, -131075, 458752, 5, -131074, 458752, 6, -131073, 458752, 6, -196608, 196608, 9, -196607, 262144, 9, -196606, 196608, 9, -196605, 262144, 9, -196604, 458752, 6, -196603, 458752, 6, -196602, 196608, 8, -196601, 262144, 8, -196600, 458752, 6, -196599, 458752, 6, -196598, 458752, 6, -196597, 458752, 6, -196596, 196608, 9, -196595, 262144, 9, -196594, 458752, 6, -196593, 458752, 6, -196592, 458752, 6, -196591, 458752, 6, -196590, 458752, 6, -196589, 196608, 8, -196588, 262144, 8, -196587, 458752, 6, -196586, 196608, 8, -196585, 262144, 8, -196584, 458752, 6, -196583, 458752, 6, -196582, 458752, 6, -196581, 196608, 9, -196580, 262144, 9, -196579, 458752, 6, -196578, 458752, 6, -196577, 458752, 6, -196611, 458752, 5, -196610, 458752, 5, -196609, 458752, 5, -262144, 196608, 8, -262143, 262144, 8, -262142, 196608, 8, -262141, 262144, 8, -262140, 458752, 5, -262139, 458752, 5, -262138, 458752, 5, -262137, 458752, 5, -262136, 458752, 5, -262135, 458752, 5, -262134, 458752, 5, -262133, 458752, 5, -262132, 196608, 8, -262131, 262144, 8, -262130, 458752, 5, -262129, 458752, 5, -262128, 458752, 5, -262127, 458752, 5, -262126, 458752, 5, -262125, 196608, 9, -262124, 262144, 9, -262123, 196608, 9, -262122, 262144, 9, -262121, 458752, 5, -262120, 458752, 5, -262119, 458752, 5, -262118, 458752, 5, -262117, 196608, 8, -262116, 262144, 8, -262115, 458752, 5, -262114, 458752, 5, -262113, 458752, 5, -262112, 196608, 8, -262111, 262144, 8, -262110, 458752, 5, -262109, 458752, 5, -262108, 458752, 5, -262147, 458752, 5, -262146, 458752, 5, -262145, 458752, 5, -327680, 458752, 5, -327679, 458752, 5, -327678, 458752, 5, -327677, 458752, 5, -327676, 458752, 5, -327675, 458752, 5, -327674, 458752, 5, -327673, 458752, 5, -327672, 458752, 5, -327671, 458752, 5, -327670, 458752, 5, -327669, 458752, 5, -327668, 458752, 5, -327667, 458752, 5, -327666, 458752, 5, -327665, 458752, 5, -327664, 458752, 5, -327663, 458752, 5, -327662, 458752, 5, -327661, 196608, 8, -327660, 262144, 8, -327659, 196608, 8, -327658, 262144, 8, -327657, 458752, 5, -327656, 458752, 5, -327655, 458752, 5, -327654, 458752, 5, -327653, 458752, 5, -327652, 458752, 5, -327651, 458752, 5, -327650, 458752, 5, -327649, 458752, 5, -327648, 458752, 5, -327647, 458752, 5, -327646, 458752, 5, -327645, 458752, 5, -327644, 458752, 5, -327643, 458752, 5, -327642, 458752, 5, -327641, 458752, 5, -327640, 196608, 8, -327639, 262144, 8, -327638, 458752, 5, -327682, 458752, 5, -327681, 458752, 5, -393216, 458752, 5, -393215, 458752, 5, -393214, 458752, 5, -393213, 458752, 5, -393212, 458752, 5, -393211, 458752, 5, -393210, 458752, 5, -393209, 458752, 5, -393208, 458752, 5, -393207, 458752, 5, -393206, 458752, 5, -393205, 458752, 5, -393204, 458752, 5, -393203, 458752, 5, -393202, 458752, 5, -393201, 458752, 5, -393200, 458752, 5, -393199, 458752, 5, -393198, 458752, 5, -393197, 458752, 5, -393196, 458752, 5, -393195, 458752, 5, -393194, 458752, 5, -393193, 458752, 5, -393192, 458752, 5, -393191, 458752, 5, -393190, 458752, 5, -393189, 458752, 5, -393188, 458752, 5, -393187, 458752, 5, -393186, 458752, 5, -393185, 458752, 5, -393184, 458752, 5, -393183, 458752, 5, -393182, 458752, 5, -393181, 458752, 5, -393180, 458752, 5, -393179, 458752, 5, -393178, 458752, 5, -393177, 458752, 5, -393176, 458752, 5, -393175, 458752, 5, -327683, 458752, 5, -327684, 458752, 5, -262148, 458752, 5, -196612, 458752, 5, -131076, 458752, 5, -65540, 458752, 5, -4, 196608, 8, 65532, 196608, 9, 131068, 458752, 5, 196604, 458752, 5, 262140, 458752, 5, 327676, 458752, 5, 393212, 458752, 5, 458748, 196608, 8, 458747, 458752, 5, 524283, 458752, 5, 589819, 458752, 5, 655355, 458752, 5, 720891, 458752, 5, 786427, 458752, 5, 786428, 458752, 5, 720892, 458752, 5, 655356, 458752, 5, 589820, 458752, 5, 524284, 196608, 9, 393211, 458752, 5, 393210, 458752, 5, 393209, 458752, 5, 393208, 458752, 5, 393207, 458752, 5, 393206, 458752, 5, 327670, 458752, 5, 327671, 458752, 5, 327672, 458752, 5, 327673, 458752, 5, 327674, 458752, 5, 327675, 458752, 5, 262138, 458752, 5, 262137, 458752, 5, 262136, 458752, 5, 262135, 458752, 5, 262134, 458752, 5, 196602, 458752, 5, 196603, 458752, 5, 262139, 458752, 5, 131067, 458752, 5, 131066, 458752, 5, 131065, 458752, 5, 131064, 458752, 5, 196599, 458752, 5, 196598, 458752, 5, 196600, 458752, 5, 196601, 458752, 5, 131062, 458752, 5, 65526, 458752, 5, 65527, 458752, 5, 65528, 458752, 5, 65529, 458752, 5, 65530, 458752, 5, 65531, 458752, 5, 131063, 458752, 5, -5, 458752, 5, -65541, 458752, 5, -65542, 458752, 5, -7, 458752, 5, -6, 458752, 5, -65544, 458752, 5, -65543, 458752, 5, -131077, 458752, 5, -131078, 458752, 5, -8, 458752, 5, -131079, 458752, 5, -196613, 458752, 5, -196614, 458752, 5, -196615, 458752, 5, -9, 458752, 5, -65545, 458752, 5, -131080, 458752, 5, -262150, 458752, 5, -262149, 458752, 5, -327685, 458752, 5, -327686, 458752, 5, -327687, 458752, 5, -327688, 458752, 5, -327689, 458752, 5, -327690, 458752, 5, -327691, 458752, 5, -262155, 458752, 5, -196619, 458752, 5, -131083, 458752, 5, -65547, 458752, 5, -11, 458752, 5, -10, 458752, 5, -65546, 458752, 5, -131082, 458752, 5, -196618, 458752, 5, -262154, 458752, 5, -262153, 458752, 5, -262152, 458752, 5, -262151, 458752, 5, -196616, 458752, 5, -196617, 458752, 5, -131081, 458752, 5, 65525, 458752, 5, 131061, 458752, 5, 196597, 458752, 5, 262133, 458752, 5, 327669, 458752, 5, 458742, 458752, 5, 524278, 458752, 5, 589814, 458752, 5, 655350, 458752, 5, 720886, 458752, 5, 786422, 458752, 5, 851958, 458752, 5, 917494, 458752, 5, 393205, 458752, 5, 458741, 458752, 5, 524277, 458752, 5, 589813, 458752, 5, 655349, 458752, 5, 720885, 458752, 5, 786421, 458752, 5, 851957, 458752, 5, 917493, 458752, 5, 983029, 458752, 5, 1048565, 458752, 5, 1114101, 458752, 5, 1179637, 458752, 5, 1245173, 458752, 5, 458743, 458752, 5, 524279, 458752, 5, 589815, 458752, 5, 655352, 458752, 5, 589816, 458752, 5, 589817, 458752, 5, 524281, 458752, 5, 524282, 458752, 5, 458745, 458752, 5, 524280, 458752, 5, 458744, 458752, 5, 458746, 458752, 5, 655353, 458752, 5, 720889, 458752, 5, 786425, 458752, 5, 851961, 458752, 5, 917497, 458752, 5, 917496, 458752, 5, 983032, 458752, 5, 851960, 458752, 5, 786424, 458752, 5, 720887, 458752, 5, 655351, 458752, 5, 786423, 458752, 5, 851959, 458752, 5, 917495, 458752, 5, 983033, 458752, 5, 720888, 458752, 5, 589818, 458752, 5, 655354, 458752, 5, 720890, 458752, 5, 786426, 458752, 5, 851962, 458752, 5, 917498, 458752, 5, 983034, 458752, 5, 1048570, 458752, 5, 1114106, 458752, 5, 1048569, 458752, 5, 1114104, 458752, 5, 1179640, 458752, 5, 1048568, 458752, 5, 983031, 458752, 5, 1048567, 458752, 5, 1114102, 458752, 5, 1048566, 458752, 5, 983030, 458752, 5, 1179638, 458752, 5, 1245174, 458752, 5, 1114103, 458752, 5, 1179639, 458752, 5, 1245175, 458752, 5, 1245176, 458752, 5, 1114105, 458752, 5, 1179641, 458752, 5, 1245177, 458752, 5, 1245178, 458752, 5, 1179642, 458752, 5, 1048571, 458752, 5, 983035, 458752, 5, 917499, 458752, 5, 851963, 458752, 5, 786429, 458752, 1610612742, 851965, 262144, 8, 851964, 196608, 8, 917500, 196608, 9, 983036, 458752, 5, 917501, 262144, 9, 1048572, 458752, 5, 1114107, 458752, 5, 1179643, 458752, 5, 1245179, 458752, 5, 1245180, 458752, 5, 1245181, 458752, 5, 1245182, 458752, 5, 1114108, 458752, 5, 1114109, 458752, 5, 1114110, 458752, 5, 1114111, 458752, 5, 1048576, 458752, 5, 1048577, 458752, 5, 1048578, 196608, 9, 1048579, 262144, 9, 1048580, 196608, 9, 1048590, 458752, 5, 1048591, 458752, 5, 1048592, 458752, 5, 1048593, 458752, 5, 1048594, 458752, 5, 1114127, 458752, 5, 1114126, 458752, 5, 1114125, 458752, 5, 1114124, 458752, 5, 1114123, 458752, 5, 1114122, 458752, 5, 1114121, 458752, 5, 1114120, 458752, 5, 1114119, 458752, 5, 1048582, 458752, 5, 1048581, 262144, 9, 1048583, 458752, 5, 1048584, 458752, 5, 1048585, 458752, 5, 1048586, 458752, 5, 1048587, 458752, 5, 1048588, 196608, 9, 1048589, 262144, 9, 1114112, 458752, 5, 1179647, 458752, 5, 1179646, 458752, 5, 1179645, 458752, 5, 1179644, 458752, 5, 1114113, 458752, 5, 1114114, 458752, 5, 1114115, 458752, 5, 1114116, 458752, 5, 1114117, 458752, 5, 1114118, 458752, 5, 1179649, 458752, 5, 1179648, 458752, 5, 1245183, 458752, 5, 1179650, 458752, 5, 1179651, 458752, 5, 1179652, 458752, 5, 1179659, 458752, 5, 1179660, 458752, 5, 1179661, 458752, 5, 1179658, 458752, 5, 1179657, 458752, 5, 1179656, 458752, 5, 1179655, 458752, 5, 1179654, 458752, 5, 1179653, 458752, 5, 1179662, 458752, 5, 1179663, 458752, 5, 1179664, 458752, 5, 1179665, 196608, 9, 1179666, 262144, 9, 1114130, 262144, 8, 1114131, 196608, 8, 1114129, 196608, 8, 1114128, 458752, 5, 1114132, 262144, 8, 1114133, 458752, 5, 1114134, 458752, 5, 1114135, 458752, 5, 1114136, 458752, 5, 1114137, 458752, 5, 1114138, 458752, 5, 1114139, 458752, 5, 1114140, 196608, 9, 1114141, 262144, 9, 1114142, 458752, 5, 1114143, 458752, 5, 1114144, 458752, 5, 1114145, 458752, 5, 1114146, 458752, 5, 1114147, 458752, 5, 1114148, 458752, 5, 1114149, 458752, 5, 1114150, 458752, 5, 1114151, 458752, 5, 1114152, 458752, 5, 1114153, 458752, 5, 1114154, 458752, 5, 1114155, 458752, 5, 1179667, 196608, 9, 1179668, 262144, 9, 1179669, 458752, 5, 1179670, 458752, 5, 1179671, 458752, 5, 1179672, 458752, 5, 1179673, 458752, 5, 1179674, 458752, 5, 1179675, 458752, 5, 1179676, 458752, 5, 1179677, 458752, 5, 1179678, 458752, 5, 1179679, 458752, 5, 1179680, 458752, 5, 1179681, 458752, 5, 1179682, 458752, 5, 1179683, 458752, 5, 1179684, 458752, 5, 1179685, 458752, 5, 1179686, 458752, 5, 1179687, 458752, 5, 1179688, 458752, 5, 1179689, 458752, 5, 1179690, 458752, 5, 1179691, 458752, 5, 1179692, 458752, 5, 1179693, 458752, 5, 1179694, 458752, 5, 1114156, 458752, 5, 1114157, 458752, 5, 1114158, 458752, 5, 1114159, 458752, 5, 1114160, 458752, 5, 1114161, 458752, 5, 1114162, 458752, 5, 1114163, 458752, 5, 1114164, 458752, 5, 1114165, 458752, 5, 1114166, 458752, 5, 1114167, 458752, 5, 1179695, 458752, 5, 1179696, 458752, 5, 1179697, 458752, 5, 1179698, 458752, 5, 1179699, 458752, 5, 1179700, 458752, 5, 1179701, 458752, 5, 1179702, 458752, 5, 1179703, 458752, 5, 917559, 196608, 9, 852023, 196608, 8, -65481, 458752, 1342177286, -131017, 262144, 9, -131016, 458752, 5, -131015, 458752, 5, -65479, 458752, 5, 57, 458752, 5, 65593, 458752, 5, 131129, 458752, 5, 196665, 458752, 5, 262201, 458752, 5, 327737, 458752, 5, 393273, 458752, 5, 458809, 458752, 5, 524345, 458752, 5, 589881, 196608, 8, 655417, 196608, 9, 720953, 458752, 5, 786489, 458752, 5, 852025, 458752, 5, 917561, 458752, 5, 983097, 458752, 5, 1048633, 458752, 5, 1114169, 458752, 5, 1179705, 458752, 5, 1179704, 458752, 5, 1114168, 458752, 5, 1048632, 262144, 9, 983096, 262144, 8, 917560, 262144, 9, 852024, 262144, 8, 786488, 262144, 9, 720952, 262144, 8, 655416, 262144, 9, 589880, 262144, 8, 524344, 458752, 5, 458808, 458752, 5, 393272, 458752, 5, 327736, 458752, 5, 262200, 458752, 5, 196664, 458752, 5, 131128, 458752, 5, 65592, 458752, 5, 56, 458752, 5, -65480, 458752, 5, -196576, 196608, 9, -196575, 262144, 9, -196574, 458752, 6, -196573, 458752, 6, -196572, 458752, 6, -196571, 458752, 6, -196570, 458752, 6, -196569, 458752, 6, -196568, 458752, 6, -196567, 458752, 6, -196566, 458752, 6, -196565, 458752, 6, -196564, 458752, 6, -196563, 458752, 6, -196562, 458752, 6, -196561, 196608, 9, -196560, 262144, 9, -196559, 458752, 6, -196558, 458752, 6, -196557, 458752, 6, -196556, 458752, 6, -196555, 458752, 6, -196554, 196608, 8, -196553, 262144, 8, -196552, 458752, 5, -196551, 458752, 5, -262107, 458752, 5, -262106, 458752, 5, -262105, 458752, 5, -262104, 196608, 9, -262103, 262144, 9, -262102, 458752, 5, -262101, 458752, 5, -262100, 458752, 5, -262099, 458752, 5, -262098, 458752, 5, -262097, 196608, 8, -262096, 262144, 8, -262095, 458752, 5, -262094, 458752, 5, -262093, 458752, 5, -262092, 458752, 5, -262091, 458752, 5, -262090, 458752, 5, -262089, 458752, 5, -262088, 458752, 5, -262087, 458752, 5, -393174, 458752, 5, -393173, 458752, 5, -393172, 458752, 5, -393171, 458752, 5, -393170, 458752, 5, -393169, 458752, 5, -393168, 458752, 5, -393167, 458752, 5, -393166, 458752, 5, -393165, 458752, 5, -393164, 458752, 5, -393163, 458752, 5, -393162, 458752, 5, -393161, 458752, 5, -393160, 458752, 5, -393159, 458752, 5, -327623, 458752, 5, -327624, 458752, 5, -327625, 458752, 5, -327626, 458752, 5, -327627, 458752, 5, -327628, 458752, 5, -327629, 458752, 5, -327630, 458752, 5, -327631, 458752, 5, -327632, 458752, 5, -327633, 458752, 5, -327634, 458752, 5, -327635, 458752, 5, -327636, 458752, 5, -327637, 458752, 5, -393158, 458752, 5, -327622, 458752, 5, -262086, 458752, 5, -196550, 458752, 5, -131014, 458752, 5, -65478, 458752, 5, 58, 458752, 5, 65594, 458752, 5, 131130, 458752, 5, 196666, 458752, 5, 262202, 458752, 5, 327738, 458752, 5, 393274, 458752, 5, 458810, 458752, 5, 524346, 458752, 5, 589882, 262144, 8, 655418, 262144, 9, 720954, 458752, 5, 786490, 458752, 5, 852026, 458752, 5, 917562, 458752, 5, 983098, 458752, 5, 1048634, 458752, 5, 1114170, 458752, 5, 1179706, 458752, 5, -393157, 458752, 5, -327621, 458752, 5, -262085, 458752, 5, -196549, 458752, 5, -131013, 458752, 5, -65477, 458752, 5, 60, 458752, 5, 65596, 458752, 5, 131132, 458752, 5, 196668, 458752, 5, 262204, 458752, 5, 327740, 458752, 5, 393276, 458752, 5, 458812, 458752, 5, 524348, 458752, 5, 589884, 458752, 5, 655420, 458752, 5, 720956, 458752, 5, 786492, 458752, 5, -393156, 458752, 5, -327620, 458752, 5, -262084, 458752, 5, -196548, 458752, 5, -131012, 458752, 5, -65476, 458752, 5, 59, 458752, 5, 65595, 458752, 5, 131131, 458752, 5, 196667, 458752, 5, 262203, 458752, 5, 327739, 458752, 5, 393275, 458752, 5, 458811, 458752, 5, 524347, 458752, 5, 589883, 458752, 5, 655419, 458752, 5, 720955, 458752, 5, 786491, 458752, 5, 852027, 458752, 5, 917563, 458752, 5, 983099, 458752, 5, 1048635, 458752, 5, 1114171, 458752, 5, 1179707, 458752, 5, 852028, 458752, 5, 917564, 458752, 5, 983100, 458752, 5, 1048636, 458752, 5, 1114172, 458752, 5, 1179708, 458752, 5, -393155, 458752, 5, -327619, 458752, 5, -262083, 458752, 5, -196547, 458752, 5, -131011, 458752, 5, -65475, 458752, 5, 61, 458752, 5, 65597, 458752, 5, 131133, 458752, 5, 196669, 458752, 5, 262205, 458752, 5, 327741, 458752, 5, 393277, 458752, 5, 458813, 458752, 5, 524349, 458752, 5, 589885, 458752, 5, 655421, 458752, 5, 720957, 458752, 5, 786493, 458752, 5, 852029, 458752, 5, 852030, 458752, 5, 917566, 458752, 5, 983102, 458752, 5, 1048638, 458752, 5, 1048637, 458752, 5, 1114173, 458752, 5, 1179709, 458752, 5, 1179710, 458752, 5, 1114174, 458752, 5, 786494, 458752, 5, 720958, 458752, 5, 655422, 458752, 5, 589886, 458752, 5, 524350, 458752, 5, 458814, 458752, 5, 393278, 458752, 5, 327742, 458752, 5, 262206, 458752, 5, 196670, 458752, 5, 131134, 458752, 5, 65598, 458752, 5, 62, 458752, 5, -65474, 458752, 5, -131010, 458752, 5, -196546, 458752, 5, -262082, 458752, 5, -327618, 458752, 5, -393154, 458752, 5, 917565, 458752, 5, 983101, 458752, 5, -327692, 458752, 5, -262156, 458752, 5, -196620, 458752, 5, -131084, 458752, 5, -65548, 458752, 5, -12, 458752, 5, 65524, 458752, 5, 131060, 458752, 5, 196596, 458752, 5, 262132, 458752, 5, 327668, 458752, 5, 393204, 458752, 5, 458740, 458752, 5, 524276, 458752, 5, 589812, 458752, 5, 655348, 458752, 5, 720884, 458752, 5, 786420, 458752, 5, 851956, 458752, 5, 917492, 458752, 5, 983028, 458752, 5, 1048564, 458752, 5, 1114100, 458752, 5, 1179636, 458752, 5, 1245172, 458752, 5, 131070, 65536, 9, 196606, 262144, 8, 262142, 262144, 9, 327678, 65536, 9, 1310708, 458752, 5, 1310709, 458752, 5, 1310710, 458752, 5, 1310711, 458752, 5, 1310712, 458752, 5, 1310713, 458752, 5, 1310714, 458752, 5, 1310715, 458752, 5, 1310716, 458752, 5, 1310717, 458752, 5, 1310718, 458752, 5, 1310719, 458752, 5, 1245184, 458752, 5, 1245185, 458752, 5, 1245186, 458752, 5, 1245187, 458752, 5, 1245188, 458752, 5, 1245189, 458752, 5, 1245190, 458752, 5, 1245191, 458752, 5, 1245192, 458752, 5, 1245193, 458752, 5, 1245194, 458752, 5, 1245195, 458752, 5, 1245196, 458752, 5, 1245197, 458752, 5, 1245198, 458752, 5, 1245199, 458752, 5, 1245200, 458752, 5, 1245201, 458752, 5, 1245202, 458752, 5, 1245203, 458752, 5, 1245204, 458752, 5, 1245205, 458752, 5, 1245206, 458752, 5, 1245207, 458752, 5, 1245208, 458752, 5, 1245209, 458752, 5, 1245210, 458752, 5, 1245211, 458752, 5, 1245212, 458752, 5, 1245213, 458752, 5, 1245214, 458752, 5, 1245215, 458752, 5, 1245216, 458752, 5, 1245217, 458752, 5, 1245218, 458752, 5, 1245219, 458752, 5, 1245220, 458752, 5, 1245221, 458752, 5, 1245222, 458752, 5, 1245223, 458752, 5, 1245224, 458752, 5, 1245225, 458752, 5, 1245226, 458752, 5, 1245227, 458752, 5, 1245228, 458752, 5, 1245229, 458752, 5, 1245230, 458752, 5, 1245231, 458752, 5, 1245232, 458752, 5, 1245233, 458752, 5, 1245234, 458752, 5, 1245235, 458752, 5, 1245236, 458752, 5, 1245237, 458752, 5, 1245238, 458752, 5, 1245239, 458752, 5, 1245240, 458752, 5, 1245241, 458752, 5, 1245242, 458752, 5, 1245243, 458752, 5, 1245244, 458752, 5, 1245245, 458752, 5, 1245246, 458752, 5, -393153, 458752, 5, -327617, 458752, 5, -262081, 458752, 5, -196545, 458752, 5, -131009, 458752, 5, -65473, 458752, 5, 63, 458752, 5, 65599, 458752, 5, 131135, 458752, 5, 196671, 458752, 5, 262207, 458752, 5, 327743, 458752, 5, 393279, 458752, 5, 458815, 458752, 5, 524351, 458752, 5, 589887, 458752, 5, 655423, 458752, 5, 720959, 458752, 5, 786495, 458752, 5, 852031, 458752, 5, 917567, 458752, 5, 983103, 458752, 5, 1048639, 458752, 5, 1114175, 458752, 5, 1179711, 458752, 5, 1245247, 458752, 5, -393152, 458752, 5, -327616, 458752, 5, -262080, 458752, 5, -196544, 458752, 5, -131008, 458752, 5, -65472, 458752, 5, 64, 458752, 5, 65600, 458752, 5, 131136, 458752, 5, 196672, 458752, 5, 262208, 458752, 5, 327744, 458752, 5, 393280, 458752, 5, 458816, 458752, 5, 524352, 458752, 5, 589888, 458752, 5, 655424, 458752, 5, 720960, 458752, 5, 786496, 458752, 5, 852032, 458752, 5, 917568, 458752, 5, 983104, 458752, 5, 1048640, 458752, 5, 1114176, 458752, 5, 1179712, 458752, 5, 1245248, 458752, 5, 53, 0, 9, 65589, 0, 9, 131125, 0, 9, 196661, 0, 9, 262197, 0, 9, 327733, 0, 9, 393269, 0, 9, 458805, 0, 9, 524341, 0, 9, 589877, 0, 9, 655413, 0, 9, 720949, 0, 9, 786485, 0, 9, 54, 65536, 9, 65590, 65536, 9, 131126, 65536, 9, 196662, 65536, 9, 262198, 65536, 9, 327734, 65536, 9, 393270, 65536, 9, 458806, 65536, 9, 524342, 65536, 9, 589878, 65536, 9, 655414, 65536, 9, 720950, 65536, 9, 786486, 65536, 9, 55, 458752, 1342177286, 65591, 458752, 1342177286, 131127, 458752, 1342177286, 196663, 458752, 1342177286, 262199, 458752, 1342177286, 327735, 458752, 1342177286, 393271, 458752, 1342177286, 458807, 458752, 1342177286, 524343, 458752, 1342177286, 589879, 196608, 8, 655415, 196608, 9, 720951, 196608, 8, 786487, 196608, 9, 65535, 131072, 9, 131071, 131072, 9, 196607, 131072, 9, 262143, 131072, 9, 327679, 131072, 9, 393215, 131072, 9, 851968, 65536, 8, 917503, 131072, 8, 983039, 262144, 8, 720902, 655360, 1, 786438, 458752, 1, 720903, 589824, 1, 786439, 458752, 1, 720904, 458752, 0, 786440, 524288, 1, 655366, 458752, 0, 655367, 524288, 0, 720905, 524288, 0, 786437, 458752, 1, 655372, 393216, 1, 655373, 458752, 0, 720909, 589824, 1, 786445, 655360, 1, 786444, 589824, 1, 720908, 393216, 1, 589836, 393216, 1, 589837, 524288, 1, 524299, 458752, 0, 524300, 524288, 0, 458764, 393216, 1, 393228, 393216, 1, 393229, 458752, 0, 458765, 589824, 1, 524301, 524288, 1, 327686, 393216, 0, 393222, 393216, 2, 327687, 458752, 0, 393223, 524288, 2, 327688, 524288, 0, 393216, 393216, 0, 458752, 393216, 1, 524288, 655360, 1, 393217, 458752, 0, 458753, 458752, 1, 524289, 458752, 1, 393218, 524288, 0, 458754, 458752, 1, 196626, 393216, 0, 262162, 393216, 1, 327698, 393216, 1, 393234, 589824, 1, 458770, 393216, 1, 524306, 393216, 1, 589842, 589824, 1, 196627, 524288, 0, 262163, 524288, 1, 327699, 524288, 1, 393235, 655360, 1, 458771, 524288, 1, 524307, 524288, 1, 589843, 655360, 1, 262161, 1114112, 2, 327700, 1114112, 2, 327701, 1179648, 2, 327702, 1245184, 2, 720918, 393216, 0, 786454, 393216, 1, 720919, 458752, 0, 786455, 458752, 1, 720920, 524288, 0, 786456, 524288, 1, 327703, 393216, 0, 393239, 393216, 1, 327704, 458752, 0, 393240, 458752, 1, 327705, 524288, 0, 393241, 524288, 1, 458775, 393216, 2, 458776, 458752, 2, 458777, 524288, 2, 131094, 1114112, 2, 131095, 1179648, 2, 131096, 1245184, 2, 131101, 393216, 0, 196637, 393216, 2, 131102, 524288, 0, 196638, 524288, 2, 458780, 393216, 0, 458781, 458752, 0, 524317, 589824, 1, 458782, 524288, 0, 524318, 655360, 1, 524316, 393216, 1, 786459, 393216, 0, 786460, 458752, 0, 786461, 524288, 0, 786479, 655360, 1, 720944, 589824, 1, 786480, 458752, 1, 720945, 524288, 0, 786481, 458752, 1, 589871, 393216, 0, 655407, 393216, 1, 589872, 524288, 1, 655408, 458752, 1, 655409, 524288, 0, 458804, 458752, 0, 524340, 524288, 1, 589876, 524288, 1, 720943, 393216, 1, 393250, 1114112, 2, 393251, 1179648, 2, 393252, 1245184, 2, 655393, 393216, 0, 655394, 458752, 0, 655395, 524288, 0, 524326, 393216, 0, 524327, 524288, 0, 589867, 655360, 1, 655403, 589824, 1, 720939, 458752, 1610612737, 786475, 655360, 1, 786474, 458752, 0, 655404, 524288, 0, 589866, 393216, 0, 524298, 393216, 0, 720901, 393216, 0, 786478, 393216, 0, 196636, 393216, 0, 786473, 458752, 0, 786472, 393216, 0, 589844, 1245184, 2, 786482, 393216, 0, 786483, 458752, 0, 786484, 524288, 0, 458803, 589824, 1, 524336, 524288, 0, 524331, 458752, 0, 393267, 393216, 0, 393268, 393216, 0, 524339, 458752, 1, 262183, 393216, 0, 262184, 524288, 0, 720910, 524288, 0, 589841, 1114112, 2, 458766, 524288, 0, 524290, 458752, 1) - -[node name="CharacterBody2D" parent="Scene Objects" instance=ExtResource("4_gl3ga")] -position = Vector2(53, 517) - -[node name="Camera2D" type="Camera2D" parent="Scene Objects/CharacterBody2D"] -position = Vector2(105, 59) -position_smoothing_enabled = true -position_smoothing_speed = 7.0 - -[node name="Collectables group" type="Node" parent="Scene Objects"] - -[node name="collectable" parent="Scene Objects/Collectables group" instance=ExtResource("5_q578j")] -position = Vector2(34, 237) - -[node name="collectable2" parent="Scene Objects/Collectables group" instance=ExtResource("5_q578j")] -position = Vector2(323, 185) - -[node name="collectable3" parent="Scene Objects/Collectables group" instance=ExtResource("5_q578j")] -position = Vector2(310, 424) - -[node name="collectable4" parent="Scene Objects/Collectables group" instance=ExtResource("5_q578j")] -position = Vector2(810, 380) - -[node name="collectable5" parent="Scene Objects/Collectables group" instance=ExtResource("5_q578j")] -position = Vector2(690, 129) - -[node name="collectable6" parent="Scene Objects/Collectables group" instance=ExtResource("5_q578j")] -position = Vector2(883, 94) - -[node name="collectable7" parent="Scene Objects/Collectables group" instance=ExtResource("5_q578j")] -position = Vector2(962, 382) - -[node name="collectable8" parent="Scene Objects/Collectables group" instance=ExtResource("5_q578j")] -position = Vector2(1146, 189) - -[node name="collectable9" parent="Scene Objects/Collectables group" instance=ExtResource("5_q578j")] -position = Vector2(1088, 45) - -[node name="collectable10" parent="Scene Objects/Collectables group" instance=ExtResource("5_q578j")] -position = Vector2(1410, 49) - -[node name="collectable11" parent="Scene Objects/Collectables group" instance=ExtResource("5_q578j")] -position = Vector2(1333, 524) - -[node name="collectable12" parent="Scene Objects/Collectables group" instance=ExtResource("5_q578j")] -position = Vector2(1527, 175) - -[node name="collectable13" parent="Scene Objects/Collectables group" instance=ExtResource("5_q578j")] -position = Vector2(1889, 141) - -[node name="collectable14" parent="Scene Objects/Collectables group" instance=ExtResource("5_q578j")] -position = Vector2(1629, 424) - -[node name="collectable15" parent="Scene Objects/Collectables group" instance=ExtResource("5_q578j")] -position = Vector2(1992, 524) - -[node name="collectable16" parent="Scene Objects/Collectables group" instance=ExtResource("5_q578j")] -position = Vector2(2005, 379) - -[node name="collectable17" parent="Scene Objects/Collectables group" instance=ExtResource("5_q578j")] -position = Vector2(2149, 567) - -[node name="collectable18" parent="Scene Objects/Collectables group" instance=ExtResource("5_q578j")] -position = Vector2(2476, 230) - -[node name="collectable19" parent="Scene Objects/Collectables group" instance=ExtResource("5_q578j")] -position = Vector2(2090, 71) - -[node name="collectable20" parent="Scene Objects/Collectables group" instance=ExtResource("5_q578j")] -position = Vector2(2357, 424) - -[node name="Finish" parent="Scene Objects" instance=ExtResource("6_rsnk0")] -texture_filter = 1 -position = Vector2(2453, 544) -target_lavel = ExtResource("7_dilak") - -[node name="UI" type="CanvasLayer" parent="."] - -[node name="Panel" type="Panel" parent="UI"] -offset_left = 16.0 -offset_top = 18.0 -offset_right = 190.0 -offset_bottom = 80.0 - -[node name="Points Label" type="Label" parent="UI/Panel"] -unique_name_in_owner = true -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -theme_override_colors/font_color = Color(0.964706, 0.929412, 0, 1) -theme_override_colors/font_shadow_color = Color(0.117647, 0, 0, 1) -theme_override_colors/font_outline_color = Color(0, 0, 0, 0) -theme_override_font_sizes/font_size = 20 -text = "Points : 0" -horizontal_alignment = 1 -vertical_alignment = 1 diff --git a/src/scenes/main_character.gd b/src/scenes/main_character.gd deleted file mode 100644 index 9a33f26..0000000 --- a/src/scenes/main_character.gd +++ /dev/null @@ -1,55 +0,0 @@ -extends CharacterBody2D - - -#================Explanation of Changes: -#======================================= -#Constants: SPEED and JUMP_VELOCITY are defined for easier adjustment and readability. -#Onready Variable: @onready var sprite_2d is used to reference the Sprite2D node, allowing for easy animation control. -#Gravity Setting: gravity is fetched from the project settings to ensure it matches the physics settings. -#Physics Process Function: The _physics_process(delta) function is called every physics frame and handles movement, gravity, jumping, and animations: -#Animation Control: Sets the animation based on horizontal velocity. -#Gravity Application: Adds gravity to the vertical velocity when the character is not on the floor. -#Jump Handling: Sets the vertical velocity to JUMP_VELOCITY when the jump key is pressed and the character is on the floor. -#Movement Control: Updates the horizontal velocity based on input and smoothly decelerates to a stop. -#Sprite Flipping: Flips the sprite horizontally based on the direction of movement. - -#================================-------------------------------------===================== - -# Constants for movement speed and jump velocity. -const SPEED = 300.0 -const JUMP_VELOCITY = -800.0 -# Onready variable to reference the Sprite2D node for animations. -@onready var sprite_2d = $Sprite2D - -# Get the gravity from the project settings to be synced with RigidBody nodes. -var gravity = ProjectSettings.get_setting("physics/2d/default_gravity") - -# Function called every physics frame. delta is the elapsed time since the previous frame. -func _physics_process(delta): - # Handle animation based on horizontal velocity. - if ( velocity.x > 1 || velocity.x < -1 ): - sprite_2d.animation = "running" - else: - sprite_2d.animation = "default" - - # Apply gravity when not on the floor. - if not is_on_floor(): - velocity.y += gravity * delta - sprite_2d.animation = "jumping" - - # Handle jump action when the jump key is pressed and the character is on the floor. - if Input.is_action_just_pressed("jump") and is_on_floor(): - velocity.y = JUMP_VELOCITY - - # Get the input direction and handle the movement/deceleration. - var direction = Input.get_axis("left", "right") - if direction: - velocity.x = direction * SPEED - else: - velocity.x = move_toward(velocity.x, 0, 15) -# Move the character and handle collisions. - move_and_slide() - - # Flip the sprite horizontally based on the direction of movement. - var isLeft = velocity.x < 0 - sprite_2d.flip_h = isLeft diff --git a/src/scenes/main_menu.gd b/src/scenes/main_menu.gd deleted file mode 100644 index 043f2d6..0000000 --- a/src/scenes/main_menu.gd +++ /dev/null @@ -1,5 +0,0 @@ -extends Node2D - -func _on_level_1_pressed(): - get_tree().change_scene_to_file("res://scenes/level1.tscn") - diff --git a/src/ui/exit_scene.gd b/src/ui/exit_scene.gd new file mode 100644 index 0000000..b0f3788 --- /dev/null +++ b/src/ui/exit_scene.gd @@ -0,0 +1,4 @@ +extends Node2D + +func _on_mainmenu_button_pressed(): + GameManager.load_level(0) diff --git a/src/ui/exit_scene.gd.uid b/src/ui/exit_scene.gd.uid new file mode 100644 index 0000000..bef406a --- /dev/null +++ b/src/ui/exit_scene.gd.uid @@ -0,0 +1 @@ +uid://c4l2surrwvf30 diff --git a/src/scenes/exit_scene.tscn b/src/ui/exit_scene.tscn similarity index 68% rename from src/scenes/exit_scene.tscn rename to src/ui/exit_scene.tscn index c4b8a0b..b55dea3 100644 --- a/src/scenes/exit_scene.tscn +++ b/src/ui/exit_scene.tscn @@ -1,12 +1,12 @@ -[gd_scene load_steps=3 format=3 uid="uid://pjv6r6e0wjdy"] +[gd_scene format=3 uid="uid://pjv6r6e0wjdy"] -[ext_resource type="Texture2D" uid="uid://bryutm3lyetn6" path="res://Brown.png" id="1_1khis"] -[ext_resource type="Script" path="res://scenes/exit_scene.gd" id="1_bvau5"] +[ext_resource type="Texture2D" uid="uid://bryutm3lyetn6" path="res://assets/sprites/Brown.png" id="1_1khis"] +[ext_resource type="Script" uid="uid://c4l2surrwvf30" path="res://ui/exit_scene.gd" id="1_bvau5"] -[node name="ExitScene" type="Node2D"] +[node name="ExitScene" type="Node2D" unique_id=1551846630] script = ExtResource("1_bvau5") -[node name="TextureRect" type="TextureRect" parent="."] +[node name="TextureRect" type="TextureRect" parent="." unique_id=1577317321] texture_filter = 1 anchors_preset = 15 anchor_right = 1.0 @@ -19,13 +19,13 @@ grow_vertical = 2 texture = ExtResource("1_1khis") stretch_mode = 1 -[node name="Panel" type="Panel" parent="."] +[node name="Panel" type="Panel" parent="." unique_id=604414764] offset_left = 303.0 offset_top = 189.0 offset_right = 890.0 offset_bottom = 434.0 -[node name="Exit Text" type="Label" parent="Panel"] +[node name="Exit Text" type="Label" parent="Panel" unique_id=1546031] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -42,7 +42,7 @@ text = "Good job! horizontal_alignment = 1 vertical_alignment = 1 -[node name="Button" type="Button" parent="."] +[node name="Button" type="Button" parent="." unique_id=736385975] offset_left = 431.0 offset_top = 492.0 offset_right = 771.0 diff --git a/src/ui/in_level.gd b/src/ui/in_level.gd new file mode 100644 index 0000000..cfc5b00 --- /dev/null +++ b/src/ui/in_level.gd @@ -0,0 +1,45 @@ +extends CanvasLayer + +@onready var points_label: Label = %PointsLabel +@onready var health_label: Label = %HealthLabel +@onready var game_over_panel: Panel = %GameOverPanel + +func _ready() -> void: + GameManager.update_points.connect(self._on_update_points) + GameManager.player_changed.connect(self._on_new_player) + if GameManager.player != null: + _on_new_player(GameManager.player) + +func _on_update_points(new_points: int): + points_label.text = str(new_points) + +func _wait_for_any_just_pressed() -> void: + while true: + await get_tree().process_frame + if Input.is_anything_pressed(): + return + +func _on_new_player(player: Player): + var hp_comp = player.get_node("HealthComponent") + hp_comp.damage_taken.connect( + func(): + health_label.text = str(int(hp_comp.get_health())) + ) + hp_comp.regained.connect( + func(): + health_label.text = str(int(hp_comp.get_health())) + ) + hp_comp.death.connect( + func(): + game_over_panel.visible = true + health_label.text = "0" + Engine.time_scale = 0.5 + + # Waiting for some amount + await get_tree().create_timer(0.5).timeout + await _wait_for_any_just_pressed() + + Engine.time_scale = 1.0 + GameManager.load_level(0) + ) + health_label.text = str(int(hp_comp.get_health())) diff --git a/src/ui/in_level.gd.uid b/src/ui/in_level.gd.uid new file mode 100644 index 0000000..f6cdf7b --- /dev/null +++ b/src/ui/in_level.gd.uid @@ -0,0 +1 @@ +uid://gc1pgay2lpra diff --git a/src/ui/in_level.tscn b/src/ui/in_level.tscn new file mode 100644 index 0000000..bee39a5 --- /dev/null +++ b/src/ui/in_level.tscn @@ -0,0 +1,131 @@ +[gd_scene format=3 uid="uid://v71476qj0a8o"] + +[ext_resource type="Script" uid="uid://gc1pgay2lpra" path="res://ui/in_level.gd" id="1_dq1mr"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_dq1mr"] +bg_color = Color(0.060530342, 0.060530365, 0.060530297, 0.47058824) + +[node name="InLevel" type="CanvasLayer" unique_id=927364058] +script = ExtResource("1_dq1mr") + +[node name="MarginContainer" type="MarginContainer" parent="." unique_id=1231699172] +offset_right = 40.0 +offset_bottom = 40.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_constants/margin_left = 20 +theme_override_constants/margin_top = 20 +theme_override_constants/margin_right = 20 +theme_override_constants/margin_bottom = 20 + +[node name="Panel" type="Panel" parent="MarginContainer" unique_id=1840061763] +custom_minimum_size = Vector2(174, 62) +layout_mode = 2 + +[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/Panel" unique_id=1449036048] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/Panel/MarginContainer" unique_id=1115479092] +layout_mode = 2 +alignment = 1 + +[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/Panel/MarginContainer/VBoxContainer" unique_id=2105110146] +layout_mode = 2 +alignment = 1 + +[node name="Label" type="Label" parent="MarginContainer/Panel/MarginContainer/VBoxContainer/HBoxContainer" unique_id=766405236] +clip_contents = true +layout_mode = 2 +theme_override_colors/font_color = Color(0.964706, 0.929412, 0, 1) +theme_override_colors/font_shadow_color = Color(0.117647, 0, 0, 1) +theme_override_colors/font_outline_color = Color(0, 0, 0, 0) +theme_override_font_sizes/font_size = 20 +text = "Points:" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="PointsLabel" type="Label" parent="MarginContainer/Panel/MarginContainer/VBoxContainer/HBoxContainer" unique_id=1801772111] +unique_name_in_owner = true +clip_contents = true +layout_mode = 2 +theme_override_colors/font_color = Color(0.964706, 0.929412, 0, 1) +theme_override_colors/font_shadow_color = Color(0.117647, 0, 0, 1) +theme_override_colors/font_outline_color = Color(0, 0, 0, 0) +theme_override_font_sizes/font_size = 20 +text = "0" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="HBoxContainer2" type="HBoxContainer" parent="MarginContainer/Panel/MarginContainer/VBoxContainer" unique_id=933737576] +layout_mode = 2 +alignment = 1 + +[node name="Label" type="Label" parent="MarginContainer/Panel/MarginContainer/VBoxContainer/HBoxContainer2" unique_id=449165642] +clip_contents = true +layout_mode = 2 +theme_override_colors/font_color = Color(0.964706, 0.929412, 0, 1) +theme_override_colors/font_shadow_color = Color(0.117647, 0, 0, 1) +theme_override_colors/font_outline_color = Color(0, 0, 0, 0) +theme_override_font_sizes/font_size = 20 +text = "Health:" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="HealthLabel" type="Label" parent="MarginContainer/Panel/MarginContainer/VBoxContainer/HBoxContainer2" unique_id=896159185] +unique_name_in_owner = true +clip_contents = true +layout_mode = 2 +theme_override_colors/font_color = Color(0.964706, 0.929412, 0, 1) +theme_override_colors/font_shadow_color = Color(0.117647, 0, 0, 1) +theme_override_colors/font_outline_color = Color(0, 0, 0, 0) +theme_override_font_sizes/font_size = 20 +text = "0" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="GameOverPanel" type="Panel" parent="." unique_id=39823600] +unique_name_in_owner = true +visible = false +custom_minimum_size = Vector2(300, 100) +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -20.0 +offset_top = -20.0 +offset_right = -20.0 +offset_bottom = -20.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_styles/panel = SubResource("StyleBoxFlat_dq1mr") + +[node name="Label" type="Label" parent="GameOverPanel" unique_id=1889764332] +clip_contents = true +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -129.0 +offset_top = -29.5 +offset_right = 129.0 +offset_bottom = 29.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_colors/font_color = Color(0.964706, 0.929412, 0, 1) +theme_override_colors/font_shadow_color = Color(0.117647, 0, 0, 1) +theme_override_colors/font_outline_color = Color(0, 0, 0, 0) +theme_override_font_sizes/font_size = 20 +text = "Game Over +Press any key to continue.." +horizontal_alignment = 1 +vertical_alignment = 1 diff --git a/src/ui/main_menu.gd b/src/ui/main_menu.gd new file mode 100644 index 0000000..7c9ab25 --- /dev/null +++ b/src/ui/main_menu.gd @@ -0,0 +1,4 @@ +extends Node2D + +func _on_level_1_pressed(): + GameManager.load_level(1) diff --git a/src/ui/main_menu.gd.uid b/src/ui/main_menu.gd.uid new file mode 100644 index 0000000..fea3a46 --- /dev/null +++ b/src/ui/main_menu.gd.uid @@ -0,0 +1 @@ +uid://1xlu30bda38e diff --git a/src/scenes/main_menu.tscn b/src/ui/main_menu.tscn similarity index 64% rename from src/scenes/main_menu.tscn rename to src/ui/main_menu.tscn index 1f1b616..c499b77 100644 --- a/src/scenes/main_menu.tscn +++ b/src/ui/main_menu.tscn @@ -1,13 +1,13 @@ -[gd_scene load_steps=4 format=3 uid="uid://bg8c0ciri117w"] +[gd_scene format=3 uid="uid://bg8c0ciri117w"] -[ext_resource type="Script" path="res://scenes/main_menu.gd" id="1_eu0qh"] -[ext_resource type="Texture2D" uid="uid://bryutm3lyetn6" path="res://Brown.png" id="1_hvcfm"] -[ext_resource type="Texture2D" uid="uid://h8ofoam00ee7" path="res://logo.png" id="2_3mrmu"] +[ext_resource type="Script" uid="uid://1xlu30bda38e" path="res://ui/main_menu.gd" id="1_eu0qh"] +[ext_resource type="Texture2D" uid="uid://bryutm3lyetn6" path="res://assets/sprites/Brown.png" id="1_hvcfm"] +[ext_resource type="Texture2D" uid="uid://h8ofoam00ee7" path="res://assets/logo.png" id="2_3mrmu"] -[node name="MainMenu" type="Node2D"] +[node name="MainMenu" type="Node2D" unique_id=879684720] script = ExtResource("1_eu0qh") -[node name="TextureRect2" type="TextureRect" parent="."] +[node name="TextureRect2" type="TextureRect" parent="." unique_id=1227305333] texture_filter = 1 offset_left = -1.0 offset_top = -2.0 @@ -16,14 +16,14 @@ offset_bottom = 693.0 texture = ExtResource("1_hvcfm") stretch_mode = 1 -[node name="TextureRect" type="TextureRect" parent="."] +[node name="TextureRect" type="TextureRect" parent="." unique_id=1182880649] offset_left = 321.0 offset_top = 166.0 offset_right = 873.0 offset_bottom = 362.0 texture = ExtResource("2_3mrmu") -[node name="level1" type="Button" parent="."] +[node name="level1" type="Button" parent="." unique_id=49749412] anchors_preset = 8 anchor_left = 0.5 anchor_top = 0.5 diff --git a/src/scenes/intermediate_scene.gd b/src/ui/next_level_scene.gd similarity index 67% rename from src/scenes/intermediate_scene.gd rename to src/ui/next_level_scene.gd index d0b6a4c..24b10f6 100644 --- a/src/scenes/intermediate_scene.gd +++ b/src/ui/next_level_scene.gd @@ -3,10 +3,11 @@ extends Node2D # Function called when the yes button is pressed. func _on_yes_button_pressed(): # Change the current scene to 'level2.tscn'. - get_tree().change_scene_to_file("res://scenes/level2.tscn") + GameManager.load_level(GameManager.current_level + 1) + SoundManager.stop_all() # Function called when the back button is pressed. func _on_back_button_pressed(): # Change the current scene to 'main_menu.tscn'. - get_tree().change_scene_to_file("res://scenes/main_menu.tscn") - + GameManager.load_level(0) + SoundManager.stop_all() diff --git a/src/ui/next_level_scene.gd.uid b/src/ui/next_level_scene.gd.uid new file mode 100644 index 0000000..532cac6 --- /dev/null +++ b/src/ui/next_level_scene.gd.uid @@ -0,0 +1 @@ +uid://ie8an8wxb2kn diff --git a/src/scenes/intermediate_scene.tscn b/src/ui/next_level_scene.tscn similarity index 67% rename from src/scenes/intermediate_scene.tscn rename to src/ui/next_level_scene.tscn index 7fc60c7..5c66ae7 100644 --- a/src/scenes/intermediate_scene.tscn +++ b/src/ui/next_level_scene.tscn @@ -1,26 +1,26 @@ -[gd_scene load_steps=3 format=3 uid="uid://cwu26fbkoauu4"] +[gd_scene format=3 uid="uid://cwu26fbkoauu4"] -[ext_resource type="Script" path="res://scenes/intermediate_scene.gd" id="1_8smd5"] -[ext_resource type="Texture2D" uid="uid://bryutm3lyetn6" path="res://Brown.png" id="2_waaaa"] +[ext_resource type="Script" uid="uid://ie8an8wxb2kn" path="res://ui/next_level_scene.gd" id="1_8smd5"] +[ext_resource type="Texture2D" uid="uid://bryutm3lyetn6" path="res://assets/sprites/Brown.png" id="2_waaaa"] -[node name="IntermediateScene" type="Node2D"] +[node name="IntermediateScene" type="Node2D" unique_id=641478337] script = ExtResource("1_8smd5") -[node name="TextureRect" type="TextureRect" parent="."] +[node name="TextureRect" type="TextureRect" parent="." unique_id=1139572909] texture_filter = 1 offset_right = 1258.0 offset_bottom = 682.0 texture = ExtResource("2_waaaa") stretch_mode = 1 -[node name="Panel" type="Panel" parent="TextureRect"] +[node name="Panel" type="Panel" parent="TextureRect" unique_id=2121890874] layout_mode = 0 offset_left = 341.0 offset_top = 170.0 offset_right = 833.0 offset_bottom = 364.0 -[node name="Label" type="Label" parent="TextureRect/Panel"] +[node name="Label" type="Label" parent="TextureRect/Panel" unique_id=1561389054] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -30,12 +30,12 @@ grow_vertical = 2 theme_override_colors/font_color = Color(1, 0.815686, 0, 1) theme_override_font_sizes/font_size = 30 text = "CONGRATULATIONS! -Level 1 completed. +Level Completed. Do you want to play next level?" horizontal_alignment = 1 vertical_alignment = 1 -[node name="yesButton" type="Button" parent="."] +[node name="yesButton" type="Button" parent="." unique_id=395163059] offset_left = 350.0 offset_top = 409.0 offset_right = 514.0 @@ -45,7 +45,7 @@ theme_override_colors/font_hover_color = Color(1, 1, 1, 1) theme_override_font_sizes/font_size = 30 text = "YES" -[node name="backButton" type="Button" parent="."] +[node name="backButton" type="Button" parent="." unique_id=1724071443] offset_left = 660.0 offset_top = 408.0 offset_right = 824.0 diff --git a/src/world/characters/enemies/enemy_kill_zone.gd b/src/world/characters/enemies/enemy_kill_zone.gd new file mode 100644 index 0000000..417b637 --- /dev/null +++ b/src/world/characters/enemies/enemy_kill_zone.gd @@ -0,0 +1,18 @@ +extends Area2D + +const MIN_DAMAGE_MUL: float = 1.0 +const MAX_DAMAGE_MUL: float = 3.0 + +@onready var damage_comp: DamageComponent = $DamageComponent + +func _ready() -> void: + # Increases damage as level goes up + var t = clampf(float(GameManager.get_current_level()) / GameManager.get_max_level(), 0.0, 1.0) + var damage_mul = lerp(MIN_DAMAGE_MUL, MAX_DAMAGE_MUL, smoothstep(0.0, 1.0, t)) + damage_comp.upgrade_damage(damage_mul) + +func _on_body_entered(body: Node2D) -> void: + if !body.is_in_group("Player"): + return + var h_comp = body.get_node("HealthComponent") + h_comp.apply_damage(damage_comp.get_damage()) diff --git a/src/world/characters/enemies/enemy_kill_zone.gd.uid b/src/world/characters/enemies/enemy_kill_zone.gd.uid new file mode 100644 index 0000000..b13483c --- /dev/null +++ b/src/world/characters/enemies/enemy_kill_zone.gd.uid @@ -0,0 +1 @@ +uid://baso6eo5gfel5 diff --git a/src/world/characters/enemies/enemy_kill_zone.tscn b/src/world/characters/enemies/enemy_kill_zone.tscn new file mode 100644 index 0000000..ad76494 --- /dev/null +++ b/src/world/characters/enemies/enemy_kill_zone.tscn @@ -0,0 +1,12 @@ +[gd_scene format=3 uid="uid://b2rpgjpt64dqs"] + +[ext_resource type="Script" uid="uid://baso6eo5gfel5" path="res://world/characters/enemies/enemy_kill_zone.gd" id="1_cu6um"] +[ext_resource type="PackedScene" uid="uid://cmnml3g5yb5i1" path="res://world/core/damage_component.tscn" id="2_7ldk2"] + +[node name="EnemyKillZone" type="Area2D" unique_id=949654032] +script = ExtResource("1_cu6um") + +[node name="DamageComponent" parent="." unique_id=2109691276 instance=ExtResource("2_7ldk2")] + +[connection signal="area_entered" from="." to="." method="_on_area_entered"] +[connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/src/world/characters/enemies/green_slime.gd b/src/world/characters/enemies/green_slime.gd new file mode 100644 index 0000000..ad6710a --- /dev/null +++ b/src/world/characters/enemies/green_slime.gd @@ -0,0 +1,47 @@ +extends Node2D + +@export var gained_points := 10 + +@onready var sprite: AnimatedSprite2D = $Sprite +@onready var left_raycast: RayCast2D = $LeftRaycast +@onready var right_raycast: RayCast2D = $RightRaycast +@onready var down_left_raycast: RayCast2D = $DownLeftRaycast +@onready var down_right_raycast: RayCast2D = $DownRightRaycast + +@onready var health_comp: HealthComponent = $HealthComponent + +@export var base_speed := 80.0 + +var direction := 1 +var speed := base_speed + +func _ready() -> void: + sprite.play("default") + health_comp.death.connect(self._oh_death) + health_comp.damage_taken.connect(self._on_damage_taken) + +func _physics_process(delta: float) -> void: + if !down_left_raycast.is_colliding() or left_raycast.is_colliding(): + direction = 1 + sprite.flip_h = false + if !down_right_raycast.is_colliding() or right_raycast.is_colliding(): + direction = -1 + sprite.flip_h = true + + position.x += direction * speed * delta + +func _oh_death(): + GameManager.add_points(gained_points) + queue_free() + +func _on_damage_taken(): + var percentage = health_comp.get_health() / health_comp.max_health + if percentage <= 0.4: + # increase speed when below 40% hp + speed *= 1.6 + # face to player immidiately and chase + direction = sign(GameManager.player.global_position.x - global_position.x) + if direction == 1: + sprite.flip_h = false + else: + sprite.flip_h = true diff --git a/src/world/characters/enemies/green_slime.gd.uid b/src/world/characters/enemies/green_slime.gd.uid new file mode 100644 index 0000000..c1786d6 --- /dev/null +++ b/src/world/characters/enemies/green_slime.gd.uid @@ -0,0 +1 @@ +uid://coe1lr6rb35pk diff --git a/src/world/characters/enemies/green_slime.tscn b/src/world/characters/enemies/green_slime.tscn new file mode 100644 index 0000000..0c2f693 --- /dev/null +++ b/src/world/characters/enemies/green_slime.tscn @@ -0,0 +1,88 @@ +[gd_scene format=3 uid="uid://bqxxd2tvcjymk"] + +[ext_resource type="Texture2D" uid="uid://41rop1ea8n31" path="res://assets/sprites/enemies/SlimeGreen.png" id="1_5f62n"] +[ext_resource type="Script" uid="uid://coe1lr6rb35pk" path="res://world/characters/enemies/green_slime.gd" id="1_mp7rx"] +[ext_resource type="PackedScene" uid="uid://b2rpgjpt64dqs" path="res://world/characters/enemies/enemy_kill_zone.tscn" id="2_jtit6"] +[ext_resource type="PackedScene" uid="uid://by0sgs2n8lx6x" path="res://world/core/health_component.tscn" id="3_5dyia"] +[ext_resource type="PackedScene" uid="uid://de858ffkt2jfk" path="res://world/core/flash_component.tscn" id="6_qvb87"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_jtit6"] +atlas = ExtResource("1_5f62n") +region = Rect2(0, 24, 24, 24) + +[sub_resource type="AtlasTexture" id="AtlasTexture_lwdgn"] +atlas = ExtResource("1_5f62n") +region = Rect2(24, 24, 24, 24) + +[sub_resource type="AtlasTexture" id="AtlasTexture_5dyia"] +atlas = ExtResource("1_5f62n") +region = Rect2(48, 24, 24, 24) + +[sub_resource type="AtlasTexture" id="AtlasTexture_mp7rx"] +atlas = ExtResource("1_5f62n") +region = Rect2(72, 24, 24, 24) + +[sub_resource type="SpriteFrames" id="SpriteFrames_qvb87"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_jtit6") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_lwdgn") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_5dyia") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_mp7rx") +}], +"loop": true, +"name": &"default", +"speed": 10.0 +}] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_lwdgn"] +size = Vector2(17.666668, 13) + +[node name="GreenSlime" type="Node2D" unique_id=1004748973 groups=["Enemies"]] +script = ExtResource("1_mp7rx") + +[node name="Sprite" type="AnimatedSprite2D" parent="." unique_id=1652856689] +texture_filter = 1 +position = Vector2(0, -32) +scale = Vector2(3, 3) +sprite_frames = SubResource("SpriteFrames_qvb87") +frame = 3 +frame_progress = 0.7625271 + +[node name="EnemyKillZone" parent="." unique_id=949654032 instance=ExtResource("2_jtit6")] +position = Vector2(0, -14) +scale = Vector2(3, 3) +collision_mask = 3 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="EnemyKillZone" unique_id=1760091044] +position = Vector2(-0.16666684, 0.50000095) +shape = SubResource("RectangleShape2D_lwdgn") + +[node name="HealthComponent" parent="." unique_id=1057797412 instance=ExtResource("3_5dyia")] + +[node name="RightRaycast" type="RayCast2D" parent="." unique_id=408086391] +position = Vector2(0, -11) +target_position = Vector2(24, 0) + +[node name="LeftRaycast" type="RayCast2D" parent="." unique_id=294300279] +position = Vector2(0, -11) +rotation = 3.1415927 +target_position = Vector2(24, 0) + +[node name="DownRightRaycast" type="RayCast2D" parent="." unique_id=1826734143] +position = Vector2(23, -11) +target_position = Vector2(0, 18) + +[node name="DownLeftRaycast" type="RayCast2D" parent="." unique_id=1622602344] +position = Vector2(-23, -11) +target_position = Vector2(0, 18) + +[node name="FlashComponent" parent="." unique_id=2060149202 node_paths=PackedStringArray("target") instance=ExtResource("6_qvb87")] +target = NodePath("../Sprite") diff --git a/src/world/characters/player.gd b/src/world/characters/player.gd new file mode 100644 index 0000000..32d37b0 --- /dev/null +++ b/src/world/characters/player.gd @@ -0,0 +1,392 @@ +extends CharacterBody2D + +class_name Player + +# Player Movement Settings + +##The max speed the player will move +@export_range(50, 500) var max_speed: float = 175.0 +##How fast the player will reach max speed from rest (in seconds) +@export_range(-4, 4) var time_to_reach_max_speed: float = 0.0 +##How fast the player will reach zero speed from max speed (in seconds) +@export_range(-4, 4) var time_to_reach_zero_speed: float = 0.1 +##If true, player will instantly move and switch directions. Overrides the "timeToReach" variables, setting them to 0. +@export var directional_snap: bool = false +##If enabled, the default movement speed will by 1/2 of the maxSpeed and the player must hold a "run" button to accelerate to max speed. Assign "run" (case sensitive) in the project input settings. +@export var running_modifier: bool = false + +##The peak height of the player's jump +@export_range(0, 20) var jump_height: float = 2.1 +##How many jumps the character can do before needing to touch the ground again. Giving more than 1 jump disables jump buffering and coyote time. +@export_range(0, 4) var jumps: int = 2 +##The strength at which the character will be pulled to the ground. +@export_range(0, 100) var gravity_scale: float = 23.0 +##The fastest player can fall +@export_range(0, 1000) var terminal_velocity: float = 700.0 +##Player will move this amount faster when falling providing a less floaty jump curve. +@export_range(0.5, 3) var descending_gravity_factor: float = 2.0 +##Enabling this toggle makes it so that when the player releases the jump key while still ascending, their vertical velocity will cut by the height cut, providing variable jump height. +@export var short_hop: bool = true +##How much the jump height is cut by. +@export_range(1, 10) var jump_variable: float = 5 +##How much extra time (in seconds) the player will be given to jump after falling off an edge. +@export_range(0, 0.5) var coyote_time: float = 0.2 +##The window of time (in seconds) that the player can press the jump button before hitting the ground and still have their input registered as a jump. +@export_range(0, 0.5) var jump_buffering: float = 0.2 +##How many pixels the player will be pushed (per frame) if corner cutting is needed to correct a jump. +@export_range(1, 5) var correction_amount: float = 1.5 + +##Bullet fire cooldown +@export var bullet_fire_cooldown: float = 0.35 +##Health regen settings +@export var regen_delay: float = 5.0 +@export var regen_amount: float = 5.0 + +const jump_sound: AudioStream = preload("res://assets/sounds/jump_01.wav") +const hurt_sound: AudioStreamWAV = preload("res://assets/sounds/hurt.wav") +const bullet_scene: PackedScene = preload("res://world/objects/bullet.tscn") + +# Onready variable to reference the Sprite2D node for animations. +@onready var sprite: AnimatedSprite2D = $Sprite +@onready var collision_shape: CollisionShape2D = $CollisionShape +@onready var left_ray_cast: RayCast2D = $LeftRayCast +@onready var middle_ray_cast: RayCast2D = $MiddleRayCast +@onready var right_ray_cast: RayCast2D = $RightRayCast +@onready var bullet_spawn_point: Node2D = $BulletSpawnPoint +@onready var camera: Camera2D = $Camera +@onready var health_comp: HealthComponent = $HealthComponent + +var bullet_fire_timer: float = 0.0 + +var applied_gravity: float +var acceleration: float +var deceleration: float +var jump_magnitude: float +var jump_count: int +var max_speed_lock: float +var applied_terminal_velocity := terminal_velocity + +var instant_accel := false +var instant_stop := false + +var anim_scale_lock : Vector2 +var collider_scale_lock_y: float +var collider_pos_lock_y: float + +var gravity_active := true + +class _Input: + var left_hold: bool + var right_hold: bool + var left_tap: bool + var right_tap: bool + var left_release: bool + var right_release: bool + var jump_tap: bool + var jump_release: bool + var run_hold: bool + var fire_hold: bool + + func poll() -> void: + left_hold = Input.is_action_pressed("left") + right_hold = Input.is_action_pressed("right") + left_tap = Input.is_action_just_pressed("left") + right_tap = Input.is_action_just_pressed("right") + left_release = Input.is_action_just_released("left") + right_release= Input.is_action_just_released("right") + jump_tap = Input.is_action_just_pressed("jump") + jump_release = Input.is_action_just_released("jump") + run_hold = Input.is_action_pressed("run") + fire_hold = Input.is_action_pressed("fire") + +# collect inputs from physics process +var phy_input_cache := _Input.new() + +enum _MOVEMENT_DIR { + LEFT, RIGHT +} +var prev_movement_dir = _MOVEMENT_DIR.RIGHT +var coyote_activate := false + +var jump_was_press := false + +var regen_timer: SceneTreeTimer = null +var is_regening: bool = false + +func _ready(): + GameManager.player = self + + instant_accel = time_to_reach_max_speed == 0 + if instant_accel: + time_to_reach_max_speed = 1 + time_to_reach_max_speed = abs(time_to_reach_max_speed) + + instant_stop = time_to_reach_zero_speed == 0 + if instant_stop: + time_to_reach_zero_speed = 1 + time_to_reach_zero_speed = abs(time_to_reach_zero_speed) + + acceleration = max_speed / time_to_reach_max_speed + deceleration = -max_speed / time_to_reach_zero_speed + + jump_magnitude = (10.0 * jump_height) * gravity_scale + jump_count = jumps + + max_speed_lock = max_speed + anim_scale_lock = abs(sprite.scale) + collider_scale_lock_y = collision_shape.scale.y + collider_pos_lock_y = collision_shape.position.y + + if jumps > 1: + jump_buffering = 0 + coyote_time = 0 + + coyote_time = abs(coyote_time) + jump_buffering = abs(jump_buffering) + + if directional_snap: + instant_accel = true + instant_stop = true + +## DEBUG ONLY +#func _draw() -> void: + #if !OS.is_debug_build(): + #return + #var raycasts := [left_ray_cast, right_ray_cast, middle_ray_cast] + #for raycast in raycasts: + #var ray_origin = to_local(raycast.global_position) + #var ray_end = to_local(raycast.global_position + raycast.target_position.rotated(raycast.global_rotation)) + #var hit = raycast.is_colliding() + #var hit_pos = to_local(raycast.get_collision_point()) if hit else ray_end + #var color = Color.RED if hit else Color.GREEN +# + #draw_line(ray_origin, hit_pos, color, 2.0) + #if hit: + #draw_circle(hit_pos, 4.0, Color.YELLOW) + +func _process(_delta: float) -> void: + if !health_comp.is_alive(): + return + + if phy_input_cache.right_hold: + sprite.scale.x = anim_scale_lock.x + if phy_input_cache.left_hold: + sprite.scale.x = anim_scale_lock.x * -1 + + if abs(velocity.x) > 0.1 and is_on_floor() and !is_on_wall(): + sprite.speed_scale = abs(velocity.x / 150) + sprite.play("running") + elif abs(velocity.x) < 0.1 and is_on_floor(): + sprite.speed_scale = 1 + sprite.play("default") + + if velocity.y < 0: + sprite.speed_scale = 1 + sprite.play("jumping") + elif velocity.y > 40: + sprite.speed_scale = 1 + sprite.play("falling") + +# Function called every physics frame. delta is the elapsed time since the previous frame. +func _physics_process(delta): + if !health_comp.is_alive(): + velocity.y += applied_gravity + move_and_slide() + return + + phy_input_cache.poll() + + if phy_input_cache.left_hold and phy_input_cache.right_hold: + if !instant_stop: + _decelerate(delta, false) + else: + velocity.x = -0.1 + + elif phy_input_cache.right_hold: + if velocity.x > max_speed or instant_accel: + velocity.x = max_speed + else: + velocity.x += acceleration * delta + if velocity.x < 0: + if !instant_stop: + _decelerate(delta, false) + else: + velocity.x = -0.1 + + elif phy_input_cache.left_hold: + if velocity.x < -max_speed or instant_accel: + velocity.x = -max_speed + else: + velocity.x -= acceleration * delta + if velocity.x > 0: + if !instant_stop: + _decelerate(delta, false) + else: + velocity.x = 0.1 + + var last_dir = prev_movement_dir + if velocity.x > 0: + prev_movement_dir = _MOVEMENT_DIR.RIGHT + elif velocity.x < 0: + prev_movement_dir = _MOVEMENT_DIR.LEFT + + # Flip back when movement Dir has just changed + if last_dir != prev_movement_dir: + sprite.flip_h = false + + if running_modifier and !phy_input_cache.run_hold: + max_speed = max_speed_lock / 2 + elif is_on_floor(): + max_speed = max_speed_lock + + if !(phy_input_cache.left_hold or phy_input_cache.right_hold): + if !instant_stop: + _decelerate(delta, false) + else: + velocity.x = 0 + + if !running_modifier or (running_modifier and phy_input_cache.run_hold): + max_speed = max_speed_lock + collision_shape.scale.y = collider_scale_lock_y + collision_shape.position.y = collider_pos_lock_y + + if velocity.y > 0: + applied_gravity = gravity_scale * descending_gravity_factor + else: + applied_gravity = gravity_scale + + if !is_on_wall(): + applied_terminal_velocity = terminal_velocity + + if gravity_active: + if velocity.y < applied_terminal_velocity: + velocity.y += applied_gravity + elif velocity.y > applied_terminal_velocity: + velocity.y = applied_terminal_velocity + + if short_hop and phy_input_cache.jump_release and velocity.y < 0: + velocity.y = velocity.y / jump_variable + + if jumps == 1: + if !is_on_floor() and !is_on_wall(): + if coyote_time > 0: + coyote_activate = true + _coyote_time() + + if phy_input_cache.jump_tap and !is_on_wall(): + if coyote_activate: + coyote_activate = false + _jump() + if jump_buffering > 0: + jump_was_press = true + _buffer_jump() + elif jump_buffering == 0 and coyote_time == 0 and is_on_floor(): + _jump() + elif phy_input_cache.jump_tap and is_on_floor(): + _jump() + + if is_on_floor(): + jump_count = jumps + if coyote_time > 0: + coyote_activate = true + else: + coyote_activate = false + if jump_was_press: + _jump() + + elif jumps > 1: + if is_on_floor(): + jump_count = jumps + + if phy_input_cache.jump_tap and jump_count > 0: + velocity.y = -jump_magnitude + jump_count = jump_count - 1 + _post_jump() + _end_on_floor() + + if velocity.y < 0 and left_ray_cast.is_colliding() and !right_ray_cast.is_colliding() and !middle_ray_cast.is_colliding(): + position.x += correction_amount + if velocity.y < 0 and !left_ray_cast.is_colliding() and right_ray_cast.is_colliding() and !middle_ray_cast.is_colliding(): + position.x -= correction_amount + + if bullet_fire_timer > 0: + bullet_fire_timer -= delta + elif phy_input_cache.fire_hold: + bullet_fire_timer = bullet_fire_cooldown + _spawn_bullet() + + # Move the character and handle collisions. + move_and_slide() + #if OS.is_debug_build(): + #queue_redraw() + +func _decelerate(delta, vertical): + if !vertical: + if (abs(velocity.x) > 0) and (abs(velocity.x) <= abs(deceleration * delta)): + velocity.x = 0 + elif velocity.x > 0: + velocity.x += deceleration * delta + elif velocity.x < 0: + velocity.x -= deceleration * delta + elif vertical and velocity.y > 0: + velocity.y += deceleration * delta + +func _coyote_time(): + await get_tree().create_timer(coyote_time).timeout + coyote_activate = false + jump_count += -1 + +func _jump(): + if jump_count > 0: + velocity.y = -jump_magnitude + jump_count += -1 + jump_was_press = false + _post_jump() + +func _post_jump(): + SoundManager.play("SFX", jump_sound, true) + +func _buffer_jump(): + await get_tree().create_timer(jump_buffering).timeout + jump_was_press = false + +func _end_on_floor(): + applied_terminal_velocity = terminal_velocity + gravity_active = true + +func _spawn_bullet(): + var bullet: Bullet = bullet_scene.instantiate() + bullet.global_position = bullet_spawn_point.global_position + if prev_movement_dir == _MOVEMENT_DIR.LEFT: + bullet.direction = Vector2.LEFT + else: + bullet.direction = Vector2.RIGHT + get_parent().add_child(bullet) + +func _on_damage_taken() -> void: + SoundManager.play("SFX", hurt_sound, true) + + is_regening = false + _start_regen_timer() + +func _start_regen_timer() -> void: + # reset timer if hit again before regen starts + if regen_timer != null: + regen_timer.timeout.disconnect(_on_regen_timeout) + regen_timer = get_tree().create_timer(regen_delay) + regen_timer.timeout.connect(_on_regen_timeout) + +func _on_regen_timeout() -> void: + regen_timer = null + is_regening = true + while health_comp.get_health() < health_comp.max_health and is_regening: + health_comp.regen(regen_amount) + await get_tree().create_timer(1).timeout + is_regening = false + +func _on_death() -> void: + gravity_scale *= 0.60 # 60% + collision_shape.set_deferred("disabled", true) + var cam_global_transform = camera.global_transform + camera.set_deferred("top_level", true) + camera.set_deferred("global_transform", cam_global_transform) diff --git a/src/world/characters/player.gd.uid b/src/world/characters/player.gd.uid new file mode 100644 index 0000000..e372c82 --- /dev/null +++ b/src/world/characters/player.gd.uid @@ -0,0 +1 @@ +uid://6kxkrq2f2rf7 diff --git a/src/scenes/main_character.tscn b/src/world/characters/player.tscn similarity index 59% rename from src/scenes/main_character.tscn rename to src/world/characters/player.tscn index 7370aef..b0d363f 100644 --- a/src/scenes/main_character.tscn +++ b/src/world/characters/player.tscn @@ -1,9 +1,10 @@ -[gd_scene load_steps=30 format=3 uid="uid://d0gicsksxcad"] +[gd_scene format=3 uid="uid://d0gicsksxcad"] -[ext_resource type="Script" path="res://scenes/main_character.gd" id="1_ukn2t"] -[ext_resource type="Texture2D" uid="uid://ce82a8g8a6bq0" path="res://Jump (32x32).png" id="1_ymox3"] -[ext_resource type="Texture2D" uid="uid://l8xdu6vfy1mm" path="res://Idle (32x32).png" id="2_sax5w"] -[ext_resource type="Texture2D" uid="uid://dowogoeyt1ydy" path="res://Run (32x32).png" id="4_jcide"] +[ext_resource type="Script" uid="uid://6kxkrq2f2rf7" path="res://world/characters/player.gd" id="1_ukn2t"] +[ext_resource type="Texture2D" uid="uid://ce82a8g8a6bq0" path="res://assets/sprites/player/Jump (32x32).png" id="1_ymox3"] +[ext_resource type="Texture2D" uid="uid://l8xdu6vfy1mm" path="res://assets/sprites/player/Idle (32x32).png" id="2_sax5w"] +[ext_resource type="PackedScene" uid="uid://by0sgs2n8lx6x" path="res://world/core/health_component.tscn" id="5_jj1hj"] +[ext_resource type="PackedScene" uid="uid://de858ffkt2jfk" path="res://world/core/flash_component.tscn" id="6_jj1hj"] [sub_resource type="AtlasTexture" id="AtlasTexture_83ho1"] atlas = ExtResource("2_sax5w") @@ -49,54 +50,57 @@ region = Rect2(288, 0, 32, 32) atlas = ExtResource("2_sax5w") region = Rect2(320, 0, 32, 32) +[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_oy1nb"] +load_path = "res://.godot/imported/Run (32x32).png-11c3fb3d352ceada2483a05fb3d98181.ctex" + +[sub_resource type="AtlasTexture" id="AtlasTexture_wk3pq"] +atlas = SubResource("CompressedTexture2D_oy1nb") +region = Rect2(224, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="AtlasTexture_fqwt3"] +atlas = SubResource("CompressedTexture2D_oy1nb") +region = Rect2(256, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="AtlasTexture_8ipb8"] +atlas = SubResource("CompressedTexture2D_oy1nb") +region = Rect2(288, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="AtlasTexture_74tx5"] +atlas = SubResource("CompressedTexture2D_oy1nb") +region = Rect2(320, 0, 32, 32) + +[sub_resource type="AtlasTexture" id="AtlasTexture_gnlfd"] +atlas = SubResource("CompressedTexture2D_oy1nb") +region = Rect2(352, 0, 32, 32) + [sub_resource type="AtlasTexture" id="AtlasTexture_aljqc"] -atlas = ExtResource("4_jcide") +atlas = SubResource("CompressedTexture2D_oy1nb") region = Rect2(0, 0, 32, 32) [sub_resource type="AtlasTexture" id="AtlasTexture_wwmex"] -atlas = ExtResource("4_jcide") +atlas = SubResource("CompressedTexture2D_oy1nb") region = Rect2(32, 0, 32, 32) [sub_resource type="AtlasTexture" id="AtlasTexture_0gaco"] -atlas = ExtResource("4_jcide") +atlas = SubResource("CompressedTexture2D_oy1nb") region = Rect2(64, 0, 32, 32) [sub_resource type="AtlasTexture" id="AtlasTexture_o10t6"] -atlas = ExtResource("4_jcide") +atlas = SubResource("CompressedTexture2D_oy1nb") region = Rect2(96, 0, 32, 32) [sub_resource type="AtlasTexture" id="AtlasTexture_xy7kx"] -atlas = ExtResource("4_jcide") +atlas = SubResource("CompressedTexture2D_oy1nb") region = Rect2(128, 0, 32, 32) [sub_resource type="AtlasTexture" id="AtlasTexture_1l24y"] -atlas = ExtResource("4_jcide") +atlas = SubResource("CompressedTexture2D_oy1nb") region = Rect2(160, 0, 32, 32) [sub_resource type="AtlasTexture" id="AtlasTexture_g5dw7"] -atlas = ExtResource("4_jcide") +atlas = SubResource("CompressedTexture2D_oy1nb") region = Rect2(192, 0, 32, 32) -[sub_resource type="AtlasTexture" id="AtlasTexture_wk3pq"] -atlas = ExtResource("4_jcide") -region = Rect2(224, 0, 32, 32) - -[sub_resource type="AtlasTexture" id="AtlasTexture_fqwt3"] -atlas = ExtResource("4_jcide") -region = Rect2(256, 0, 32, 32) - -[sub_resource type="AtlasTexture" id="AtlasTexture_8ipb8"] -atlas = ExtResource("4_jcide") -region = Rect2(288, 0, 32, 32) - -[sub_resource type="AtlasTexture" id="AtlasTexture_74tx5"] -atlas = ExtResource("4_jcide") -region = Rect2(320, 0, 32, 32) - -[sub_resource type="AtlasTexture" id="AtlasTexture_gnlfd"] -atlas = ExtResource("4_jcide") -region = Rect2(352, 0, 32, 32) - [sub_resource type="SpriteFrames" id="SpriteFrames_kmnxh"] animations = [{ "frames": [{ @@ -139,6 +143,26 @@ animations = [{ }, { "frames": [{ "duration": 1.0, +"texture": SubResource("AtlasTexture_wk3pq") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_fqwt3") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_8ipb8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_74tx5") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_gnlfd") +}], +"loop": true, +"name": &"falling", +"speed": 9.0 +}, { +"frames": [{ +"duration": 1.0, "texture": ExtResource("1_ymox3") }], "loop": true, @@ -188,19 +212,50 @@ animations = [{ }] [sub_resource type="RectangleShape2D" id="RectangleShape2D_kwip6"] -size = Vector2(44, 58) +size = Vector2(31, 44) -[node name="CharacterBody2D" type="CharacterBody2D"] +[node name="Player" type="CharacterBody2D" unique_id=813379447 groups=["Player"]] script = ExtResource("1_ukn2t") -[node name="Sprite2D" type="AnimatedSprite2D" parent="."] +[node name="Sprite" type="AnimatedSprite2D" parent="." unique_id=1337199979] texture_filter = 1 position = Vector2(103.5, 50) scale = Vector2(1.40625, 1.875) sprite_frames = SubResource("SpriteFrames_kmnxh") autoplay = "default" -frame_progress = 0.661665 +frame_progress = 0.22811839 -[node name="CollisionShape2D" type="CollisionShape2D" parent="."] -position = Vector2(104, 50) +[node name="CollisionShape" type="CollisionShape2D" parent="." unique_id=72167170] +position = Vector2(102.5, 57) shape = SubResource("RectangleShape2D_kwip6") + +[node name="LeftRayCast" type="RayCast2D" parent="." unique_id=445467028] +position = Vector2(88, 34) +rotation = 3.1415927 +target_position = Vector2(0, 30) + +[node name="MiddleRayCast" type="RayCast2D" parent="." unique_id=359563621] +position = Vector2(102, 34) +rotation = 3.1415927 +target_position = Vector2(0, 30) + +[node name="RightRayCast" type="RayCast2D" parent="." unique_id=1817673034] +position = Vector2(117, 34) +rotation = 3.1415927 +target_position = Vector2(0, 30) + +[node name="BulletSpawnPoint" type="Marker2D" parent="." unique_id=1640019330] +position = Vector2(103, 57) + +[node name="Camera" type="Camera2D" parent="." unique_id=1555523920] +position = Vector2(105, 59) +position_smoothing_enabled = true +position_smoothing_speed = 7.0 + +[node name="HealthComponent" parent="." unique_id=1057797412 instance=ExtResource("5_jj1hj")] + +[node name="FlashComponent" parent="." unique_id=2060149202 node_paths=PackedStringArray("target") instance=ExtResource("6_jj1hj")] +target = NodePath("../Sprite") + +[connection signal="damage_taken" from="HealthComponent" to="." method="_on_damage_taken"] +[connection signal="death" from="HealthComponent" to="." method="_on_death"] diff --git a/src/world/core/damage_component.gd b/src/world/core/damage_component.gd new file mode 100644 index 0000000..9eaafef --- /dev/null +++ b/src/world/core/damage_component.gd @@ -0,0 +1,12 @@ +extends Node + +class_name DamageComponent + +@export var base_damage: float = 10.0 +var damage_multiplier: float = 1.0 + +func get_damage(): + return base_damage * damage_multiplier + +func upgrade_damage(multiplier: float): + damage_multiplier = multiplier diff --git a/src/world/core/damage_component.gd.uid b/src/world/core/damage_component.gd.uid new file mode 100644 index 0000000..2d96050 --- /dev/null +++ b/src/world/core/damage_component.gd.uid @@ -0,0 +1 @@ +uid://b85iqj0eqvddn diff --git a/src/world/core/damage_component.tscn b/src/world/core/damage_component.tscn new file mode 100644 index 0000000..70a6af9 --- /dev/null +++ b/src/world/core/damage_component.tscn @@ -0,0 +1,6 @@ +[gd_scene format=3 uid="uid://cmnml3g5yb5i1"] + +[ext_resource type="Script" uid="uid://b85iqj0eqvddn" path="res://world/core/damage_component.gd" id="1_w2xop"] + +[node name="DamageComponent" type="Node" unique_id=2109691276] +script = ExtResource("1_w2xop") diff --git a/src/world/core/flash.gdshader b/src/world/core/flash.gdshader new file mode 100644 index 0000000..53fb3ca --- /dev/null +++ b/src/world/core/flash.gdshader @@ -0,0 +1,8 @@ +shader_type canvas_item; + +void fragment() { + vec4 col = texture(TEXTURE, UV); + if (col.a > 0.0) { + COLOR = vec4(1.0, 1.0, 1.0, col.a); + } +} \ No newline at end of file diff --git a/src/world/core/flash.gdshader.uid b/src/world/core/flash.gdshader.uid new file mode 100644 index 0000000..fc96d43 --- /dev/null +++ b/src/world/core/flash.gdshader.uid @@ -0,0 +1 @@ +uid://cby7h28mjswlh diff --git a/src/world/core/flash.material b/src/world/core/flash.material new file mode 100644 index 0000000..c3e3dfb Binary files /dev/null and b/src/world/core/flash.material differ diff --git a/src/world/core/flash_component.gd b/src/world/core/flash_component.gd new file mode 100644 index 0000000..8e6454e --- /dev/null +++ b/src/world/core/flash_component.gd @@ -0,0 +1,25 @@ +extends Node + +class_name FlashComponent + +const flash_material = preload("res://world/core/flash.material") + +@export var target: AnimatedSprite2D # assign in inspector +@export var health_component: HealthComponent # optional override +@export var flash_times: int = 3 # how many time to flash +@export var flash_interval: float = 0.1 # wait time between each flash + +var _default_material: Material + +func _ready(): + _default_material = target.material + if !health_component: + health_component = get_parent().find_child("HealthComponent") + if health_component: + health_component.damage_taken.connect(func(): flash()) + +func flash() -> void: + for i in flash_times * 2: + target.material = flash_material if target.material == _default_material else _default_material + await get_tree().create_timer(flash_interval).timeout + target.material = _default_material diff --git a/src/world/core/flash_component.gd.uid b/src/world/core/flash_component.gd.uid new file mode 100644 index 0000000..35019d5 --- /dev/null +++ b/src/world/core/flash_component.gd.uid @@ -0,0 +1 @@ +uid://cbfjbuqtxkjhn diff --git a/src/world/core/flash_component.tscn b/src/world/core/flash_component.tscn new file mode 100644 index 0000000..ae2bfd2 --- /dev/null +++ b/src/world/core/flash_component.tscn @@ -0,0 +1,6 @@ +[gd_scene format=3 uid="uid://de858ffkt2jfk"] + +[ext_resource type="Script" uid="uid://cbfjbuqtxkjhn" path="res://world/core/flash_component.gd" id="1_13a5c"] + +[node name="FlashComponent" type="Node" unique_id=2060149202] +script = ExtResource("1_13a5c") diff --git a/src/world/core/health_component.gd b/src/world/core/health_component.gd new file mode 100644 index 0000000..3efe3a2 --- /dev/null +++ b/src/world/core/health_component.gd @@ -0,0 +1,29 @@ +extends Node + +class_name HealthComponent + +@export var max_health := 100.0 +var health := max_health + +func get_health(): + return self.health + +func is_alive(): + return self.health > 0.0 + +func apply_damage(damage: float): + if is_alive(): + self.health -= damage + if !is_alive(): + self.death.emit() + else: + self.damage_taken.emit() + +func regen(regen_amount: float): + if is_alive(): + self.health = minf(self.health + regen_amount, self.max_health) + self.regained.emit() + +signal death() +signal damage_taken() +signal regained() diff --git a/src/world/core/health_component.gd.uid b/src/world/core/health_component.gd.uid new file mode 100644 index 0000000..f800110 --- /dev/null +++ b/src/world/core/health_component.gd.uid @@ -0,0 +1 @@ +uid://c7rpyjky87nmp diff --git a/src/world/core/health_component.tscn b/src/world/core/health_component.tscn new file mode 100644 index 0000000..6e1d579 --- /dev/null +++ b/src/world/core/health_component.tscn @@ -0,0 +1,6 @@ +[gd_scene format=3 uid="uid://by0sgs2n8lx6x"] + +[ext_resource type="Script" uid="uid://c7rpyjky87nmp" path="res://world/core/health_component.gd" id="1_ufn45"] + +[node name="HealthComponent" type="Node" unique_id=1057797412] +script = ExtResource("1_ufn45") diff --git a/src/world/game_manager.gd b/src/world/game_manager.gd new file mode 100644 index 0000000..890e00a --- /dev/null +++ b/src/world/game_manager.gd @@ -0,0 +1,43 @@ +extends Node + +@export var player: Player = null : set = _set_player + +@export var levels: Dictionary[int, PackedScene] +@export var main_menu: PackedScene = preload("res://ui/main_menu.tscn") + +func _set_player(value: Player): + player = value + player_changed.emit.call_deferred(value) + +var points: int = 0 +var current_level: int = 0 +var max_level: int = 0 + +func _ready() -> void: + for level in levels: + max_level = max(level, max_level) + +func get_current_level() -> int: + return current_level + +func get_max_level() -> int: + return max_level + +# Function to add points and emit event whoever interested. +func add_points(e: int = 1): + points += e + update_points.emit(points) + +# Function to load a specific level, the level scenes are set from the editor. +func load_level(level: int): + points = 0 + if !levels.has(level): + current_level = 0 + get_tree().change_scene_to_packed.call_deferred(main_menu) + return + current_level = level + get_tree().change_scene_to_packed.call_deferred(levels.get(level)) + +# Events, what the manager is doing +signal update_points(new_points: int) +signal player_changed(new_player: Player) diff --git a/src/world/game_manager.gd.uid b/src/world/game_manager.gd.uid new file mode 100644 index 0000000..8c20496 --- /dev/null +++ b/src/world/game_manager.gd.uid @@ -0,0 +1 @@ +uid://b533r3eyqwdtc diff --git a/src/world/game_manager.tscn b/src/world/game_manager.tscn new file mode 100644 index 0000000..caefd50 --- /dev/null +++ b/src/world/game_manager.tscn @@ -0,0 +1,12 @@ +[gd_scene format=3 uid="uid://cmiuh76gsvk85"] + +[ext_resource type="Script" uid="uid://b533r3eyqwdtc" path="res://world/game_manager.gd" id="1_pek8b"] +[ext_resource type="PackedScene" uid="uid://bjjaxq5h3ntj2" path="res://world/levels/level1.tscn" id="2_yj2i0"] +[ext_resource type="PackedScene" uid="uid://bij5pmaxb2a5q" path="res://world/levels/level2.tscn" id="3_ukdh3"] + +[node name="GameManager" type="Node" unique_id=382478347] +script = ExtResource("1_pek8b") +levels = Dictionary[int, PackedScene]({ +1: ExtResource("2_yj2i0"), +2: ExtResource("3_ukdh3") +}) diff --git a/src/world/levels/level.gd b/src/world/levels/level.gd new file mode 100644 index 0000000..1c363c4 --- /dev/null +++ b/src/world/levels/level.gd @@ -0,0 +1,9 @@ +extends Node + +class_name Level + +const InLevel = preload("res://ui/in_level.tscn") + +func _ready() -> void: + var in_level = InLevel.instantiate() + add_child.call_deferred(in_level) diff --git a/src/world/levels/level.gd.uid b/src/world/levels/level.gd.uid new file mode 100644 index 0000000..3c1ee83 --- /dev/null +++ b/src/world/levels/level.gd.uid @@ -0,0 +1 @@ +uid://ciqwux86vhm1w diff --git a/src/world/levels/level1.tscn b/src/world/levels/level1.tscn new file mode 100644 index 0000000..493ea20 --- /dev/null +++ b/src/world/levels/level1.tscn @@ -0,0 +1,320 @@ +[gd_scene format=4 uid="uid://bjjaxq5h3ntj2"] + +[ext_resource type="Script" uid="uid://ciqwux86vhm1w" path="res://world/levels/level.gd" id="1_lifqf"] +[ext_resource type="Texture2D" uid="uid://la8jl1agaetd" path="res://assets/sprites/Gray.png" id="2_ujv8w"] +[ext_resource type="Texture2D" uid="uid://bnoowio0hp7o2" path="res://assets/sprites/Terrain (16x16).png" id="3_bi7eo"] +[ext_resource type="PackedScene" uid="uid://d0gicsksxcad" path="res://world/characters/player.tscn" id="4_u7dy2"] +[ext_resource type="PackedScene" uid="uid://bu8800vy3b34a" path="res://world/objects/collectable.tscn" id="5_qx6jj"] +[ext_resource type="PackedScene" uid="uid://cqrbnj6mscgu2" path="res://world/objects/finish.tscn" id="6_spe8i"] +[ext_resource type="PackedScene" uid="uid://bqxxd2tvcjymk" path="res://world/characters/enemies/green_slime.tscn" id="8_ujv8w"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_hrhtv"] +texture = ExtResource("3_bi7eo") +0:0/0 = 0 +1:0/0 = 0 +2:0/0 = 0 +3:0/0 = 0 +4:0/0 = 0 +6:0/0 = 0 +7:0/0 = 0 +8:0/0 = 0 +9:0/0 = 0 +10:0/0 = 0 +12:0/0 = 0 +13:0/0 = 0 +14:0/0 = 0 +15:0/0 = 0 +17:0/0 = 0 +17:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3.2374563, -8, -3.2374563) +18:0/0 = 0 +18:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3.2374563, -8, -3.2374563) +19:0/0 = 0 +19:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3.2374563, -8, -3.2374563) +0:1/0 = 0 +1:1/0 = 0 +2:1/0 = 0 +3:1/0 = 0 +4:1/0 = 0 +6:1/0 = 0 +7:1/0 = 0 +8:1/0 = 0 +9:1/0 = 0 +10:1/0 = 0 +12:1/0 = 0 +13:1/0 = 0 +14:1/0 = 0 +15:1/0 = 0 +17:1/0 = 0 +17:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3.2374563, -8, -3.2374563) +18:1/0 = 0 +18:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3.2374563, -8, -3.2374563) +19:1/0 = 0 +19:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3.2374563, -8, -3.2374563) +0:2/0 = 0 +1:2/0 = 0 +2:2/0 = 0 +6:2/0 = 0 +7:2/0 = 0 +8:2/0 = 0 +13:2/0 = 0 +14:2/0 = 0 +15:2/0 = 0 +17:2/0 = 0 +17:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3.2374563, -8, -3.2374563) +18:2/0 = 0 +18:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3.2374563, -8, -3.2374563) +19:2/0 = 0 +19:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3.2374563, -8, -3.2374563) +0:4/0 = 0 +1:4/0 = 0 +2:4/0 = 0 +3:4/0 = 0 +4:4/0 = 0 +6:4/0 = 0 +6:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +7:4/0 = 0 +7:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +8:4/0 = 0 +8:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +9:4/0 = 0 +9:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +10:4/0 = 0 +10:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +12:4/0 = 0 +13:4/0 = 0 +14:4/0 = 0 +15:4/0 = 0 +17:4/0 = 0 +18:4/0 = 0 +19:4/0 = 0 +20:4/0 = 0 +21:4/0 = 0 +0:5/0 = 0 +1:5/0 = 0 +2:5/0 = 0 +3:5/0 = 0 +4:5/0 = 0 +6:5/0 = 0 +6:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +7:5/0 = 0 +7:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +8:5/0 = 0 +8:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +9:5/0 = 0 +9:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +10:5/0 = 0 +10:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +12:5/0 = 0 +13:5/0 = 0 +14:5/0 = 0 +15:5/0 = 0 +17:5/0 = 0 +18:5/0 = 0 +19:5/0 = 0 +20:5/0 = 0 +21:5/0 = 0 +0:6/0 = 0 +1:6/0 = 0 +2:6/0 = 0 +6:6/0 = 0 +6:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +7:6/0 = 0 +7:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +8:6/0 = 0 +8:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +13:6/0 = 0 +14:6/0 = 0 +15:6/0 = 0 +17:6/0 = 0 +18:6/0 = 0 +19:6/0 = 0 +0:8/0 = 0 +1:8/0 = 0 +2:8/0 = 0 +3:8/0 = 0 +4:8/0 = 0 +6:8/0 = 0 +7:8/0 = 0 +8:8/0 = 0 +9:8/0 = 0 +10:8/0 = 0 +12:8/0 = 0 +13:8/0 = 0 +14:8/0 = 0 +15:8/0 = 0 +17:8/0 = 0 +18:8/0 = 0 +19:8/0 = 0 +20:8/0 = 0 +0:9/0 = 0 +1:9/0 = 0 +2:9/0 = 0 +3:9/0 = 0 +4:9/0 = 0 +6:9/0 = 0 +7:9/0 = 0 +8:9/0 = 0 +9:9/0 = 0 +10:9/0 = 0 +12:9/0 = 0 +13:9/0 = 0 +14:9/0 = 0 +15:9/0 = 0 +17:9/0 = 0 +18:9/0 = 0 +19:9/0 = 0 +20:9/0 = 0 +0:10/0 = 0 +1:10/0 = 0 +2:10/0 = 0 +6:10/0 = 0 +7:10/0 = 0 +8:10/0 = 0 +13:10/0 = 0 +14:10/0 = 0 +15:10/0 = 0 +18:10/0 = 0 +19:10/0 = 0 +20:10/0 = 0 + +[sub_resource type="TileSet" id="TileSet_r2lpe"] +physics_layer_0/collision_layer = 1 +sources/0 = SubResource("TileSetAtlasSource_hrhtv") + +[node name="Level1" type="Node" unique_id=1224544174] +script = ExtResource("1_lifqf") + +[node name="Scene Objects" type="Node" parent="." unique_id=1569324147] + +[node name="TextureRect" type="TextureRect" parent="Scene Objects" unique_id=813731679] +texture_filter = 1 +offset_right = 2562.0 +offset_bottom = 634.0 +texture = ExtResource("2_ujv8w") +stretch_mode = 1 + +[node name="MapLayer" type="TileMapLayer" parent="Scene Objects" unique_id=1404825238] +texture_filter = 1 +use_parent_material = true +scale = Vector2(3, 3) +tile_map_data = PackedByteArray("AAD//w0AAAAGAAQAAAAAAA0AAAAHAAQAAAABAA0AAAAHAAQAAAAWAA0AAAAHAAQAAAAXAA0AAAAHAAQAAAAYAA0AAAAHAAQAAAAVAA0AAAAHAAQAAAAUAA0AAAAHAAQAAAATAA0AAAAHAAQAAAASAA0AAAAHAAQAAAARAA0AAAAHAAQAAAAQAA0AAAAHAAQAAAAPAA0AAAAHAAQAAAAOAA0AAAAHAAQAAAANAA0AAAAHAAQAAAAMAA0AAAAHAAQAAAALAA0AAAAHAAQAAAAKAA0AAAAHAAQAAAAJAA0AAAAHAAQAAAAIAA0AAAAHAAQAAAAHAA0AAAAHAAQAAAAGAA0AAAAHAAQAAAAFAA0AAAAHAAQAAAAEAA0AAAAHAAQAAAADAA0AAAAHAAQAAAACAA0AAAAHAAQAAAD//wwAAAAIAAUAAAD//wsAAAAIAAUAAAD//woAAAAIAAUAAAD//wkAAAAIAAUAAAD//wgAAAAIAAUAAAD//wcAAAAIAAUAAAD//wYAAAAIAAUAAAD//wUAAAAIAAUAAAD//wQAAAAIAAUAAAD//wMAAAAIAAUAAAD//wIAAAAIAAUAAAD//wEAAAAIAAUAAAD//wAAAAAIAAUAAAD/////AAAHAAUAAAAAAP//AAAHAAYAAAABAP//AAAHAAYAAAACAP//AAAHAAYAAAADAP//AAAHAAYAAAAEAP//AAAHAAYAAAAFAP//AAAHAAYAAAAGAP//AAAHAAYAAAAHAP//AAAHAAYAAAAIAP//AAAHAAYAAAAJAP//AAAHAAYAAAAKAP//AAAHAAYAAAALAP//AAAHAAYAAAAMAP//AAAHAAYAAAANAP//AAAHAAYAAAAOAP//AAAHAAYAAAAPAP//AAAHAAYAAAAQAP//AAAHAAYAAAARAP//AAAHAAYAAAASAP//AAAHAAYAAAATAP//AAAHAAYAAAAUAP//AAAHAAYAAAAVAP//AAAHAAYAAAAWAP//AAAHAAYAAAAXAP//AAAHAAYAAAAYAP//AAAHAAYAAAAAAAYAAAAHAAQAAAABAAYAAAAIAAQAAAAAAAcAAAAGAAUAAAAAAAgAAAAGAAUAAAABAAcAAAAJAAUAAAABAAgAAAAJAAUAAAAAAAkAAAAGAAUAAAABAAkAAAAHAAUAAAAAAAoAAAAGAAUAAAABAAoAAAAKAAQAAAAAAAsAAAAGAAUAAAABAAsAAAAIAAUAAAAAAAwAAAAGAAYAAAABAAwAAAAIAAYAAAACAAcAAAAIAAQAAAACAAgAAAAKAAUAAAACAAkAAAAIAAUAAAAFAAwAAAAGAAQAAAAGAAwAAAAHAAQAAAAHAAwAAAAIAAQAAAAJAAsAAAAGAAQAAAAKAAsAAAAHAAQAAAALAAsAAAAIAAQAAAAOAAsAAAAGAAQAAAAOAAwAAAAGAAUAAAAPAAsAAAAIAAQAAAAPAAwAAAAHAAUAAAAQAAwAAAAIAAQAAAASAAkAAAAGAAQAAAASAAoAAAAGAAYAAAATAAkAAAAHAAQAAAATAAoAAAAHAAYAAAAUAAkAAAAIAAQAAAAUAAoAAAAIAAYAAAAVAAYAAAAGAAQAAAAWAAYAAAAHAAQAAAAOAAUAAAAIAAQAAAAJAAUAAAAGAAQAAAAKAAUAAAAIAAQAAAALAAUAAAARAAEAAAAEAAQAAAAGAAQAAAAFAAQAAAAHAAQAAAAGAAQAAAAIAAQAAAAAAAIAAAAHAAQAAAABAAIAAAAIAAQAAAAGAAgAAAAGAAQAAAAHAAgAAAAIAAQAAAAMAAsAAAARAAEAAAANAAsAAAATAAEAAAAMAAUAAAASAAEAAAANAAUAAAATAAEAAAAVAAcAAAAJAAQAAAAVAAgAAAAJAAUAAAAWAAcAAAAKAAQAAAAWAAgAAAAKAAUAAAAOAAYAAAAGAAUAAAAPAAYAAAAHAAQAAAAQAAYAAAAIAAQAAAAAAAMAAAAHAAYAAAABAAMAAAAIAAYAAAAXAAYAAAAIAAQAAAACAAoAAAAIAAYAAAAUAAcAAAAGAAQAAAASAAIAAAAGAAQAAAAKAAIAAAAGAAQAAAALAAIAAAAIAAQAAAAMAAIAAAARAAEAAAANAAIAAAATAAEAAAAOAAIAAAAGAAQAAAAPAAIAAAAHAAQAAAAQAAIAAAAIAAQAAAATAAIAAAAIAAQAAAAZAP//AAAHAAYAAAAaAP//AAAHAAYAAAAbAP//AAAHAAYAAAAcAP//AAAHAAYAAAAdAP//AAAHAAYAAAAeAP//AAAHAAYAAAAfAP//AAAHAAYAAAAgAP//AAAHAAYAAAAhAP//AAAHAAYAAAAiAP//AAAHAAYAAAAjAP//AAAHAAYAAAAkAP//AAAHAAYAAAAlAP//AAAHAAYA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AAAHAA4AAAAHAAYAAAAIAA4AAAAHAAYAAAAJAA4AAAAHAAYAAAAKAA4AAAAHAAYAAAALAA4AAAAHAAYAAAAMAA4AAAAHAAYAAAANAA4AAAAHAAYAAAAOAA4AAAAHAAYAAAAPAA4AAAAHAAYAAAAQAA4AAAAHAAYAAAARAA4AAAAHAAYAAAASAA4AAAAHAAYAAAATAA4AAAAHAAYAAAAUAA4AAAAHAAYAAAAVAA4AAAAHAAYAAAAWAA4AAAAHAAYAAAAXAA4AAAAHAAYAAAAYAA4AAAAHAAYAAAAZAA4AAAAHAAYAAAAaAA4AAAAHAAYAAAAbAA4AAAAHAAYAAAAcAA4AAAAHAAYAAAAdAA4AAAAHAAYAAAAeAA4AAAAHAAYAAAAfAA4AAAAHAAYAAAAgAA4AAAAHAAYAAAAhAA4AAAAHAAYAAAAhAA8AAAAHAAYAADAiAA4AAAAHAAYAAAAjAA4AAAAHAAYAAAAkAA4AAAAHAAYAAAAlAA4AAAAHAAYAAAAmAA4AAAAHAAYAAAAnAA4AAAAHAAYAAAAoAA4AAAAHAAYAAAApAA4AAAAHAAYAAAAqAA4AAAAHAAYAAAArAA4AAAAHAAYAAAAsAA4AAAAHAAYAAAAtAA4AAAAHAAYAAAAuAA4AAAAHAAYAAAAvAA4AAAAHAAYAAAAwAA4AAAAHAAYAAAAxAA4AAAAHAAYAAAAyAA4AAAAHAAYAAAAzAA4AAAAHAAYAAAA0AA4AAAAHAAYAAAA1AA4AAAAHAAYAAAAzAA8AAAAHAAYAADAyAA8AAAAHAAYAADAxAA8AAAAHAAYAADAwABAAAAAHAAUAAAAvABAAAAAHAAUAAAAuABAAAAAHAAUAAAAtABAAAAAHAAUAAAAsABAAAAAHAAUAAAArABAAAAAHAAUAAAAqABAAAAAHAAUAAAApABAAAAAHAAUAAAAoABAAAAAHAAUAAAAnABAAAAAHAAUAAAAmABAAAAAHAAUAAAAlABAAAAAHAAUAAAAkABAAAAAHAAUAAAAjABAAAAAHAAUAAAAiABAAAAAHAAUAAAAiAA8AAAAHAAYAADAgAA8AAAAHAAYAADAjAA8AAAAHAAYAADAkAA8AAAAHAAYAADAlAA8AAAAHAAYAADAmAA8AAAAHAAYAADAnAA8AAAAHAAYAADAoAA8AAAAHAAYAADApAA8AAAAHAAYAADAqAA8AAAAHAAYAADArAA8AAAAHAAYAADAsAA8AAAAHAAYAADAtAA8AAAAHAAYAADAuAA8AAAAHAAYAADAvAA8AAAAHAAYAADAwAA8AAAAHAAYAADA0AA8AAAAHAAYAADA1AA8AAAAHAAYAADA2AA8AAAAHAAYAADA3AA8AAAAHAAUAAAA1ABAAAAAHAAUAAAA0ABAAAAAHAAUAAAAzABAAAAAHAAUAAAAyABAAAAAHAAUAAAAxABAAAAAHAAUAAAA2ABAAAAAHAAUAAAA3ABAAAAAHAAUAAAAhABAAAAAHAAUAAAAgABAAAAAHAAUAAAAfABAAAAAHAAUAAAAeABAAAAAHAAUAAAAdABAAAAAHAAUAAAAcABAAAAAHAAUAAAAbABAAAAAHAAUAAAAaABAAAAAHAAUAAAAZABAAAAAHAAUAAAAYABAAAAAHAAUAAAAXABAAAAAHAAUAAAAWABAAAAAHAAUAAAAVABAAAAAHAAUAAAAUABAAAAAHAAUAAAATABAAAAAHAAUAAAAUAA8AAAAHAAYAADAVAA8AAAAHAAYAADAWAA8AAAAHAAYAADAXAA8AAAAHAAYAADAYAA8AAAAHAAYAADAZAA8AAAAHAAYAADAaAA8AAAAHAAYAADAbAA8AAAAHAAYAADAcAA8AAAAHAAYAADAdAA8AAAAHAAYAADAeAA8AAAAHAAYAADAfAA8AAAAHAAYAADATAA8AAAAHAAYAADASAA8AAAAHAAYAADARAA8AAAAHAAYAADAQAA8AAAAHAAYAADAPAA8AAAAHAAYAADAOAA8AAAAHAAYAADANAA8AAAAHAAYAADAMAA8AAAAHAAYAADALAA8AAAAHAAYAADAKAA8AAAAHAAYAADAJAA8AAAAHAAYAADAIAA8AAAAHAAYAADAHAA8AAAAHAAYAADAGAA8AAAAHAAYAADAFAA8AAAAHAAYAADAEAA8AAAAHAAYAADADAA8AAAAHAAYAADACAA8AAAAHAAYAADABAA8AAAAHAAYAADAAAA8AAAAHAAYAADD//w8AAAAHAAYAADD+/w8AAAAHAAYAADD9/w8AAAAHAAUAAAD9/w4AAAAHAAYAAGD+/w4AAAAGAAYAAAD+/w0AAAAGAAUAAAD+/wwAAAAGAAUAAAD+/wsAAAAGAAUAAAD+/woAAAAGAAUAAAD+/wkAAAAGAAUA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AAD3/wMAAAAHAAUAAAD2/wMAAAAHAAUAAAD6/wIAAAAHAAUAAAD7/wIAAAAHAAUAAAD7/wMAAAAHAAUAAAD7/wEAAAAHAAUAAAD6/wEAAAAHAAUAAAD5/wEAAAAHAAUAAAD4/wEAAAAHAAUAAAD3/wIAAAAHAAUAAAD2/wIAAAAHAAUAAAD4/wIAAAAHAAUAAAD5/wIAAAAHAAUAAAD2/wEAAAAHAAUAAAD2/wAAAAAHAAUAAAD3/wAAAAAHAAUAAAD4/wAAAAAHAAUAAAD5/wAAAAAHAAUAAAD6/wAAAAAHAAUAAAD7/wAAAAAHAAUAAAD3/wEAAAAHAAUAAAD7////AAAHAAUAAAD7//7/AAAHAAUAAAD6//7/AAAHAAUAAAD5////AAAHAAUAAAD6////AAAHAAUAAAD4//7/AAAHAAUAAAD5//7/AAAHAAUAAAD7//3/AAAHAAUAAAD6//3/AAAHAAUAAAD4////AAAHAAUAAAD5//3/AAAHAAUAAAD7//z/AAAHAAUAAAD6//z/AAAHAAUAAAD5//z/AAAHAAUAAAD3////AAAHAAUAAAD3//7/AAAHAAUAAAD4//3/AAAHAAUAAAD6//v/AAAHAAUAAAD7//v/AAAHAAUAAAD7//r/AAAHAAUAAAD6//r/AAAHAAUAAAD5//r/AAAHAAUAAAD4//r/AAAHAAUAAAD3//r/AAAHAAUAAAD2//r/AAAHAAUAAAD1//r/AAAHAAUAAAD1//v/AAAHAAUAAAD1//z/AAAHAAUAAAD1//3/AAAHAAUAAAD1//7/AAAHAAUAAAD1////AAAHAAUAAAD2////AAAHAAUAAAD2//7/AAAHAAUAAAD2//3/AAAHAAUAAAD2//z/AAAHAAUAAAD2//v/AAAHAAUAAAD3//v/AAAHAAUAAAD4//v/AAAHAAUAAAD5//v/AAAHAAUAAAD4//z/AAAHAAUAAAD3//z/AAAHAAUAAAD3//3/AAAHAAUAAAD1/wAAAAAHAAUAAAD1/wEAAAAHAAUAAAD1/wIAAAAHAAUAAAD1/wMAAAAHAAUAAAD1/wQAAAAHAAUAAAD2/wYAAAAHAAUAAAD2/wcAAAAHAAUAAAD2/wgAAAAHAAUAAAD2/wkAAAAHAAUAAAD2/woAAAAHAAUAAAD2/wsAAAAHAAUAAAD2/wwAAAAHAAUAAAD2/w0AAAAHAAUAAAD1/wUAAAAHAAUAAAD1/wYAAAAHAAUAAAD1/wcAAAAHAAUAAAD1/wgAAAAHAAUAAAD1/wkAAAAHAAUAAAD1/woAAAAHAAUAAAD1/wsAAAAHAAUAAAD1/wwAAAAHAAUAAAD1/w0AAAAHAAUAAAD1/w4AAAAHAAUAAAD1/w8AAAAHAAUAAAD1/xAAAAAHAAUAAAD1/xEAAAAHAAUAAAD1/xIAAAAHAAUAAAD3/wYAAAAHAAUAAAD3/wcAAAAHAAUAAAD3/wgAAAAHAAUAAAD4/wkAAAAHAAUAAAD4/wgAAAAHAAUAAAD5/wgAAAAHAAUAAAD5/wcAAAAHAAUAAAD6/wcAAAAHAAUAAAD5/wYAAAAHAAUAAAD4/wcAAAAHAAUAAAD4/wYAAAAHAAUAAAD6/wYAAAAHAAUAAAD5/wkAAAAHAAUAAAD5/woAAAAHAAUAAAD5/wsAAAAHAAUAAAD5/wwAAAAHAAUAAAD5/w0AAAAHAAUAAAD4/w0AAAAHAAUAAAD4/w4AAAAHAAUAAAD4/wwAAAAHAAUAAAD4/wsAAAAHAAUAAAD3/woAAAAHAAUAAAD3/wkAAAAHAAUAAAD3/wsAAAAHAAUAAAD3/wwAAAAHAAUAAAD3/w0AAAAHAAUAAAD5/w4AAAAHAAUAAAD4/woAAAAHAAUAAAD6/wgAAAAHAAUAAAD6/wkAAAAHAAUAAAD6/woAAAAHAAUAAAD6/wsAAAAHAAUAAAD6/wwAAAAHAAUAAAD6/w0AAAAHAAUAAAD6/w4AAAAHAAUAAAD6/w8AAAAHAAUAAAD6/xAAAAAHAAUAAAD5/w8AAAAHAAUAAAD4/xAAAAAHAAUAAAD4/xEAAAAHAAUAAAD4/w8AAAAHAAUAAAD3/w4AAAAHAAUAAAD3/w8AAAAHAAUAAAD2/xAAAAAHAAUAAAD2/w8AAAAHAAUAAAD2/w4AAAAHAAUAAAD2/xEAAAAHAAUAAAD2/xIAAAAHAAUAAAD3/xAAAAAHAAUAAAD3/xEAAAAHAAUAAAD3/xIAAAAHAAUAAAD4/xIAAAAHAAUAAAD5/xAAAAAHAAUAAAD5/xEAAAAHAAUAAAD5/xIAAAAHAAUAAAD6/xIAAAAHAAUAAAD6/xEAAAAHAAUAAAD7/w8AAAAHAAUAAAD7/w4AAAAHAAUAAAD7/w0AAAAHAAUAAAD7/wwAAAAHAAUAAAD9/wsAAAAHAAYAAGD9/wwAAAAHAAYAAGD8/wwAAAAHAAUAAAD8/w0AAAAHAAUAAAD8/w4AAAAHAAUAAAD9/w0AAAAHAAYAAGD8/w8AAAAHAAUAAAD7/xAAAAAHAAUAAAD7/xEAAAAHAAUAAAD7/xIAAAAHAAUAAAD8/xIAAAAHAAUAAAD9/xIAAAAHAAUAAAD+/xIAAAAHAAUAAAD8/xAAAAAHAAUAAAD9/xAAAAAHAAUAAAD+/xAAAAAHAAUAAAD//xAAAAAHAAUAAAAAABAAAAAHAAUAAAABABAAAAAHAAUAAAACABAAAAAHAAUAAAADABAAAAAHAAUAAAAEABAAAAAHAAUAAAAOABAAAAAHAAUAAAAPABAAAAAHAAUAAAAQABAAAAAHAAUAAAARABAAAAAHAAUAAAASABAAAAAHAAUAAAAPABEAAAAHAAUAAAAOABEAAAAHAAUAAAANABEAAAAHAAUAAAAMABEAAAAHAAUAAAALABEAAAAHAAUAAAAKABEAAAAHAAUAAAAJABEAAAAHAAUAAAAIABEAAAAHAAUAAAAHABEAAAAHAAUAAAAGABAAAAAHAAUAAAAFABAAAAAHAAUAAAAHABAAAAAHAAUAAAAIABAAAAAHAAUAAAAJABAAAAAHAAUAAAAKABAAAAAHAAUAAAALABAAAAAHAAUAAAAMABAAAAAHAAUAAAANABAAAAAHAAUAAAAAABEAAAAHAAUAAAD//xEAAAAHAAUAAAD+/xEAAAAHAAUAAAD9/xEAAAAHAAUAAAD8/xEAAAAHAAUAAAABABEAAAAHAAUAAAACABEAAAAHAAUAAAADABEAAAAHAAUAAAAEABEAAAAHAAUAAAAFABEAAAAHAAUAAAAGABEAAAAHAAUAAAABABIAAAAHAAUAAAAAABIAAAAHAAUAAAD//xIAAAAHAAUAAAACABIAAAAHAAUAAAADABIAAAAHAAUAAAAEABIAAAAHAAUAAAALABIAAAAHAAUAAAAMABIAAAAHAAUAAAANABIAAAAHAAUAAAAKABIAAAAHAAUAAAAJABIAAAAHAAUAAAAIABIAAAAHAAUAAAAHABIAAAAHAAUAAAAGABIAAAAHAAUAAAAFABIAAAAHAAUAAAAOABIAAAAHAAUAAAAPABIAAAAHAAUAAAAQABIAAAAHAAUAAAARABIAAAAHAAUAAAASABIAAAAHAAUAAAASABEAAAAHAAUAAAATABEAAAAHAAUAAAARABEAAAAHAAUAAAAQABEAAAAHAAUAAAAUABEAAAAHAAUAAAAVABEAAAAHAAUAAAAWABEAAAAHAAUAAAAXABEAAAAHAAUAAAAYABEAAAAHAAUAAAAZABEAAAAHAAUAAAAaABEAAAAHAAUAAAAbABEAAAAHAAUAAAAcABEAAAAHAAUAAAAdABEAAAAHAAUAAAAeABEAAAAHAAUAAAAfABEAAAAHAAUAAAAgABEAAAAHAAUAAAAhABEAAAAHAAUAAAAiABEAAAAHAAUAAAAjABEAAAAHAAUAAAAkABEAAAAHAAUAAAAlABEAAAAHAAUAAAAmABEAAAAHAAUAAAAnABEAAAAHAAUAAAAoABEAAAAHAAUAAAApABEAAAAHAAUAAAAqABEAAAAHAAUAAAArABEAAAAHAAUAAAATABIAAAAHAAUAAAAUABIAAAAHAAUAAAAVABIAAAAHAAUAAAAWABIAAAAHAAUAAAAXABIAAAAHAAUAAAAYABIAAAAHAAUAAAAZABIAAAAHAAUAAAAaABIAAAAHAAUAAAAbABIAAAAHAAUAAAAcABIAAAAHAAUAAAAdABIAAAAHAAUAAAAeABIAAAAHAAUAAAAfABIAAAAHAAUAAAAgABIAAAAHAAUAAAAhABIAAAAHAAUAAAAiABIAAAAHAAUAAAAjABIAAAAHAAUAAAAkABIAAAAHAAUAAAAlABIAAAAHAAUAAAAmABIAAAAHAAUAAAAnABIAAAAHAAUAAAAoABIAAAAHAAUAAAApABIAAAAHAAUAAAAqABIAAAAHAAUAAAArABIAAAAHAAUAAAAsABIAAAAHAAUAAAAtABIAAAAHAAUAAAAuABIAAAAHAAUAAAAsABEAAAAHAAUAAAAtABEAAAAHAAUAAAAuABEAAAAHAAUAAAAvABEAAAAHAAUAAAAwABEAAAAHAAUAAAAxABEAAAAHAAUAAAAyABEAAAAHAAUAAAAzABEAAAAHAAUAAAA0ABEAAAAHAAUAAAA1ABEAAAAHAAUAAAA2ABEAAAAHAAUAAAA3ABEAAAAHAAUAAAAvABIAAAAHAAUAAAAwABIAAAAHAAUAAAAxABIAAAAHAAUAAAAyABIAAAAHAAUAAAAzABIAAAAHAAUAAAA0ABIAAAAHAAUAAAA1ABIAAAAHAAUAAAA2ABIAAAAHAAUAAAA3ABIAAAAHAAUAAAA3AA4AAAAHAAYAAFA3AA0AAAAHAAYAAFA3AAwAAAAHAAYAAFA3AAsAAAAHAAYAAFA3AAoAAAAHAAYAAFA3AAkAAAAHAAYAAFA3AAgAAAAHAAYAAFA3AAcAAAAHAAYAAFA3AAYAAAAHAAYAAFA3AAUAAAAHAAYAAFA3AAQAAAAHAAYAAFA3AAMAAAAHAAYAAFA3AAIAAAAHAAYAAFA3AAEAAAAHAAYAAFA3AAAAAAAHAAYAAFA3AP//AAAHAAYAAFA3AP7/AAAHAAYAAFA4AP7/AAAHAAUAAAA5AP7/AAAHAAUAAAA5AP//AAAHAAUAAAA5AAAAAAAHAAUAAAA5AAEAAAAHAAUAAAA5AAIAAAAHAAUAAAA5AAMAAAAHAAUAAAA5AAQAAAAHAAUAAAA5AAUAAAAHAAUAAAA5AAYAAAAHAAUAAAA5AAcAAAAHAAUAAAA5AAgAAAAHAAUAAAA5AAkAAAAHAAUAAAA5AAoAAAAHAAUAAAA5AAsAAAAHAAUAAAA5AAwAAAAHAAUAAAA5AA0AAAAHAAUAAAA5AA4AAAAHAAUAAAA5AA8AAAAHAAUAAAA5ABAAAAAHAAUAAAA5ABEAAAAHAAUAAAA5ABIAAAAHAAUAAAA4ABIAAAAHAAUAAAA4ABEAAAAHAAUAAAA4ABAAAAAHAAUAAAA4AA8AAAAHAAUAAAA4AA4AAAAHAAUAAAA4AA0AAAAHAAUAAAA4AAwAAAAHAAUAAAA4AAsAAAAHAAUAAAA4AAoAAAAHAAUAAAA4AAkAAAAHAAUAAAA4AAgAAAAHAAUAAAA4AAcAAAAHAAUAAAA4AAYAAAAHAAUAAAA4AAUAAAAHAAUAAAA4AAQAAAAHAAUAAAA4AAMAAAAHAAUAAAA4AAIAAAAHAAUAAAA4AAEAAAAHAAUAAAA4AAAAAAAHAAUAAAA4AP//AAAHAAUAAAAgAP3/AAAHAAYAAAAhAP3/AAAHAAYAAAAiAP3/AAAHAAYAAAAjAP3/AAAHAAYAAAAkAP3/AAAHAAYAAAAlAP3/AAAHAAYAAAAmAP3/AAAHAAYAAAAnAP3/AAAHAAYAAAAoAP3/AAAHAAYAAAApAP3/AAAHAAYAAAAqAP3/AAAHAAYAAAArAP3/AAAHAAYAAAAsAP3/AAAHAAYAAAAtAP3/AAAHAAYAAAAuAP3/AAAHAAYAAAAvAP3/AAAHAAYAAAAwAP3/AAAHAAYAAAAxAP3/AAAHAAYAAAAyAP3/AAAHAAYAAAAzAP3/AAAHAAYAAAA0AP3/AAAHAAYAAAA1AP3/AAAHAAYAAAA2AP3/AAAHAAYAAAA3AP3/AAAHAAUAAAA4AP3/AAAHAAUAAAA5AP3/AAAHAAUAAAAlAPz/AAAHAAUAAAAmAPz/AAAHAAUAAAAnAPz/AAAHAAUAAAAoAPz/AAAHAAUAAAApAPz/AAAHAAUAAAAqAPz/AAAHAAUAAAArAPz/AAAHAAUAAAAsAPz/AAAHAAUAAAAtAPz/AAAHAAUAAAAuAPz/AAAHAAUAAAAvAPz/AAAHAAUAAAAwAPz/AAAHAAUAAAAxAPz/AAAHAAUAAAAyAPz/AAAHAAUAAAAzAPz/AAAHAAUAAAA0APz/AAAHAAUAAAA1APz/AAAHAAUAAAA2APz/AAAHAAUAAAA3APz/AAAHAAUAAAA4APz/AAAHAAUAAAA5APz/AAAHAAUAAAAqAPr/AAAHAAUAAAArAPr/AAAHAAUAAAAsAPr/AAAHAAUAAAAtAPr/AAAHAAUAAAAuAPr/AAAHAAUAAAAvAPr/AAAHAAUAAAAwAPr/AAAHAAUAAAAxAPr/AAAHAAUAAAAyAPr/AAAHAAUAAAAzAPr/AAAHAAUAAAA0APr/AAAHAAUAAAA1APr/AAAHAAUAAAA2APr/AAAHAAUAAAA3APr/AAAHAAUAAAA4APr/AAAHAAUAAAA5APr/AAAHAAUAAAA5APv/AAAHAAUAAAA4APv/AAAHAAUAAAA3APv/AAAHAAUAAAA2APv/AAAHAAUAAAA1APv/AAAHAAUAAAA0APv/AAAHAAUAAAAzAPv/AAAHAAUAAAAyAPv/AAAHAAUAAAAxAPv/AAAHAAUAAAAwAPv/AAAHAAUAAAAvAPv/AAAHAAUAAAAuAPv/AAAHAAUAAAAtAPv/AAAHAAUAAAAsAPv/AAAHAAUAAAArAPv/AAAHAAUAAAA6APr/AAAHAAUAAAA6APv/AAAHAAUAAAA6APz/AAAHAAUAAAA6AP3/AAAHAAUAAAA6AP7/AAAHAAUAAAA6AP//AAAHAAUAAAA6AAAAAAAHAAUAAAA6AAEAAAAHAAUAAAA6AAIAAAAHAAUAAAA6AAMAAAAHAAUAAAA6AAQAAAAHAAUAAAA6AAUAAAAHAAUAAAA6AAYAAAAHAAUAAAA6AAcAAAAHAAUAAAA6AAgAAAAHAAUAAAA6AAkAAAAHAAUAAAA6AAoAAAAHAAUAAAA6AAsAAAAHAAUAAAA6AAwAAAAHAAUAAAA6AA0AAAAHAAUAAAA6AA4AAAAHAAUAAAA6AA8AAAAHAAUAAAA6ABAAAAAHAAUAAAA6ABEAAAAHAAUAAAA6ABIAAAAHAAUAAAA7APr/AAAHAAUAAAA7APv/AAAHAAUAAAA7APz/AAAHAAUAAAA7AP3/AAAHAAUAAAA7AP7/AAAHAAUAAAA7AP//AAAHAAUAAAA8AAAAAAAHAAUAAAA8AAEAAAAHAAUAAAA8AAIAAAAHAAUAAAA8AAMAAAAHAAUAAAA8AAQAAAAHAAUAAAA8AAUAAAAHAAUAAAA8AAYAAAAHAAUAAAA8AAcAAAAHAAUAAAA8AAgAAAAHAAUAAAA8AAkAAAAHAAUAAAA8AAoAAAAHAAUAAAA8AAsAAAAHAAUAAAA8AAwAAAAHAAUAAAA8APr/AAAHAAUAAAA8APv/AAAHAAUAAAA8APz/AAAHAAUAAAA8AP3/AAAHAAUAAAA8AP7/AAAHAAUAAAA8AP//AAAHAAUAAAA7AAAAAAAHAAUAAAA7AAEAAAAHAAUAAAA7AAIAAAAHAAUAAAA7AAMAAAAHAAUAAAA7AAQAAAAHAAUAAAA7AAUAAAAHAAUAAAA7AAYAAAAHAAUAAAA7AAcAAAAHAAUAAAA7AAgAAAAHAAUAAAA7AAkAAAAHAAUAAAA7AAoAAAAHAAUAAAA7AAsAAAAHAAUAAAA7AAwAAAAHAAUAAAA7AA0AAAAHAAUAAAA7AA4AAAAHAAUAAAA7AA8AAAAHAAUAAAA7ABAAAAAHAAUAAAA7ABEAAAAHAAUAAAA7ABIAAAAHAAUAAAA8AA0AAAAHAAUAAAA8AA4AAAAHAAUAAAA8AA8AAAAHAAUAAAA8ABAAAAAHAAUAAAA8ABEAAAAHAAUAAAA8ABIAAAAHAAUAAAA9APr/AAAHAAUAAAA9APv/AAAHAAUAAAA9APz/AAAHAAUAAAA9AP3/AAAHAAUAAAA9AP7/AAAHAAUAAAA9AP//AAAHAAUAAAA9AAAAAAAHAAUAAAA9AAEAAAAHAAUAAAA9AAIAAAAHAAUAAAA9AAMAAAAHAAUAAAA9AAQAAAAHAAUAAAA9AAUAAAAHAAUAAAA9AAYAAAAHAAUAAAA9AAcAAAAHAAUAAAA9AAgAAAAHAAUAAAA9AAkAAAAHAAUAAAA9AAoAAAAHAAUAAAA9AAsAAAAHAAUAAAA9AAwAAAAHAAUAAAA9AA0AAAAHAAUAAAA+AA0AAAAHAAUAAAA+AA4AAAAHAAUAAAA+AA8AAAAHAAUAAAA+ABAAAAAHAAUAAAA9ABAAAAAHAAUAAAA9ABEAAAAHAAUAAAA9ABIAAAAHAAUAAAA+ABIAAAAHAAUAAAA+ABEAAAAHAAUAAAA+AAwAAAAHAAUAAAA+AAsAAAAHAAUAAAA+AAoAAAAHAAUAAAA+AAkAAAAHAAUAAAA+AAgAAAAHAAUAAAA+AAcAAAAHAAUAAAA+AAYAAAAHAAUAAAA+AAUAAAAHAAUAAAA+AAQAAAAHAAUAAAA+AAMAAAAHAAUAAAA+AAIAAAAHAAUAAAA+AAEAAAAHAAUAAAA+AAAAAAAHAAUAAAA+AP//AAAHAAUAAAA+AP7/AAAHAAUAAAA+AP3/AAAHAAUAAAA+APz/AAAHAAUAAAA+APv/AAAHAAUAAAA+APr/AAAHAAUAAAA9AA4AAAAHAAUAAAA9AA8AAAAHAAUAAAD0//r/AAAHAAUAAAD0//v/AAAHAAUAAAD0//z/AAAHAAUAAAD0//3/AAAHAAUAAAD0//7/AAAHAAUAAAD0////AAAHAAUAAAD0/wAAAAAHAAUAAAD0/wEAAAAHAAUAAAD0/wIAAAAHAAUAAAD0/wMAAAAHAAUAAAD0/wQAAAAHAAUAAAD0/wUAAAAHAAUAAAD0/wYAAAAHAAUAAAD0/wcAAAAHAAUAAAD0/wgAAAAHAAUAAAD0/wkAAAAHAAUAAAD0/woAAAAHAAUAAAD0/wsAAAAHAAUAAAD0/wwAAAAHAAUAAAD0/w0AAAAHAAUAAAD0/w4AAAAHAAUAAAD0/w8AAAAHAAUAAAD0/xAAAAAHAAUAAAD0/xEAAAAHAAUAAAD0/xIAAAAHAAUAAAD+/wEAAAAGAAUAAAD+/wIAAAAGAAUAAAD+/wMAAAAGAAUAAAD+/wQAAAAGAAUAAAAXAAMAAAAHAAQAAAAWAAQAAAAGAAQAAAAXAAQAAAAGAAUAAAAYAAQAAAAIAAQAAAAZAAQAAAARAAEAAAAaAAQAAAATAAEAAAD0/xMAAAAHAAUAAAD1/xMAAAAHAAUAAAD2/xMAAAAHAAUAAAD3/xMAAAAHAAUAAAD4/xMAAAAHAAUAAAD5/xMAAAAHAAUAAAD6/xMAAAAHAAUAAAD7/xMAAAAHAAUAAAD8/xMAAAAHAAUAAAD9/xMAAAAHAAUAAAD+/xMAAAAHAAUAAAD//xMAAAAHAAUAAAAAABMAAAAHAAUAAAABABMAAAAHAAUAAAACABMAAAAHAAUAAAADABMAAAAHAAUAAAAEABMAAAAHAAUAAAAFABMAAAAHAAUAAAAGABMAAAAHAAUAAAAHABMAAAAHAAUAAAAIABMAAAAHAAUAAAAJABMAAAAHAAUAAAAKABMAAAAHAAUAAAALABMAAAAHAAUAAAAMABMAAAAHAAUAAAANABMAAAAHAAUAAAAOABMAAAAHAAUAAAAPABMAAAAHAAUAAAAQABMAAAAHAAUAAAARABMAAAAHAAUAAAASABMAAAAHAAUAAAATABMAAAAHAAUAAAAUABMAAAAHAAUAAAAVABMAAAAHAAUAAAAWABMAAAAHAAUAAAAXABMAAAAHAAUAAAAYABMAAAAHAAUAAAAZABMAAAAHAAUAAAAaABMAAAAHAAUAAAAbABMAAAAHAAUAAAAcABMAAAAHAAUAAAAdABMAAAAHAAUAAAAeABMAAAAHAAUAAAAfABMAAAAHAAUAAAAgABMAAAAHAAUAAAAhABMAAAAHAAUAAAAiABMAAAAHAAUAAAAjABMAAAAHAAUAAAAkABMAAAAHAAUAAAAlABMAAAAHAAUAAAAmABMAAAAHAAUAAAAnABMAAAAHAAUAAAAoABMAAAAHAAUAAAApABMAAAAHAAUAAAAqABMAAAAHAAUAAAArABMAAAAHAAUAAAAsABMAAAAHAAUAAAAtABMAAAAHAAUAAAAuABMAAAAHAAUAAAAvABMAAAAHAAUAAAAwABMAAAAHAAUAAAAxABMAAAAHAAUAAAAyABMAAAAHAAUAAAAzABMAAAAHAAUAAAA0ABMAAAAHAAUAAAA1ABMAAAAHAAUAAAA2ABMAAAAHAAUAAAA3ABMAAAAHAAUAAAA4ABMAAAAHAAUAAAA5ABMAAAAHAAUAAAA6ABMAAAAHAAUAAAA7ABMAAAAHAAUAAAA8ABMAAAAHAAUAAAA9ABMAAAAHAAUAAAA+ABMAAAAHAAUAAAA/APr/AAAHAAUAAAA/APv/AAAHAAUAAAA/APz/AAAHAAUAAAA/AP3/AAAHAAUAAAA/AP7/AAAHAAUAAAA/AP//AAAHAAUAAAA/AAAAAAAHAAUAAAA/AAEAAAAHAAUAAAA/AAIAAAAHAAUAAAA/AAMAAAAHAAUAAAA/AAQAAAAHAAUAAAA/AAUAAAAHAAUAAAA/AAYAAAAHAAUAAAA/AAcAAAAHAAUAAAA/AAgAAAAHAAUAAAA/AAkAAAAHAAUAAAA/AAoAAAAHAAUAAAA/AAsAAAAHAAUAAAA/AAwAAAAHAAUAAAA/AA0AAAAHAAUAAAA/AA4AAAAHAAUAAAA/AA8AAAAHAAUAAAA/ABAAAAAHAAUAAAA/ABEAAAAHAAUAAAA/ABIAAAAHAAUAAAA/ABMAAAAHAAUAAABAAPr/AAAHAAUAAABAAPv/AAAHAAUAAABAAPz/AAAHAAUAAABAAP3/AAAHAAUAAABAAP7/AAAHAAUAAABAAP//AAAHAAUAAABAAAAAAAAHAAUAAABAAAEAAAAHAAUAAABAAAIAAAAHAAUAAABAAAMAAAAHAAUAAABAAAQAAAAHAAUAAABAAAUAAAAHAAUAAABAAAYAAAAHAAUAAABAAAcAAAAHAAUAAABAAAgAAAAHAAUAAABAAAkAAAAHAAUAAABAAAoAAAAHAAUAAABAAAsAAAAHAAUAAABAAAwAAAAHAAUAAABAAA0AAAAHAAUAAABAAA4AAAAHAAUAAABAAA8AAAAHAAUAAABAABAAAAAHAAUAAABAABEAAAAHAAUAAABAABIAAAAHAAUAAABAABMAAAAHAAUAAAAxAAkAAAAHAAQAAAAwAAkAAAAGAAQAAAA=") +tile_set = SubResource("TileSet_r2lpe") + +[node name="Player" parent="Scene Objects" unique_id=27411378 instance=ExtResource("4_u7dy2")] +position = Vector2(84, 534) + +[node name="Collectables group" type="Node" parent="Scene Objects" unique_id=1425887802] + +[node name="collectable" parent="Scene Objects/Collectables group" unique_id=1952876866 instance=ExtResource("5_qx6jj")] +position = Vector2(288, 521) + +[node name="collectable2" parent="Scene Objects/Collectables group" unique_id=1387095530 instance=ExtResource("5_qx6jj")] +position = Vector2(471, 480) + +[node name="collectable4" parent="Scene Objects/Collectables group" unique_id=1705955891 instance=ExtResource("5_qx6jj")] +position = Vector2(615, 479) + +[node name="collectable6" parent="Scene Objects/Collectables group" unique_id=688621510 instance=ExtResource("5_qx6jj")] +position = Vector2(885, 379) + +[node name="collectable7" parent="Scene Objects/Collectables group" unique_id=663394560 instance=ExtResource("5_qx6jj")] +position = Vector2(741, 232) + +[node name="collectable8" parent="Scene Objects/Collectables group" unique_id=1647157939 instance=ExtResource("5_qx6jj")] +position = Vector2(571, 185) + +[node name="collectable9" parent="Scene Objects/Collectables group" unique_id=425412509 instance=ExtResource("5_qx6jj")] +position = Vector2(309, 336) + +[node name="collectable11" parent="Scene Objects/Collectables group" unique_id=1634953575 instance=ExtResource("5_qx6jj")] +position = Vector2(15, 233) + +[node name="collectable12" parent="Scene Objects/Collectables group" unique_id=187681065 instance=ExtResource("5_qx6jj")] +position = Vector2(18, 37) + +[node name="collectable13" parent="Scene Objects/Collectables group" unique_id=2127486282 instance=ExtResource("5_qx6jj")] +position = Vector2(238, 144) + +[node name="collectable14" parent="Scene Objects/Collectables group" unique_id=1048711065 instance=ExtResource("5_qx6jj")] +position = Vector2(500, 41) + +[node name="collectable15" parent="Scene Objects/Collectables group" unique_id=1495650437 instance=ExtResource("5_qx6jj")] +position = Vector2(1106, 100) + +[node name="collectable17" parent="Scene Objects/Collectables group" unique_id=1885430398 instance=ExtResource("5_qx6jj")] +position = Vector2(882, 50) + +[node name="collectable21" parent="Scene Objects/Collectables group" unique_id=824705415 instance=ExtResource("5_qx6jj")] +position = Vector2(781, 521) + +[node name="collectable3" parent="Scene Objects/Collectables group" unique_id=1798747316 instance=ExtResource("5_qx6jj")] +position = Vector2(1237, 428) + +[node name="collectable5" parent="Scene Objects/Collectables group" unique_id=1720268530 instance=ExtResource("5_qx6jj")] +position = Vector2(1510, 336) + +[node name="collectable10" parent="Scene Objects/Collectables group" unique_id=1998907283 instance=ExtResource("5_qx6jj")] +position = Vector2(2031, 267) + +[node name="collectable16" parent="Scene Objects/Collectables group" unique_id=1233356969 instance=ExtResource("5_qx6jj")] +position = Vector2(1933, 90) + +[node name="collectable19" parent="Scene Objects/Collectables group" unique_id=2083004520 instance=ExtResource("5_qx6jj")] +position = Vector2(2480, 187) + +[node name="collectable20" parent="Scene Objects/Collectables group" unique_id=972033160 instance=ExtResource("5_qx6jj")] +position = Vector2(2152, 87) + +[node name="collectable22" parent="Scene Objects/Collectables group" unique_id=1410249127 instance=ExtResource("5_qx6jj")] +position = Vector2(1623, 192) + +[node name="collectable18" parent="Scene Objects/Collectables group" unique_id=694030502 instance=ExtResource("5_qx6jj")] +position = Vector2(2353, 380) + +[node name="collectable23" parent="Scene Objects/Collectables group" unique_id=651826556 instance=ExtResource("5_qx6jj")] +position = Vector2(2054, 485) + +[node name="collectable24" parent="Scene Objects/Collectables group" unique_id=1565195201 instance=ExtResource("5_qx6jj")] +position = Vector2(1657, 463) + +[node name="collectable25" parent="Scene Objects/Collectables group" unique_id=1758055070 instance=ExtResource("5_qx6jj")] +position = Vector2(1502, 61) + +[node name="collectable26" parent="Scene Objects/Collectables group" unique_id=1552571314 instance=ExtResource("5_qx6jj")] +position = Vector2(573, 581) + +[node name="collectable27" parent="Scene Objects/Collectables group" unique_id=185059 instance=ExtResource("5_qx6jj")] +position = Vector2(1025, 547) + +[node name="collectable28" parent="Scene Objects/Collectables group" unique_id=1135869839 instance=ExtResource("5_qx6jj")] +position = Vector2(1382, 583) + +[node name="Finish" parent="Scene Objects" unique_id=1650034357 instance=ExtResource("6_spe8i")] +texture_filter = 1 +position = Vector2(1870, 64) + +[node name="Enemies" type="Node" parent="Scene Objects" unique_id=326378353] + +[node name="GreenSlime" parent="Scene Objects/Enemies" unique_id=1004748973 instance=ExtResource("8_ujv8w")] +position = Vector2(474, 622) + +[node name="GreenSlime2" parent="Scene Objects/Enemies" unique_id=651889183 instance=ExtResource("8_ujv8w")] +position = Vector2(456, 524) + +[node name="GreenSlime3" parent="Scene Objects/Enemies" unique_id=1132700626 instance=ExtResource("8_ujv8w")] +position = Vector2(867, 620) + +[node name="GreenSlime4" parent="Scene Objects/Enemies" unique_id=1684693083 instance=ExtResource("8_ujv8w")] +position = Vector2(1270, 621) + +[node name="GreenSlime5" parent="Scene Objects/Enemies" unique_id=1890800734 instance=ExtResource("8_ujv8w")] +position = Vector2(2035, 140) + +[node name="GreenSlime6" parent="Scene Objects/Enemies" unique_id=2126194656 instance=ExtResource("8_ujv8w")] +position = Vector2(2001, 620) + +[node name="GreenSlime7" parent="Scene Objects/Enemies" unique_id=278893156 instance=ExtResource("8_ujv8w")] +position = Vector2(455, 236) + +[node name="GreenSlime8" parent="Scene Objects/Enemies" unique_id=930970138 instance=ExtResource("8_ujv8w")] +position = Vector2(1317, 140) diff --git a/src/world/levels/level2.tscn b/src/world/levels/level2.tscn new file mode 100644 index 0000000..b6eb284 --- /dev/null +++ b/src/world/levels/level2.tscn @@ -0,0 +1,324 @@ +[gd_scene format=4 uid="uid://bij5pmaxb2a5q"] + +[ext_resource type="Script" uid="uid://ciqwux86vhm1w" path="res://world/levels/level.gd" id="1_nc7ty"] +[ext_resource type="Texture2D" uid="uid://bryutm3lyetn6" path="res://assets/sprites/Brown.png" id="2_nc7ty"] +[ext_resource type="Texture2D" uid="uid://bnoowio0hp7o2" path="res://assets/sprites/Terrain (16x16).png" id="3_n14ur"] +[ext_resource type="PackedScene" uid="uid://d0gicsksxcad" path="res://world/characters/player.tscn" id="4_koccg"] +[ext_resource type="PackedScene" uid="uid://bu8800vy3b34a" path="res://world/objects/collectable.tscn" id="5_by7u7"] +[ext_resource type="PackedScene" uid="uid://cqrbnj6mscgu2" path="res://world/objects/finish.tscn" id="6_6y2gy"] +[ext_resource type="PackedScene" uid="uid://pjv6r6e0wjdy" path="res://ui/exit_scene.tscn" id="7_bed6f"] +[ext_resource type="PackedScene" uid="uid://bqxxd2tvcjymk" path="res://world/characters/enemies/green_slime.tscn" id="7_nc7ty"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_hrhtv"] +texture = ExtResource("3_n14ur") +0:0/0 = 0 +1:0/0 = 0 +2:0/0 = 0 +3:0/0 = 0 +4:0/0 = 0 +6:0/0 = 0 +6:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +7:0/0 = 0 +7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +8:0/0 = 0 +8:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +9:0/0 = 0 +9:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +10:0/0 = 0 +10:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +12:0/0 = 0 +13:0/0 = 0 +14:0/0 = 0 +15:0/0 = 0 +17:0/0 = 0 +17:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3.2374563, -8, -3.057598) +18:0/0 = 0 +18:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3.2374563, -8, -3.057598) +19:0/0 = 0 +19:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3.2374563, -8, -3.057598) +0:1/0 = 0 +1:1/0 = 0 +2:1/0 = 0 +3:1/0 = 0 +4:1/0 = 0 +6:1/0 = 0 +6:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +7:1/0 = 0 +7:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +8:1/0 = 0 +8:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +9:1/0 = 0 +9:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +10:1/0 = 0 +10:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +12:1/0 = 0 +13:1/0 = 0 +14:1/0 = 0 +15:1/0 = 0 +17:1/0 = 0 +17:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3.2374563, -8, -3.057598) +18:1/0 = 0 +18:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3.2374563, -8, -3.057598) +19:1/0 = 0 +19:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3.2374563, -8, -3.057598) +0:2/0 = 0 +1:2/0 = 0 +2:2/0 = 0 +6:2/0 = 0 +6:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +7:2/0 = 0 +7:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +8:2/0 = 0 +8:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +13:2/0 = 0 +14:2/0 = 0 +15:2/0 = 0 +17:2/0 = 0 +17:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3.2374563, -8, -3.057598) +18:2/0 = 0 +18:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3.2374563, -8, -3.057598) +19:2/0 = 0 +19:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3.2374563, -8, -3.057598) +0:4/0 = 0 +1:4/0 = 0 +2:4/0 = 0 +3:4/0 = 0 +4:4/0 = 0 +6:4/0 = 0 +6:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +7:4/0 = 0 +7:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +8:4/0 = 0 +8:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +9:4/0 = 0 +9:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +10:4/0 = 0 +10:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +12:4/0 = 0 +13:4/0 = 0 +14:4/0 = 0 +15:4/0 = 0 +17:4/0 = 0 +18:4/0 = 0 +19:4/0 = 0 +20:4/0 = 0 +21:4/0 = 0 +0:5/0 = 0 +1:5/0 = 0 +2:5/0 = 0 +3:5/0 = 0 +4:5/0 = 0 +6:5/0 = 0 +6:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +7:5/0 = 0 +7:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +8:5/0 = 0 +8:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +9:5/0 = 0 +9:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +10:5/0 = 0 +10:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +12:5/0 = 0 +13:5/0 = 0 +14:5/0 = 0 +15:5/0 = 0 +17:5/0 = 0 +18:5/0 = 0 +19:5/0 = 0 +20:5/0 = 0 +21:5/0 = 0 +0:6/0 = 0 +1:6/0 = 0 +2:6/0 = 0 +6:6/0 = 0 +6:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +7:6/0 = 0 +7:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +8:6/0 = 0 +8:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +13:6/0 = 0 +14:6/0 = 0 +15:6/0 = 0 +17:6/0 = 0 +18:6/0 = 0 +19:6/0 = 0 +0:8/0 = 0 +0:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +1:8/0 = 0 +1:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +2:8/0 = 0 +2:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +3:8/0 = 0 +4:8/0 = 0 +6:8/0 = 0 +7:8/0 = 0 +8:8/0 = 0 +9:8/0 = 0 +10:8/0 = 0 +12:8/0 = 0 +13:8/0 = 0 +14:8/0 = 0 +15:8/0 = 0 +17:8/0 = 0 +18:8/0 = 0 +19:8/0 = 0 +20:8/0 = 0 +0:9/0 = 0 +0:9/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +1:9/0 = 0 +2:9/0 = 0 +2:9/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +3:9/0 = 0 +4:9/0 = 0 +6:9/0 = 0 +7:9/0 = 0 +8:9/0 = 0 +9:9/0 = 0 +10:9/0 = 0 +12:9/0 = 0 +13:9/0 = 0 +14:9/0 = 0 +15:9/0 = 0 +17:9/0 = 0 +18:9/0 = 0 +19:9/0 = 0 +20:9/0 = 0 +0:10/0 = 0 +0:10/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +1:10/0 = 0 +1:10/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +2:10/0 = 0 +2:10/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +6:10/0 = 0 +7:10/0 = 0 +8:10/0 = 0 +13:10/0 = 0 +14:10/0 = 0 +15:10/0 = 0 +18:10/0 = 0 +19:10/0 = 0 +20:10/0 = 0 + +[sub_resource type="TileSet" id="TileSet_r2lpe"] +physics_layer_0/collision_layer = 1 +sources/0 = SubResource("TileSetAtlasSource_hrhtv") + +[node name="Level2" type="Node" unique_id=2113963486] +script = ExtResource("1_nc7ty") + +[node name="Scene Objects" type="Node" parent="." unique_id=1316014248] + +[node name="TextureRect" type="TextureRect" parent="Scene Objects" unique_id=566665105] +texture_filter = 1 +offset_left = -30.0 +offset_top = 3.0 +offset_right = 2571.0 +offset_bottom = 637.0 +texture = ExtResource("2_nc7ty") +stretch_mode = 1 + +[node name="MapLayer" type="TileMapLayer" parent="Scene Objects" unique_id=566944532] +texture_filter = 1 +use_parent_material = true +scale = Vector2(3, 3) +tile_map_data = PackedByteArray("AAABAA0AAAABAAgAAAAWAA0AAAABAAgAAAAXAA0AAAABAAgAAAAYAA0AAAABAAgAAAAVAA0AAAABAAgAAAAUAA0AAAABAAgAAAATAA0AAAABAAgAAAASAA0AAAABAAgAAAARAA0AAAABAAgAAAAQAA0AAAABAAgAAAAPAA0AAAABAAgAAAAOAA0AAAABAAgAAAANAA0AAAABAAgAAAAMAA0AAAABAAgAAAALAA0AAAABAAgAAAAKAA0AAAABAAgAAAAJAA0AAAABAAgAAAAIAA0AAAABAAgAAAAHAA0AAAABAAgAAAAGAA0AAAABAAgAAAAFAA0AAAABAAgAAAAEAA0AAAABAAgAAAADAA0AAAABAAgAAAACAA0AAAABAAgAAAD//wwAAAACAAkAAAD//wsAAAACAAkAAAD//woAAAACAAkAAAD//wkAAAACAAkAAAD//wgAAAACAAkAAAD//wcAAAACAAkAAAD//wYAAAACAAkAAAD/////AAACAAgAAFAAAP//AAABAAoAAAABAP//AAABAAoAAAACAP//AAABAAoAAAADAP//AAABAAoAAAAEAP//AAABAAoAAAAFAP//AAABAAoAAAAGAP//AAABAAoAAAAHAP//AAABAAoAAAAIAP//AAABAAoAAAAJAP//AAABAAoAAAAKAP//AAABAAoAAAALAP//AAABAAoAAAAMAP//AAABAAoAAAANAP//AAABAAoAAAAOAP//AAABAAoAAAAPAP//AAABAAoAAAAQAP//AAABAAoAAAARAP//AAABAAoAAAASAP//AAABAAoAAAATAP//AAABAAoAAAAUAP//AAABAAoAAAAVAP//AAABAAoAAAAWAP//AAABAAoAAAAXAP//AAABAAoAAAAYAP//AAABAAoAAAAZAP//AAABAAoAAAAaAP//AAABAAoAAAAbAP//AAABAAoAAAAcAP//AAABAAoAAAAdAP//AAABAAoAAAAeAP//AAABAAoAAAAfAP//AAABAAoAAAAgAP//AAABAAoAAAAhAP//AAABAAoAAAAiAP//AAABAAoAAAAjAP//AAABAAoAAAAkAP//AAABAAoAAAAlAP//AAABAAoAAAAmAP//AAABAAoAAAAnAP//AAABAAoAAAAoAP//AAABAAoAAAApAP//AAABAAoAAAAqAP//AAABAAoA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AAAfAA8AAAAEAAgAAAATAA8AAAADAAgAAAASAA8AAAAHAAYAADARAA8AAAAHAAYAADAQAA8AAAAHAAYAADAPAA8AAAAHAAYAADAOAA8AAAAHAAYAADANAA8AAAAEAAgAAAAMAA8AAAADAAgAAAALAA8AAAAHAAYAADAKAA8AAAAHAAYAADAJAA8AAAAHAAYAADAIAA8AAAAHAAYAADAHAA8AAAAHAAYAADAGAA8AAAAHAAYAADAFAA8AAAAEAAgAAAAEAA8AAAADAAgAAAADAA8AAAAEAAgAAAACAA8AAAADAAgAAAABAA8AAAAHAAYAADAAAA8AAAAHAAYAADD//w8AAAAEAAkAAAD+/w8AAAADAAkAAAD9/w8AAAAHAAUAAAD9/w4AAAAHAAYAAGD+/w4AAAADAAgAAAD+/w0AAAABAAkAAAD+/wwAAAABAAkAAAD+/wsAAAABAAkAAAD+/woAAAABAAkAAAD+/wkAAAABAAkAAAD+/wgAAAABAAkAAAD+/wcAAAABAAkAAAD+/wYAAAABAAkAAAD+/wUAAAABAAkAAAD9/wUAAAAHAAYAAGD9/wQAAAAHAAYAAGD9/wMAAAADAAkAAAD9/wIAAAADAAgAAAD9/wEAAAAHAAYAAGD+/wAAAAABAAkAAAD+////AAABAAkAAAD+//7/AAABAAkAAAD9//7/AAAHAAYAAGD9////AAAEAAgAAAD9/wAAAAAEAAkAAAD9/wYAAAAEAAgAAAD9/wcAAAAEAAkAAAD9/wgAAAAHAAYAAGD9/wkAAAAHAAYAAGD9/woAAAAHAAYAAGD9//3/AAAHAAUAAAD+//3/AAAHAAYAAAD///3/AAAHAAYAAAAAAP3/AAADAAkAAAABAP3/AAAEAAkAAAACAP3/AAADAAkAAAADAP3/AAAEAAkAAAAEAP3/AAAHAAYAAAAFAP3/AAAHAAYAAAAGAP3/AAADAAgAAAAHAP3/AAAEAAgAAAAIAP3/AAAHAAYAAAAJAP3/AAAHAAYAAAAKAP3/AAAHAAYAAAALAP3/AAAHAAYAAAAMAP3/AAADAAkAAAANAP3/AAAEAAkAAAAOAP3/AAAHAAYAAAAPAP3/AAAHAAYAAAAQAP3/AAAHAAYAAAARAP3/AAAHAAYAAAASAP3/AAAHAAYAAAATAP3/AAADAAgAAAAUAP3/AAAEAAgA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AAD8/wIAAAAHAAUAAAD8/wMAAAAHAAUAAAD8/wQAAAAHAAUAAAD8/wUAAAAHAAUAAAD8/wYAAAADAAgAAAD7/wYAAAAHAAUAAAD7/wcAAAAHAAUAAAD7/wgAAAAHAAUAAAD7/wkAAAAHAAUAAAD7/woAAAAHAAUAAAD7/wsAAAAHAAUAAAD8/wsAAAAHAAUAAAD8/woAAAAHAAUAAAD8/wkAAAAHAAUAAAD8/wgAAAAHAAUAAAD8/wcAAAADAAkAAAD7/wUAAAAHAAUAAAD6/wUAAAAHAAUAAAD5/wUAAAAHAAUAAAD4/wUAAAAHAAUAAAD3/wUAAAAHAAUAAAD2/wUAAAAHAAUAAAD2/wQAAAAHAAUAAAD3/wQAAAAHAAUAAAD4/wQAAAAHAAUAAAD5/wQAAAAHAAUAAAD6/wQAAAAHAAUAAAD7/wQAAAAHAAUAAAD6/wMAAAAHAAUAAAD5/wMAAAAHAAUAAAD4/wMAAAAHAAUAAAD3/wMAAAAHAAUAAAD2/wMAAAAHAAUAAAD6/wIAAAAHAAUAAAD7/wIAAAAHAAUAAAD7/wMAAAAHAAUAAAD7/wEAAAAHAAUAAAD6/wEAAAAHAAUAAAD5/wEAAAAHAAUAAAD4/wEAAAAHAAUAAAD3/wIAAAAHAAUAAAD2/wIAAAAHAAUAAAD4/wIAAAAHAAUAAAD5/wIAAAAHAAUAAAD2/wEAAAAHAAUAAAD2/wAAAAAHAAUAAAD3/wAAAAAHAAUAAAD4/wAAAAAHAAUAAAD5/wAAAAAHAAUAAAD6/wAAAAAHAAUAAAD7/wAAAAAHAAUAAAD3/wEAAAAHAAUAAAD7////AAAHAAUAAAD7//7/AAAHAAUAAAD6//7/AAAHAAUAAAD5////AAAHAAUAAAD6////AAAHAAUAAAD4//7/AAAHAAUAAAD5//7/AAAHAAUAAAD7//3/AAAHAAUAAAD6//3/AAAHAAUAAAD4////AAAHAAUAAAD5//3/AAAHAAUAAAD7//z/AAAHAAUAAAD6//z/AAAHAAUAAAD5//z/AAAHAAUAAAD3////AAAHAAUAAAD3//7/AAAHAAUAAAD4//3/AAAHAAUAAAD6//v/AAAHAAUAAAD7//v/AAAHAAUAAAD7//r/AAAHAAUAAAD6//r/AAAHAAUAAAD5//r/AAAHAAUAAAD4//r/AAAHAAUAAAD3//r/AAAHAAUAAAD2//r/AAAHAAUAAAD1//r/AAAHAAUAAAD1//v/AAAHAAUAAAD1//z/AAAHAAUAAAD1//3/AAAHAAUAAAD1//7/AAAHAAUAAAD1////AAAHAAUAAAD2////AAAHAAUAAAD2//7/AAAHAAUAAAD2//3/AAAHAAUAAAD2//z/AAAHAAUAAAD2//v/AAAHAAUAAAD3//v/AAAHAAUAAAD4//v/AAAHAAUAAAD5//v/AAAHAAUAAAD4//z/AAAHAAUAAAD3//z/AAAHAAUAAAD3//3/AAAHAAUAAAD1/wAAAAAHAAUAAAD1/wEAAAAHAAUAAAD1/wIAAAAHAAUAAAD1/wMAAAAHAAUAAAD1/wQAAAAHAAUAAAD2/wYAAAAHAAUAAAD2/wcAAAAHAAUAAAD2/wgAAAAHAAUAAAD2/wkAAAAHAAUAAAD2/woAAAAHAAUAAAD2/wsAAAAHAAUAAAD2/wwAAAAHAAUAAAD2/w0AAAAHAAUAAAD1/wUAAAAHAAUAAAD1/wYAAAAHAAUAAAD1/wcAAAAHAAUAAAD1/wgAAAAHAAUAAAD1/wkAAAAHAAUAAAD1/woAAAAHAAUAAAD1/wsAAAAHAAUAAAD1/wwAAAAHAAUAAAD1/w0AAAAHAAUAAAD1/w4AAAAHAAUAAAD1/w8AAAAHAAUAAAD1/xAAAAAHAAUAAAD1/xEAAAAHAAUAAAD1/xIAAAAHAAUAAAD3/wYAAAAHAAUAAAD3/wcAAAAHAAUAAAD3/wgAAAAHAAUAAAD4/wkAAAAHAAUAAAD4/wgAAAAHAAUAAAD5/wgAAAAHAAUAAAD5/wcAAAAHAAUAAAD6/wcAAAAHAAUAAAD5/wYAAAAHAAUAAAD4/wcAAAAHAAUAAAD4/wYAAAAHAAUAAAD6/wYAAAAHAAUAAAD5/wkAAAAHAAUAAAD5/woAAAAHAAUAAAD5/wsAAAAHAAUAAAD5/wwAAAAHAAUAAAD5/w0AAAAHAAUAAAD4/w0AAAAHAAUAAAD4/w4AAAAHAAUAAAD4/wwAAAAHAAUAAAD4/wsAAAAHAAUAAAD3/woAAAAHAAUAAAD3/wkAAAAHAAUAAAD3/wsAAAAHAAUAAAD3/wwAAAAHAAUAAAD3/w0AAAAHAAUAAAD5/w4AAAAHAAUAAAD4/woAAAAHAAUAAAD6/wgAAAAHAAUAAAD6/wkAAAAHAAUAAAD6/woAAAAHAAUAAAD6/wsAAAAHAAUAAAD6/wwAAAAHAAUAAAD6/w0AAAAHAAUAAAD6/w4AAAAHAAUAAAD6/w8AAAAHAAUAAAD6/xAAAAAHAAUAAAD5/w8AAAAHAAUAAAD4/xAAAAAHAAUAAAD4/xEAAAAHAAUAAAD4/w8AAAAHAAUAAAD3/w4AAAAHAAUAAAD3/w8AAAAHAAUAAAD2/xAAAAAHAAUAAAD2/w8AAAAHAAUAAAD2/w4AAAAHAAUAAAD2/xEAAAAHAAUAAAD2/xIAAAAHAAUAAAD3/xAAAAAHAAUAAAD3/xEAAAAHAAUAAAD3/xIAAAAHAAUAAAD4/xIAAAAHAAUAAAD5/xAAAAAHAAUAAAD5/xEAAAAHAAUAAAD5/xIAAAAHAAUAAAD6/xIAAAAHAAUAAAD6/xEAAAAHAAUAAAD7/w8AAAAHAAUAAAD7/w4AAAAHAAUAAAD7/w0AAAAHAAUAAAD7/wwAAAAHAAUAAAD9/wsAAAAHAAYAAGD9/wwAAAAEAAgAAAD8/wwAAAADAAgAAAD8/w0AAAADAAkAAAD8/w4AAAAHAAUAAAD9/w0AAAAEAAkAAAD8/w8AAAAHAAUAAAD7/xAAAAAHAAUAAAD7/xEAAAAHAAUAAAD7/xIAAAAHAAUAAAD8/xIAAAAHAAUAAAD9/xIAAAAHAAUAAAD+/xIAAAAHAAUAAAD8/xAAAAAHAAUAAAD9/xAAAAAHAAUAAAD+/xAAAAAHAAUAAAD//xAAAAAHAAUAAAAAABAAAAAHAAUAAAABABAAAAAHAAUAAAACABAAAAADAAkAAAADABAAAAAEAAkAAAAEABAAAAADAAkAAAAOABAAAAAHAAUAAAAPABAAAAAHAAUAAAAQABAAAAAHAAUAAAARABAAAAAHAAUAAAASABAAAAAHAAUAAAAPABEAAAAHAAUAAAAOABEAAAAHAAUAAAANABEAAAAHAAUAAAAMABEAAAAHAAUAAAALABEAAAAHAAUAAAAKABEAAAAHAAUAAAAJABEAAAAHAAUAAAAIABEAAAAHAAUAAAAHABEAAAAHAAUAAAAGABAAAAAHAAUAAAAFABAAAAAEAAkAAAAHABAAAAAHAAUAAAAIABAAAAAHAAUAAAAJABAAAAAHAAUAAAAKABAAAAAHAAUAAAALABAAAAAHAAUAAAAMABAAAAADAAkAAAANABAAAAAEAAkAAAAAABEAAAAHAAUAAAD//xEAAAAHAAUAAAD+/xEAAAAHAAUAAAD9/xEAAAAHAAUAAAD8/xEAAAAHAAUAAAABABEAAAAHAAUAAAACABEAAAAHAAUAAAADABEAAAAHAAUAAAAEABEAAAAHAAUAAAAFABEAAAAHAAUAAAAGABEAAAAHAAUAAAABABIAAAAHAAUAAAAAABIAAAAHAAUAAAD//xIAAAAHAAUAAAACABIAAAAHAAUAAAADABIAAAAHAAUAAAAEABIAAAAHAAUAAAALABIAAAAHAAUAAAAMABIAAAAHAAUAAAANABIAAAAHAAUAAAAKABIAAAAHAAUAAAAJABIAAAAHAAUAAAAIABIAAAAHAAUAAAAHABIAAAAHAAUAAAAGABIAAAAHAAUAAAAFABIAAAAHAAUAAAAOABIAAAAHAAUAAAAPABIAAAAHAAUAAAAQABIAAAAHAAUAAAARABIAAAADAAkAAAASABIAAAAEAAkAAAASABEAAAAEAAgAAAATABEAAAADAAgAAAARABEAAAADAAgAAAAQABEAAAAHAAUAAAAUABEAAAAEAAgAAAAVABEAAAAHAAUAAAAWABEAAAAHAAUAAAAXABEAAAAHAAUAAAAYABEAAAAHAAUAAAAZABEAAAAHAAUAAAAaABEAAAAHAAUAAAAbABEAAAAHAAUAAAAcABEAAAADAAkAAAAdABEAAAAEAAkAAAAeABEAAAAHAAUAAAAfABEAAAAHAAUAAAAgABEAAAAHAAUAAAAhABEAAAAHAAUAAAAiABEAAAAHAAUAAAAjABEAAAAHAAUAAAAkABEAAAAHAAUAAAAlABEAAAAHAAUAAAAmABEAAAAHAAUAAAAnABEAAAAHAAUAAAAoABEAAAAHAAUAAAApABEAAAAHAAUAAAAqABEAAAAHAAUAAAArABEAAAAHAAUAAAATABIAAAADAAkAAAAUABIAAAAEAAkAAAAVABIAAAAHAAUAAAAWABIAAAAHAAUAAAAXABIAAAAHAAUAAAAYABIAAAAHAAUAAAAZABIAAAAHAAUAAAAaABIAAAAHAAUAAAAbABIAAAAHAAUAAAAcABIAAAAHAAUAAAAdABIAAAAHAAUAAAAeABIAAAAHAAUAAAAfABIAAAAHAAUAAAAgABIAAAAHAAUAAAAhABIAAAAHAAUAAAAiABIAAAAHAAUAAAAjABIAAAAHAAUAAAAkABIAAAAHAAUAAAAlABIAAAAHAAUAAAAmABIAAAAHAAUAAAAnABIAAAAHAAUAAAAoABIAAAAHAAUAAAApABIAAAAHAAUAAAAqABIAAAAHAAUAAAArABIAAAAHAAUAAAAsABIAAAAHAAUAAAAtABIAAAAHAAUAAAAuABIAAAAHAAUAAAAsABEAAAAHAAUAAAAtABEAAAAHAAUAAAAuABEAAAAHAAUAAAAvABEAAAAHAAUAAAAwABEAAAAHAAUAAAAxABEAAAAHAAUAAAAyABEAAAAHAAUAAAAzABEAAAAHAAUAAAA0ABEAAAAHAAUAAAA1ABEAAAAHAAUAAAA2ABEAAAAHAAUAAAA3ABEAAAAHAAUAAAAvABIAAAAHAAUAAAAwABIAAAAHAAUAAAAxABIAAAAHAAUAAAAyABIAAAAHAAUAAAAzABIAAAAHAAUAAAA0ABIAAAAHAAUAAAA1ABIAAAAHAAUAAAA2ABIAAAAHAAUAAAA3ABIAAAAHAAUAAAA3AA4AAAADAAkAAAA3AA0AAAADAAgAAAA3AP//AAAHAAYAAFA3AP7/AAAEAAkAAAA4AP7/AAAHAAUAAAA5AP7/AAAHAAUAAAA5AP//AAAHAAUAAAA5AAAAAAAHAAUAAAA5AAEAAAAHAAUAAAA5AAIAAAAHAAUAAAA5AAMAAAAHAAUAAAA5AAQAAAAHAAUAAAA5AAUAAAAHAAUAAAA5AAYAAAAHAAUAAAA5AAcAAAAHAAUAAAA5AAgAAAAHAAUAAAA5AAkAAAADAAgAAAA5AAoAAAADAAkAAAA5AAsAAAAHAAUAAAA5AAwAAAAHAAUAAAA5AA0AAAAHAAUAAAA5AA4AAAAHAAUAAAA5AA8AAAAHAAUAAAA5ABAAAAAHAAUAAAA5ABEAAAAHAAUAAAA5ABIAAAAHAAUAAAA4ABIAAAAHAAUAAAA4ABEAAAAHAAUAAAA4ABAAAAAEAAkAAAA4AA8AAAAEAAgAAAA4AA4AAAAEAAkAAAA4AA0AAAAEAAgAAAA4AAwAAAAEAAkAAAA4AAsAAAAEAAgAAAA4AAoAAAAEAAkAAAA4AAkAAAAEAAgAAAA4AAgAAAAHAAUAAAA4AAcAAAAHAAUAAAA4AAYAAAAHAAUAAAA4AAUAAAAHAAUAAAA4AAQAAAAHAAUAAAA4AAMAAAAHAAUAAAA4AAIAAAAHAAUAAAA4AAEAAAAHAAUAAAA4AAAAAAAHAAUAAAA4AP//AAAHAAUAAAAgAP3/AAADAAkAAAAhAP3/AAAEAAkAAAAiAP3/AAAHAAYAAAAjAP3/AAAHAAYAAAAkAP3/AAAHAAYAAAAlAP3/AAAHAAYAAAAmAP3/AAAHAAYAAAAnAP3/AAAHAAYAAAAoAP3/AAAHAAYAAAApAP3/AAAHAAYAAAAqAP3/AAAHAAYAAAArAP3/AAAHAAYAAAAsAP3/AAAHAAYAAAAtAP3/AAAHAAYAAAAuAP3/AAAHAAYAAAAvAP3/AAADAAkAAAAwAP3/AAAEAAkAAAAxAP3/AAAHAAYAAAAyAP3/AAAHAAYAAAAzAP3/AAAHAAYAAAA0AP3/AAAHAAYAAAA1AP3/AAAHAAYAAAA2AP3/AAADAAgAAAA3AP3/AAAEAAgAAAA4AP3/AAAHAAUAAAA5AP3/AAAHAAUAAAAlAPz/AAAHAAUAAAAmAPz/AAAHAAUAAAAnAPz/AAAHAAUAAAAoAPz/AAADAAkAAAApAPz/AAAEAAkAAAAqAPz/AAAHAAUAAAArAPz/AAAHAAUAAAAsAPz/AAAHAAUAAAAtAPz/AAAHAAUAAAAuAPz/AAAHAAUAAAAvAPz/AAADAAgAAAAwAPz/AAAEAAgAAAAxAPz/AAAHAAUAAAAyAPz/AAAHAAUAAAAzAPz/AAAHAAUAAAA0APz/AAAHAAUAAAA1APz/AAAHAAUAAAA2APz/AAAHAAUAAAA3APz/AAAHAAUAAAA4APz/AAAHAAUAAAA5APz/AAAHAAUAAAAqAPr/AAAHAAUAAAArAPr/AAAHAAUAAAAsAPr/AAAHAAUAAAAtAPr/AAAHAAUAAAAuAPr/AAAHAAUAAAAvAPr/AAAHAAUAAAAwAPr/AAAHAAUAAAAxAPr/AAAHAAUAAAAyAPr/AAAHAAUAAAAzAPr/AAAHAAUAAAA0APr/AAAHAAUAAAA1APr/AAAHAAUAAAA2APr/AAAHAAUAAAA3APr/AAAHAAUAAAA4APr/AAAHAAUAAAA5APr/AAAHAAUAAAA5APv/AAAHAAUAAAA4APv/AAAHAAUAAAA3APv/AAAHAAUAAAA2APv/AAAHAAUAAAA1APv/AAAHAAUAAAA0APv/AAAHAAUAAAAzAPv/AAAHAAUAAAAyAPv/AAAHAAUAAAAxAPv/AAAHAAUAAAAwAPv/AAAHAAUAAAAvAPv/AAAHAAUAAAAuAPv/AAAHAAUAAAAtAPv/AAAHAAUAAAAsAPv/AAAHAAUAAAArAPv/AAAHAAUAAAA6APr/AAAHAAUAAAA6APv/AAAHAAUAAAA6APz/AAAHAAUAAAA6AP3/AAAHAAUAAAA6AP7/AAAHAAUAAAA6AP//AAAHAAUAAAA6AAAAAAAHAAUAAAA6AAEAAAAHAAUAAAA6AAIAAAAHAAUAAAA6AAMAAAAHAAUAAAA6AAQAAAAHAAUAAAA6AAUAAAAHAAUAAAA6AAYAAAAHAAUAAAA6AAcAAAAHAAUAAAA6AAgAAAAHAAUAAAA6AAkAAAAEAAgAAAA6AAoAAAAEAAkAAAA6AAsAAAAHAAUAAAA6AAwAAAAHAAUAAAA6AA0AAAAHAAUAAAA6AA4AAAAHAAUAAAA6AA8AAAAHAAUAAAA6ABAAAAAHAAUAAAA6ABEAAAAHAAUAAAA6ABIAAAAHAAUAAAA7APr/AAAHAAUAAAA7APv/AAAHAAUAAAA7APz/AAAHAAUAAAA7AP3/AAAHAAUAAAA7AP7/AAAHAAUAAAA7AP//AAAHAAUAAAA8AAAAAAAHAAUAAAA8AAEAAAAHAAUAAAA8AAIAAAAHAAUAAAA8AAMAAAAHAAUAAAA8AAQAAAAHAAUAAAA8AAUAAAAHAAUAAAA8AAYAAAAHAAUAAAA8AAcAAAAHAAUAAAA8AAgAAAAHAAUAAAA8AAkAAAAHAAUAAAA8AAoAAAAHAAUAAAA8AAsAAAAHAAUAAAA8AAwAAAAHAAUAAAA8APr/AAAHAAUAAAA8APv/AAAHAAUAAAA8APz/AAAHAAUAAAA8AP3/AAAHAAUAAAA8AP7/AAAHAAUAAAA8AP//AAAHAAUAAAA7AAAAAAAHAAUAAAA7AAEAAAAHAAUAAAA7AAIAAAAHAAUAAAA7AAMAAAAHAAUAAAA7AAQAAAAHAAUAAAA7AAUAAAAHAAUAAAA7AAYAAAAHAAUAAAA7AAcAAAAHAAUAAAA7AAgAAAAHAAUAAAA7AAkAAAAHAAUAAAA7AAoAAAAHAAUAAAA7AAsAAAAHAAUAAAA7AAwAAAAHAAUAAAA7AA0AAAAHAAUAAAA7AA4AAAAHAAUAAAA7AA8AAAAHAAUAAAA7ABAAAAAHAAUAAAA7ABEAAAAHAAUAAAA7ABIAAAAHAAUAAAA8AA0AAAAHAAUAAAA8AA4AAAAHAAUAAAA8AA8AAAAHAAUAAAA8ABAAAAAHAAUAAAA8ABEAAAAHAAUAAAA8ABIAAAAHAAUAAAA9APr/AAAHAAUAAAA9APv/AAAHAAUAAAA9APz/AAAHAAUAAAA9AP3/AAAHAAUAAAA9AP7/AAAHAAUAAAA9AP//AAAHAAUAAAA9AAAAAAAHAAUAAAA9AAEAAAAHAAUAAAA9AAIAAAAHAAUAAAA9AAMAAAAHAAUAAAA9AAQAAAAHAAUAAAA9AAUAAAAHAAUAAAA9AAYAAAAHAAUAAAA9AAcAAAAHAAUAAAA9AAgAAAAHAAUAAAA9AAkAAAAHAAUAAAA9AAoAAAAHAAUAAAA9AAsAAAAHAAUAAAA9AAwAAAAHAAUAAAA9AA0AAAAHAAUAAAA+AA0AAAAHAAUAAAA+AA4AAAAHAAUAAAA+AA8AAAAHAAUAAAA+ABAAAAAHAAUAAAA9ABAAAAAHAAUAAAA9ABEAAAAHAAUAAAA9ABIAAAAHAAUAAAA+ABIAAAAHAAUAAAA+ABEAAAAHAAUAAAA+AAwAAAAHAAUAAAA+AAsAAAAHAAUAAAA+AAoAAAAHAAUAAAA+AAkAAAAHAAUAAAA+AAgAAAAHAAUAAAA+AAcAAAAHAAUAAAA+AAYAAAAHAAUAAAA+AAUAAAAHAAUAAAA+AAQAAAAHAAUAAAA+AAMAAAAHAAUAAAA+AAIAAAAHAAUAAAA+AAEAAAAHAAUAAAA+AAAAAAAHAAUAAAA+AP//AAAHAAUAAAA+AP7/AAAHAAUAAAA+AP3/AAAHAAUAAAA+APz/AAAHAAUAAAA+APv/AAAHAAUAAAA+APr/AAAHAAUAAAA9AA4AAAAHAAUAAAA9AA8AAAAHAAUAAAD0//r/AAAHAAUAAAD0//v/AAAHAAUAAAD0//z/AAAHAAUAAAD0//3/AAAHAAUAAAD0//7/AAAHAAUAAAD0////AAAHAAUAAAD0/wAAAAAHAAUAAAD0/wEAAAAHAAUAAAD0/wIAAAAHAAUAAAD0/wMAAAAHAAUAAAD0/wQAAAAHAAUAAAD0/wUAAAAHAAUAAAD0/wYAAAAHAAUAAAD0/wcAAAAHAAUAAAD0/wgAAAAHAAUAAAD0/wkAAAAHAAUAAAD0/woAAAAHAAUAAAD0/wsAAAAHAAUAAAD0/wwAAAAHAAUAAAD0/w0AAAAHAAUAAAD0/w4AAAAHAAUAAAD0/w8AAAAHAAUAAAD0/xAAAAAHAAUAAAD0/xEAAAAHAAUAAAD0/xIAAAAHAAUAAAD+/wEAAAABAAkAAAD+/wIAAAAEAAgAAAD+/wMAAAAEAAkAAAD+/wQAAAABAAkAAAD0/xMAAAAHAAUAAAD1/xMAAAAHAAUAAAD2/xMAAAAHAAUAAAD3/xMAAAAHAAUAAAD4/xMAAAAHAAUAAAD5/xMAAAAHAAUAAAD6/xMAAAAHAAUAAAD7/xMAAAAHAAUAAAD8/xMAAAAHAAUAAAD9/xMAAAAHAAUAAAD+/xMAAAAHAAUAAAD//xMAAAAHAAUAAAAAABMAAAAHAAUAAAABABMAAAAHAAUAAAACABMAAAAHAAUAAAADABMAAAAHAAUAAAAEABMAAAAHAAUAAAAFABMAAAAHAAUAAAAGABMAAAAHAAUAAAAHABMAAAAHAAUAAAAIABMAAAAHAAUAAAAJABMAAAAHAAUAAAAKABMAAAAHAAUAAAALABMAAAAHAAUAAAAMABMAAAAHAAUAAAANABMAAAAHAAUAAAAOABMAAAAHAAUAAAAPABMAAAAHAAUAAAAQABMAAAAHAAUAAAARABMAAAAHAAUAAAASABMAAAAHAAUAAAATABMAAAAHAAUAAAAUABMAAAAHAAUAAAAVABMAAAAHAAUAAAAWABMAAAAHAAUAAAAXABMAAAAHAAUAAAAYABMAAAAHAAUAAAAZABMAAAAHAAUAAAAaABMAAAAHAAUAAAAbABMAAAAHAAUAAAAcABMAAAAHAAUAAAAdABMAAAAHAAUAAAAeABMAAAAHAAUAAAAfABMAAAAHAAUAAAAgABMAAAAHAAUAAAAhABMAAAAHAAUAAAAiABMAAAAHAAUAAAAjABMAAAAHAAUAAAAkABMAAAAHAAUAAAAlABMAAAAHAAUAAAAmABMAAAAHAAUAAAAnABMAAAAHAAUAAAAoABMAAAAHAAUAAAApABMAAAAHAAUAAAAqABMAAAAHAAUAAAArABMAAAAHAAUAAAAsABMAAAAHAAUAAAAtABMAAAAHAAUAAAAuABMAAAAHAAUAAAAvABMAAAAHAAUAAAAwABMAAAAHAAUAAAAxABMAAAAHAAUAAAAyABMAAAAHAAUAAAAzABMAAAAHAAUAAAA0ABMAAAAHAAUAAAA1ABMAAAAHAAUAAAA2ABMAAAAHAAUAAAA3ABMAAAAHAAUAAAA4ABMAAAAHAAUAAAA5ABMAAAAHAAUAAAA6ABMAAAAHAAUAAAA7ABMAAAAHAAUAAAA8ABMAAAAHAAUAAAA9ABMAAAAHAAUAAAA+ABMAAAAHAAUAAAA/APr/AAAHAAUAAAA/APv/AAAHAAUAAAA/APz/AAAHAAUAAAA/AP3/AAAHAAUAAAA/AP7/AAAHAAUAAAA/AP//AAAHAAUAAAA/AAAAAAAHAAUAAAA/AAEAAAAHAAUAAAA/AAIAAAAHAAUAAAA/AAMAAAAHAAUAAAA/AAQAAAAHAAUAAAA/AAUAAAAHAAUAAAA/AAYAAAAHAAUAAAA/AAcAAAAHAAUAAAA/AAgAAAAHAAUAAAA/AAkAAAAHAAUAAAA/AAoAAAAHAAUAAAA/AAsAAAAHAAUAAAA/AAwAAAAHAAUAAAA/AA0AAAAHAAUAAAA/AA4AAAAHAAUAAAA/AA8AAAAHAAUAAAA/ABAAAAAHAAUAAAA/ABEAAAAHAAUAAAA/ABIAAAAHAAUAAAA/ABMAAAAHAAUAAABAAPr/AAAHAAUAAABAAPv/AAAHAAUAAABAAPz/AAAHAAUAAABAAP3/AAAHAAUAAABAAP7/AAAHAAUAAABAAP//AAAHAAUAAABAAAAAAAAHAAUAAABAAAEAAAAHAAUAAABAAAIAAAAHAAUAAABAAAMAAAAHAAUAAABAAAQAAAAHAAUAAABAAAUAAAAHAAUAAABAAAYAAAAHAAUAAABAAAcAAAAHAAUAAABAAAgAAAAHAAUAAABAAAkAAAAHAAUAAABAAAoAAAAHAAUAAABAAAsAAAAHAAUAAABAAAwAAAAHAAUAAABAAA0AAAAHAAUAAABAAA4AAAAHAAUAAABAAA8AAAAHAAUAAABAABAAAAAHAAUAAABAABEAAAAHAAUAAABAABIAAAAHAAUAAABAABMAAAAHAAUAAAA1AAAAAAAAAAkAAAA1AAEAAAAAAAkAAAA1AAIAAAAAAAkAAAA1AAMAAAAAAAkAAAA1AAQAAAAAAAkAAAA1AAUAAAAAAAkAAAA1AAYAAAAAAAkAAAA1AAcAAAAAAAkAAAA1AAgAAAAAAAkAAAA1AAkAAAAAAAkAAAA1AAoAAAAAAAkAAAA1AAsAAAAAAAkAAAA1AAwAAAAAAAkAAAA2AAAAAAABAAkAAAA2AAEAAAABAAkAAAA2AAIAAAABAAkAAAA2AAMAAAABAAkAAAA2AAQAAAABAAkAAAA2AAUAAAABAAkAAAA2AAYAAAABAAkAAAA2AAcAAAABAAkAAAA2AAgAAAABAAkAAAA2AAkAAAABAAkAAAA2AAoAAAABAAkAAAA2AAsAAAABAAkAAAA2AAwAAAABAAkAAAA3AAAAAAAHAAYAAFA3AAEAAAAHAAYAAFA3AAIAAAAHAAYAAFA3AAMAAAAHAAYAAFA3AAQAAAAHAAYAAFA3AAUAAAAHAAYAAFA3AAYAAAAHAAYAAFA3AAcAAAAHAAYAAFA3AAgAAAAHAAYAAFA3AAkAAAADAAgAAAA3AAoAAAADAAkAAAA3AAsAAAADAAgAAAA3AAwAAAADAAkAAAD//wAAAAACAAkAAAD//wEAAAACAAkAAAD//wIAAAACAAkAAAD//wMAAAACAAkAAAD//wQAAAACAAkAAAD//wUAAAACAAkAAAAAAA0AAAABAAgAAAD//w0AAAACAAgAAAD//w4AAAAEAAgAAAAGAAsAAAAKAAEAAAAGAAwAAAAHAAEAAAAHAAsAAAAJAAEAAAAHAAwAAAAHAAEAAAAIAAsAAAAHAAAAAAAIAAwAAAAIAAEAAAAGAAoAAAAHAAAAAAAHAAoAAAAIAAAAAAAJAAsAAAAIAAAAAAAFAAwAAAAHAAEAAAAMAAoAAAAGAAEAAAANAAoAAAAHAAAAAAANAAsAAAAJAAEAAAANAAwAAAAKAAEAAAAMAAwAAAAJAAEAAAAMAAsAAAAGAAEAAAAMAAkAAAAGAAEAAAANAAkAAAAIAAEAAAALAAgAAAAHAAAAAAAMAAgAAAAIAAAAAAAMAAcAAAAGAAEAAAAMAAYAAAAGAAEAAAANAAYAAAAHAAAAAAANAAcAAAAJAAEAAAANAAgAAAAIAAEAAAAGAAUAAAAGAAAAAAAGAAYAAAAGAAIAAAAHAAUAAAAHAAAAAAAHAAYAAAAIAAIAAAAIAAUAAAAIAAAAAAAAAAYAAAAGAAAAAAAAAAcAAAAGAAEAAAAAAAgAAAAKAAEAAAABAAYAAAAHAAAAAAABAAcAAAAHAAEAAAABAAgAAAAHAAEAAAACAAYAAAAIAAAAAAACAAcAAAAHAAEAAAASAAMAAAAGAAAAAAASAAQAAAAGAAEAAAASAAUAAAAGAAEAAAASAAYAAAAJAAEAAAASAAcAAAAGAAEAAAASAAgAAAAGAAEAAAASAAkAAAAJAAEAAAATAAMAAAAIAAAAAAATAAQAAAAIAAEAAAATAAUAAAAIAAEAAAATAAYAAAAKAAEAAAATAAcAAAAIAAEAAAATAAgAAAAIAAEAAAATAAkAAAAKAAEAAAARAAQAAAARAAIAAAAUAAUAAAARAAIAAAAVAAUAAAASAAIAAAAWAAUAAAATAAIAAAAWAAsAAAAGAAAAAAAWAAwAAAAGAAEAAAAXAAsAAAAHAAAAAAAXAAwAAAAHAAEAAAAYAAsAAAAIAAAAAAAYAAwAAAAIAAEAAAAXAAUAAAAGAAAAAAAXAAYAAAAGAAEAAAAYAAUAAAAHAAAAAAAYAAYAAAAHAAEAAAAZAAUAAAAIAAAAAAAZAAYAAAAIAAEAAAAXAAcAAAAGAAIAAAAYAAcAAAAHAAIAAAAZAAcAAAAIAAIAAAAWAAIAAAARAAIAAAAXAAIAAAASAAIAAAAYAAIAAAATAAIAAAAdAAIAAAAGAAAAAAAdAAMAAAAGAAIAAAAeAAIAAAAIAAAAAAAeAAMAAAAIAAIAAAAcAAcAAAAGAAAAAAAdAAcAAAAHAAAAAAAdAAgAAAAJAAEAAAAeAAcAAAAIAAAAAAAeAAgAAAAKAAEAAAAcAAgAAAAGAAEAAAAbAAwAAAAGAAAAAAAcAAwAAAAHAAAAAAAdAAwAAAAIAAAAAAAvAAwAAAAKAAEAAAAwAAsAAAAJAAEAAAAwAAwAAAAHAAEAAAAxAAsAAAAIAAAAAAAxAAwAAAAHAAEAAAAvAAkAAAAGAAAAAAAvAAoAAAAGAAEAAAAwAAkAAAAIAAEAAAAwAAoAAAAHAAEAAAAxAAoAAAAIAAAAAAA0AAcAAAAHAAAAAAA0AAgAAAAIAAEAAAA0AAkAAAAIAAEAAAAvAAsAAAAGAAEAAAAiAAYAAAARAAIAAAAjAAYAAAASAAIAAAAkAAYAAAATAAIAAAAhAAoAAAAGAAAAAAAiAAoAAAAHAAAAAAAjAAoAAAAIAAAAAAAmAAgAAAAGAAAAAAAnAAgAAAAIAAAAAAArAAkAAAAKAAEAAAArAAoAAAAJAAEAAAArAAsAAAAHAAEAAGArAAwAAAAKAAEAAAAqAAwAAAAHAAAAAAAsAAoAAAAIAAAAAAAqAAkAAAAGAAAAAAAKAAgAAAAGAAAAAAAFAAsAAAAGAAAAAAAuAAwAAAAGAAAAAAAcAAMAAAAGAAAAAAApAAwAAAAHAAAAAAAoAAwAAAAGAAAAAAAUAAkAAAATAAIAAAAyAAwAAAAGAAAAAAAzAAwAAAAHAAAAAAA0AAwAAAAIAAAAAAAzAAcAAAAJAAEAAAAwAAgAAAAIAAAAAAArAAgAAAAHAAAAAAAzAAYAAAAGAAAAAAA0AAYAAAAGAAAAAAAzAAgAAAAHAAEAAAAnAAQAAAAGAAAAAAAoAAQAAAAIAAAAAAAOAAsAAAAIAAAAAAARAAkAAAARAAIAAAAOAAcAAAAIAAAAAAACAAgAAAAHAAEAAAA=") +tile_set = SubResource("TileSet_r2lpe") + +[node name="Player" parent="Scene Objects" unique_id=1204456683 instance=ExtResource("4_koccg")] +position = Vector2(53, 517) + +[node name="Collectables group" type="Node" parent="Scene Objects" unique_id=1320599633] + +[node name="collectable" parent="Scene Objects/Collectables group" unique_id=53413121 instance=ExtResource("5_by7u7")] +position = Vector2(34, 237) + +[node name="collectable2" parent="Scene Objects/Collectables group" unique_id=1869021019 instance=ExtResource("5_by7u7")] +position = Vector2(323, 185) + +[node name="collectable3" parent="Scene Objects/Collectables group" unique_id=1423588268 instance=ExtResource("5_by7u7")] +position = Vector2(310, 424) + +[node name="collectable4" parent="Scene Objects/Collectables group" unique_id=1414105173 instance=ExtResource("5_by7u7")] +position = Vector2(810, 380) + +[node name="collectable5" parent="Scene Objects/Collectables group" unique_id=2132682978 instance=ExtResource("5_by7u7")] +position = Vector2(690, 129) + +[node name="collectable6" parent="Scene Objects/Collectables group" unique_id=1708952179 instance=ExtResource("5_by7u7")] +position = Vector2(883, 94) + +[node name="collectable7" parent="Scene Objects/Collectables group" unique_id=191713061 instance=ExtResource("5_by7u7")] +position = Vector2(962, 382) + +[node name="collectable8" parent="Scene Objects/Collectables group" unique_id=612678707 instance=ExtResource("5_by7u7")] +position = Vector2(1146, 189) + +[node name="collectable9" parent="Scene Objects/Collectables group" unique_id=2030054448 instance=ExtResource("5_by7u7")] +position = Vector2(1088, 45) + +[node name="collectable10" parent="Scene Objects/Collectables group" unique_id=262570707 instance=ExtResource("5_by7u7")] +position = Vector2(1410, 49) + +[node name="collectable11" parent="Scene Objects/Collectables group" unique_id=1384411186 instance=ExtResource("5_by7u7")] +position = Vector2(1333, 524) + +[node name="collectable12" parent="Scene Objects/Collectables group" unique_id=20322599 instance=ExtResource("5_by7u7")] +position = Vector2(1527, 175) + +[node name="collectable13" parent="Scene Objects/Collectables group" unique_id=1719372357 instance=ExtResource("5_by7u7")] +position = Vector2(1889, 141) + +[node name="collectable14" parent="Scene Objects/Collectables group" unique_id=1266510179 instance=ExtResource("5_by7u7")] +position = Vector2(1629, 424) + +[node name="collectable15" parent="Scene Objects/Collectables group" unique_id=157855902 instance=ExtResource("5_by7u7")] +position = Vector2(1992, 524) + +[node name="collectable16" parent="Scene Objects/Collectables group" unique_id=1231599476 instance=ExtResource("5_by7u7")] +position = Vector2(2005, 379) + +[node name="collectable17" parent="Scene Objects/Collectables group" unique_id=1918755619 instance=ExtResource("5_by7u7")] +position = Vector2(2149, 567) + +[node name="collectable18" parent="Scene Objects/Collectables group" unique_id=1763920614 instance=ExtResource("5_by7u7")] +position = Vector2(2476, 230) + +[node name="collectable19" parent="Scene Objects/Collectables group" unique_id=426484028 instance=ExtResource("5_by7u7")] +position = Vector2(2090, 71) + +[node name="collectable20" parent="Scene Objects/Collectables group" unique_id=1517522507 instance=ExtResource("5_by7u7")] +position = Vector2(2357, 424) + +[node name="Finish" parent="Scene Objects" unique_id=535235775 instance=ExtResource("6_6y2gy")] +texture_filter = 1 +position = Vector2(2453, 544) +next_scene = ExtResource("7_bed6f") + +[node name="Enemies" type="Node" parent="Scene Objects" unique_id=1448313232] + +[node name="GreenSlime" parent="Scene Objects/Enemies" unique_id=1004748973 instance=ExtResource("7_nc7ty")] +position = Vector2(315, 238) + +[node name="GreenSlime2" parent="Scene Objects/Enemies" unique_id=929143809 instance=ExtResource("7_nc7ty")] +position = Vector2(982, 237) + +[node name="GreenSlime3" parent="Scene Objects/Enemies" unique_id=1468894716 instance=ExtResource("7_nc7ty")] +position = Vector2(1944, 572) + +[node name="GreenSlime4" parent="Scene Objects/Enemies" unique_id=2093958455 instance=ExtResource("7_nc7ty")] +position = Vector2(1084, 92) + +[node name="GreenSlime5" parent="Scene Objects/Enemies" unique_id=1217206403 instance=ExtResource("7_nc7ty")] +position = Vector2(804, 620) + +[node name="GreenSlime6" parent="Scene Objects/Enemies" unique_id=346608177 instance=ExtResource("7_nc7ty")] +position = Vector2(1018, 620) + +[node name="GreenSlime7" parent="Scene Objects/Enemies" unique_id=902472107 instance=ExtResource("7_nc7ty")] +position = Vector2(1517, 620) + +[node name="GreenSlime8" parent="Scene Objects/Enemies" unique_id=951513225 instance=ExtResource("7_nc7ty")] +position = Vector2(1811, 620) + +[node name="GreenSlime9" parent="Scene Objects/Enemies" unique_id=320715164 instance=ExtResource("7_nc7ty")] +position = Vector2(1652, 286) diff --git a/src/world/objects/bullet.gd b/src/world/objects/bullet.gd new file mode 100644 index 0000000..8393d67 --- /dev/null +++ b/src/world/objects/bullet.gd @@ -0,0 +1,46 @@ +extends Area2D + +class_name Bullet + +@export var death_timer: float = 0.2 +@export var direction: Vector2 = Vector2.RIGHT +@export var speed: float = 600.0 + +@onready var sprite = $Sprite +@onready var damage_comp: DamageComponent = $DamageComponent + +const explosion_sound: AudioStreamWAV = preload("res://assets/sounds/explosion.wav") + +func _ready() -> void: + sprite.play("default") + SoundManager.play("SFX", explosion_sound, true) + +func _physics_process(delta: float) -> void: + position += direction * speed * delta + +func _on_body_entered(body: Node2D) -> void: + if body.is_in_group("Enemies"): + _do_damage(body) + if !body.is_in_group("Collectibles") and !body.is_in_group("Player"): + queue_free() + +func _on_visible_screen_exited() -> void: + await _kill_self() + +func _kill_self() -> void: + await get_tree().create_timer(death_timer).timeout + queue_free() + +func _on_area_entered(area: Area2D) -> void: + if area.is_in_group("Enemies"): + _do_damage(area) + return + + var parent = area.get_parent() + if parent != null and parent.is_in_group("Enemies"): + _do_damage(parent) + +func _do_damage(node: Node2D) -> void: + if node.has_node("HealthComponent"): + node.get_node("HealthComponent").apply_damage(damage_comp.get_damage()) + queue_free() diff --git a/src/world/objects/bullet.gd.uid b/src/world/objects/bullet.gd.uid new file mode 100644 index 0000000..30ab709 --- /dev/null +++ b/src/world/objects/bullet.gd.uid @@ -0,0 +1 @@ +uid://cqam6w56tw5fy diff --git a/src/world/objects/bullet.tscn b/src/world/objects/bullet.tscn new file mode 100644 index 0000000..6fbd18b --- /dev/null +++ b/src/world/objects/bullet.tscn @@ -0,0 +1,70 @@ +[gd_scene format=3 uid="uid://bkm16jsyblflv"] + +[ext_resource type="Script" uid="uid://cqam6w56tw5fy" path="res://world/objects/bullet.gd" id="1_5uftw"] +[ext_resource type="Texture2D" uid="uid://dlmroe6k6uskg" path="res://assets/sprites/objects/Bullet.png" id="2_memah"] +[ext_resource type="PackedScene" uid="uid://cmnml3g5yb5i1" path="res://world/core/damage_component.tscn" id="3_memah"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_gjwjs"] +atlas = ExtResource("2_memah") +region = Rect2(176, 0, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_engwm"] +atlas = ExtResource("2_memah") +region = Rect2(192, 0, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_baa0q"] +atlas = ExtResource("2_memah") +region = Rect2(208, 0, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ia1r3"] +atlas = ExtResource("2_memah") +region = Rect2(224, 0, 16, 16) + +[sub_resource type="SpriteFrames" id="SpriteFrames_gjgh6"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_gjwjs") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_engwm") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_baa0q") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ia1r3") +}], +"loop": true, +"name": &"default", +"speed": 5.0 +}] + +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_blytl"] +radius = 2.0 +height = 4.0 + +[node name="Bullet" type="Area2D" unique_id=1564412134] +collision_layer = 2 +collision_mask = 3 +script = ExtResource("1_5uftw") + +[node name="Sprite" type="AnimatedSprite2D" parent="." unique_id=765428720] +texture_filter = 1 +scale = Vector2(6, 6) +sprite_frames = SubResource("SpriteFrames_gjgh6") +frame = 3 +frame_progress = 0.51701134 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1565092108] +scale = Vector2(6, 6) +shape = SubResource("CapsuleShape2D_blytl") + +[node name="VisibleOnScreenNotifier2D" type="VisibleOnScreenNotifier2D" parent="." unique_id=2144578153] + +[node name="DamageComponent" parent="." unique_id=2109691276 instance=ExtResource("3_memah")] +base_damage = 20.0 + +[connection signal="area_entered" from="." to="." method="_on_area_entered"] +[connection signal="body_entered" from="." to="." method="_on_body_entered"] +[connection signal="screen_exited" from="VisibleOnScreenNotifier2D" to="." method="_on_visible_screen_exited"] diff --git a/src/world/objects/collectable.gd b/src/world/objects/collectable.gd new file mode 100644 index 0000000..61716ad --- /dev/null +++ b/src/world/objects/collectable.gd @@ -0,0 +1,25 @@ +extends Area2D + +#=================== Explanation of Changes: +#Singleton: The GameManager node gets always instantiated as a Singleton before any other scene, allowing for interaction with the game manager's functions globally. +#Preload: Pre-Loading resources. +#Body Entered Function: The _on_body_entered(body) function is called when another body enters the Area2D: +#Body Check: if body.is_in_group("Player") checks if the body entering the area is in a Global Group called "Player". +#Free Node: queue_free() removes the current Area2D node from the scene tree, effectively "destroying" it. +#Add Points: GameManager.add_points() calls the add_points function from the game manager to increase the player's points. +#==================================== + +# Collecting sound preloading +const points_collect = preload("res://assets/sounds/eating_chips.wav") + +# Function called when a body enters the Area2D. +func _on_body_entered(body): + # Check if the body that entered is in "Player" group. + if body.is_in_group("Player"): + # Free the current Area2D node from the scene tree. + queue_free() + # Call the add_points function from the GameManager to increase the points. + # GameManager is kind of works as a singleton and always loaded before scenes. + GameManager.add_points() + # SoundManager is also a singleton for managing/playing sounds on different Audio buses. + SoundManager.play("UI", points_collect, true) diff --git a/src/world/objects/collectable.gd.uid b/src/world/objects/collectable.gd.uid new file mode 100644 index 0000000..4619210 --- /dev/null +++ b/src/world/objects/collectable.gd.uid @@ -0,0 +1 @@ +uid://n8cfgteauuyu diff --git a/src/scenes/collectable.tscn b/src/world/objects/collectable.tscn similarity index 92% rename from src/scenes/collectable.tscn rename to src/world/objects/collectable.tscn index 12ee2f8..da44bc4 100644 --- a/src/scenes/collectable.tscn +++ b/src/world/objects/collectable.tscn @@ -1,7 +1,7 @@ -[gd_scene load_steps=22 format=3 uid="uid://bu8800vy3b34a"] +[gd_scene format=3 uid="uid://bu8800vy3b34a"] -[ext_resource type="Texture2D" uid="uid://clbe64mr3lls0" path="res://Apple.png" id="1_f65t1"] -[ext_resource type="Script" path="res://scenes/collectable.gd" id="1_yqmf7"] +[ext_resource type="Texture2D" uid="uid://clbe64mr3lls0" path="res://assets/sprites/objects/Apple.png" id="1_f65t1"] +[ext_resource type="Script" uid="uid://n8cfgteauuyu" path="res://world/objects/collectable.gd" id="1_yqmf7"] [sub_resource type="AtlasTexture" id="AtlasTexture_wo30r"] atlas = ExtResource("1_f65t1") @@ -133,10 +133,10 @@ animations = [{ [sub_resource type="CircleShape2D" id="CircleShape2D_q0jcm"] radius = 18.0278 -[node name="collectable" type="Area2D"] +[node name="collectable" type="Area2D" unique_id=1552571314 groups=["Collectibles"]] script = ExtResource("1_yqmf7") -[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." unique_id=1745243700] texture_filter = 1 position = Vector2(23, 23.5) scale = Vector2(2.4375, 2.46875) @@ -144,7 +144,7 @@ sprite_frames = SubResource("SpriteFrames_wdyuv") autoplay = "default" frame_progress = 0.500201 -[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=581749793] position = Vector2(23, 21) shape = SubResource("CircleShape2D_q0jcm") diff --git a/src/world/objects/finish.gd b/src/world/objects/finish.gd new file mode 100644 index 0000000..ea6942e --- /dev/null +++ b/src/world/objects/finish.gd @@ -0,0 +1,10 @@ +extends Area2D +##The next scene to show +@export var next_scene: PackedScene = preload("res://ui/next_level_scene.tscn") + +const level_completed_sound: AudioStreamWAV = preload("res://assets/sounds/level_completed.wav") + +func _on_body_entered(body): + if body.is_in_group("Player"): + SoundManager.play("SFX", level_completed_sound, true) + get_tree().change_scene_to_packed.call_deferred(next_scene) diff --git a/src/world/objects/finish.gd.uid b/src/world/objects/finish.gd.uid new file mode 100644 index 0000000..1ec04b3 --- /dev/null +++ b/src/world/objects/finish.gd.uid @@ -0,0 +1 @@ +uid://l4nj8y5f46ii diff --git a/src/scenes/finish.tscn b/src/world/objects/finish.tscn similarity index 62% rename from src/scenes/finish.tscn rename to src/world/objects/finish.tscn index 9f9f0b3..7ce6db3 100644 --- a/src/scenes/finish.tscn +++ b/src/world/objects/finish.tscn @@ -1,21 +1,21 @@ -[gd_scene load_steps=4 format=3 uid="uid://cqrbnj6mscgu2"] +[gd_scene format=3 uid="uid://cqrbnj6mscgu2"] -[ext_resource type="Script" path="res://scenes/finish.gd" id="1_13yp8"] -[ext_resource type="Texture2D" uid="uid://dufj711m75b2q" path="res://End (Idle).png" id="1_j30dq"] +[ext_resource type="Script" uid="uid://l4nj8y5f46ii" path="res://world/objects/finish.gd" id="1_13yp8"] +[ext_resource type="Texture2D" uid="uid://dufj711m75b2q" path="res://assets/sprites/End (Idle).png" id="1_j30dq"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_6d4a0"] size = Vector2(47.0017, 49.0012) -[node name="Finish" type="Area2D"] +[node name="Finish" type="Area2D" unique_id=1598996499] script = ExtResource("1_13yp8") -[node name="Sprite2D" type="Sprite2D" parent="."] +[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1692133197] position = Vector2(-0.00124772, -2.77813) rotation = -0.000449121 scale = Vector2(1, 1.08682) texture = ExtResource("1_j30dq") -[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1562744904] position = Vector2(0.497151, 7.5003) rotation = 0.000570293 shape = SubResource("RectangleShape2D_6d4a0") diff --git a/src/world/sound_manager.gd b/src/world/sound_manager.gd new file mode 100644 index 0000000..c58b1d5 --- /dev/null +++ b/src/world/sound_manager.gd @@ -0,0 +1,26 @@ +extends Node + +var bus_to_stream: Dictionary[String, AudioStreamPlayer] = {} + +func _ready() -> void: + for i in range(AudioServer.bus_count): + var bus_name = AudioServer.get_bus_name(i) + if bus_to_stream.has(bus_name): + continue + var audio_stream_player = AudioStreamPlayer.new() + audio_stream_player.bus = bus_name + add_child.call_deferred(audio_stream_player) + bus_to_stream.set(bus_name, audio_stream_player) + +func play(bus: String, audio: AudioStream, force: bool = false): + var audio_stream_player: AudioStreamPlayer = bus_to_stream.get(bus) + if force: + audio_stream_player.stop() + elif audio_stream_player.playing: + return + audio_stream_player.stream = audio + audio_stream_player.play() + +func stop_all(): + for audio_stream_player in bus_to_stream.values(): + audio_stream_player.stop() diff --git a/src/world/sound_manager.gd.uid b/src/world/sound_manager.gd.uid new file mode 100644 index 0000000..3bf54ff --- /dev/null +++ b/src/world/sound_manager.gd.uid @@ -0,0 +1 @@ +uid://by2w4pfq3vf03