From 1e24e0a59aba7999c2e6b1c50bf3aa321716123b Mon Sep 17 00:00:00 2001 From: Adam Date: Mon, 3 Nov 2025 20:56:43 -0500 Subject: [PATCH] multi levels; closed loop; custom resources; character stats; enemy attacks; player attacks; enemy movement started --- .../player_idle/Player Idle 48x48.png.import | 6 + .../player_jump/player jump 48x48.png.import | 6 + .../player new jump 48x48.png.import | 6 + .../player_land/player land 48x48.png.import | 6 + .../Player Punch 64x64(1).png.import | 6 + .../player_run/player run 48x48.png.import | 6 + .../Player Running Shooting 48x48.png.import | 6 + .../player shoot 2H 48x48.png.import | 6 + ...17-sky-background-godot-course-.png.import | 6 + ...rees-background-godot-course-v1.png.import | 6 + .../backgrounds/forestbackground.png.import | 6 + graphics/effects/14.png.import | 6 + graphics/effects/explosion.png.import | 6 + graphics/effects/orb_red.png.import | 6 + graphics/enemies/slime_green(1).png.import | 6 + .../objects/25-10-27-small-crate.png.import | 6 + graphics/objects/mushroom_32x64.png.import | 6 + graphics/objects/veg_32x32.png.import | 6 + graphics/pickups/coin(1).png.import | 6 + ...18-godot-course-Terrain (32x32).png.import | 6 + ...errain (32x32)-color-exchange-1.png.import | 6 + graphics/tiles/crate-100-custom.png.import | 6 + icon.svg.import | 6 + project.godot | 10 +- resources/character_stats.gd | 11 + resources/character_stats.gd.uid | 1 + resources/player_stats.tres | 8 + resources/slime_stats.tres | 11 + scenes/bullet.tscn | 6 +- scenes/coin.tscn | 2 + scenes/game.tscn | 34 +- scenes/level_2.tscn | 554 +++++++++++++++++ scenes/level_3.tscn | 565 ++++++++++++++++++ scenes/slimer.tscn | 16 + scripts/bullet.gd | 9 +- scripts/coin.gd | 5 + scripts/game_controller.gd | 101 +++- scripts/scene_manager.gd | 54 +- scripts/slimer.gd | 11 + 39 files changed, 1475 insertions(+), 61 deletions(-) create mode 100644 resources/character_stats.gd create mode 100644 resources/character_stats.gd.uid create mode 100644 resources/player_stats.tres create mode 100644 resources/slime_stats.tres create mode 100644 scenes/level_2.tscn create mode 100644 scenes/level_3.tscn diff --git a/graphics/animations/player_idle/Player Idle 48x48.png.import b/graphics/animations/player_idle/Player Idle 48x48.png.import index 67546c9..89be3df 100644 --- a/graphics/animations/player_idle/Player Idle 48x48.png.import +++ b/graphics/animations/player_idle/Player Idle 48x48.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/Player Idle 48x48.png-febc6ee73b16c6ae56feb25 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/graphics/animations/player_jump/player jump 48x48.png.import b/graphics/animations/player_jump/player jump 48x48.png.import index 914725d..0065ff7 100644 --- a/graphics/animations/player_jump/player jump 48x48.png.import +++ b/graphics/animations/player_jump/player jump 48x48.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/player jump 48x48.png-53153cc022c0f5f1a72bef8 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/graphics/animations/player_jump/player new jump 48x48.png.import b/graphics/animations/player_jump/player new jump 48x48.png.import index 7d06955..de9be7b 100644 --- a/graphics/animations/player_jump/player new jump 48x48.png.import +++ b/graphics/animations/player_jump/player new jump 48x48.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/player new jump 48x48.png-085528a4cee6917e773 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/graphics/animations/player_land/player land 48x48.png.import b/graphics/animations/player_land/player land 48x48.png.import index 4f3fcf0..ecc6680 100644 --- a/graphics/animations/player_land/player land 48x48.png.import +++ b/graphics/animations/player_land/player land 48x48.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/player land 48x48.png-73bf83889efcd0c346ed730 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/graphics/animations/player_punch/Player Punch 64x64(1).png.import b/graphics/animations/player_punch/Player Punch 64x64(1).png.import index 54e35f4..189491b 100644 --- a/graphics/animations/player_punch/Player Punch 64x64(1).png.import +++ b/graphics/animations/player_punch/Player Punch 64x64(1).png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/Player Punch 64x64(1).png-30d66d61ef3a1f371d6 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/graphics/animations/player_run/player run 48x48.png.import b/graphics/animations/player_run/player run 48x48.png.import index dd2077d..83fd611 100644 --- a/graphics/animations/player_run/player run 48x48.png.import +++ b/graphics/animations/player_run/player run 48x48.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/player run 48x48.png-e4bb17293a9ce0c0c03376a7 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/graphics/animations/player_shoot/Player Running Shooting 48x48.png.import b/graphics/animations/player_shoot/Player Running Shooting 48x48.png.import index 5334a01..e8f6962 100644 --- a/graphics/animations/player_shoot/Player Running Shooting 48x48.png.import +++ b/graphics/animations/player_shoot/Player Running Shooting 48x48.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/Player Running Shooting 48x48.png-3d2df69d2a4 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/graphics/animations/player_shoot/player shoot 2H 48x48.png.import b/graphics/animations/player_shoot/player shoot 2H 48x48.png.import index f0a4deb..acc152d 100644 --- a/graphics/animations/player_shoot/player shoot 2H 48x48.png.import +++ b/graphics/animations/player_shoot/player shoot 2H 48x48.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/player shoot 2H 48x48.png-6d3782d73196ec488a7 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/graphics/backgrounds/25-10-17-sky-background-godot-course-.png.import b/graphics/backgrounds/25-10-17-sky-background-godot-course-.png.import index 60668ce..4678567 100644 --- a/graphics/backgrounds/25-10-17-sky-background-godot-course-.png.import +++ b/graphics/backgrounds/25-10-17-sky-background-godot-course-.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/25-10-17-sky-background-godot-course-.png-685 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/graphics/backgrounds/25-10-17-trees-background-godot-course-v1.png.import b/graphics/backgrounds/25-10-17-trees-background-godot-course-v1.png.import index 9999ab1..3d02293 100644 --- a/graphics/backgrounds/25-10-17-trees-background-godot-course-v1.png.import +++ b/graphics/backgrounds/25-10-17-trees-background-godot-course-v1.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/25-10-17-trees-background-godot-course-v1.png 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/graphics/backgrounds/forestbackground.png.import b/graphics/backgrounds/forestbackground.png.import index 3a99dc8..88ff60c 100644 --- a/graphics/backgrounds/forestbackground.png.import +++ b/graphics/backgrounds/forestbackground.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/forestbackground.png-c62d472b3b61aefff531c569 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/graphics/effects/14.png.import b/graphics/effects/14.png.import index 26f4d98..38017d9 100644 --- a/graphics/effects/14.png.import +++ b/graphics/effects/14.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/14.png-b80bda9481eb03b9296615b658f23b86.ctex" 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/graphics/effects/explosion.png.import b/graphics/effects/explosion.png.import index 8cd9613..6fc2947 100644 --- a/graphics/effects/explosion.png.import +++ b/graphics/effects/explosion.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/explosion.png-67838f4909472368e8b1165eafa79d8 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/graphics/effects/orb_red.png.import b/graphics/effects/orb_red.png.import index 680c1f0..7d5eabe 100644 --- a/graphics/effects/orb_red.png.import +++ b/graphics/effects/orb_red.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/orb_red.png-96d2144e68a7a46da9f571d0443165d8. 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/graphics/enemies/slime_green(1).png.import b/graphics/enemies/slime_green(1).png.import index da659be..9dbfe71 100644 --- a/graphics/enemies/slime_green(1).png.import +++ b/graphics/enemies/slime_green(1).png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/slime_green(1).png-681a56605c941b0b260c890dc1 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/graphics/objects/25-10-27-small-crate.png.import b/graphics/objects/25-10-27-small-crate.png.import index 34440bc..8b250c8 100644 --- a/graphics/objects/25-10-27-small-crate.png.import +++ b/graphics/objects/25-10-27-small-crate.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/25-10-27-small-crate.png-2ac8da16d97759b258fc 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/graphics/objects/mushroom_32x64.png.import b/graphics/objects/mushroom_32x64.png.import index 082e10d..1bf80b6 100644 --- a/graphics/objects/mushroom_32x64.png.import +++ b/graphics/objects/mushroom_32x64.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/mushroom_32x64.png-ae0508fa0fd752d4aa1446b33c 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/graphics/objects/veg_32x32.png.import b/graphics/objects/veg_32x32.png.import index 9a7b2a7..03e8549 100644 --- a/graphics/objects/veg_32x32.png.import +++ b/graphics/objects/veg_32x32.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/veg_32x32.png-742a28d4fd61b9f915a41209e1c7450 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/graphics/pickups/coin(1).png.import b/graphics/pickups/coin(1).png.import index 893111f..6a9db19 100644 --- a/graphics/pickups/coin(1).png.import +++ b/graphics/pickups/coin(1).png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/coin(1).png-19d802c455c83c490b6727491bcbe9e7. 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/graphics/tiles/25-10-18-godot-course-Terrain (32x32).png.import b/graphics/tiles/25-10-18-godot-course-Terrain (32x32).png.import index 49aee0d..3989eca 100644 --- a/graphics/tiles/25-10-18-godot-course-Terrain (32x32).png.import +++ b/graphics/tiles/25-10-18-godot-course-Terrain (32x32).png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/25-10-18-godot-course-Terrain (32x32).png-1ec 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/graphics/tiles/25-10-26-godot-course-Terrain (32x32)-color-exchange-1.png.import b/graphics/tiles/25-10-26-godot-course-Terrain (32x32)-color-exchange-1.png.import index 09da4fb..524613e 100644 --- a/graphics/tiles/25-10-26-godot-course-Terrain (32x32)-color-exchange-1.png.import +++ b/graphics/tiles/25-10-26-godot-course-Terrain (32x32)-color-exchange-1.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/25-10-26-godot-course-Terrain (32x32)-color-e 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/graphics/tiles/crate-100-custom.png.import b/graphics/tiles/crate-100-custom.png.import index b78e042..a455552 100644 --- a/graphics/tiles/crate-100-custom.png.import +++ b/graphics/tiles/crate-100-custom.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/crate-100-custom.png-5420ee27cb0ee861df6e7629 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/icon.svg.import b/icon.svg.import index 80ea586..6cd956b 100644 --- a/icon.svg.import +++ b/icon.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.cte 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/project.godot b/project.godot index 9a396d5..65ef13f 100644 --- a/project.godot +++ b/project.godot @@ -13,9 +13,13 @@ config_version=5 config/name="September Game AB" config/tags=PackedStringArray("2d", "lesson", "platformer") run/main_scene="uid://cueixogtk70go" -config/features=PackedStringArray("4.4", "Forward Plus") +config/features=PackedStringArray("4.5", "Forward Plus") config/icon="res://icon.svg" +[autoload] + +GameController="*res://scripts/game_controller.gd" + [display] window/size/viewport_width=320 @@ -58,7 +62,7 @@ jump={ } shove={ "deadzone": 0.2, -"events": [Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":3,"pressure":0.0,"pressed":true,"script":null) +"events": [Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":2,"pressure":0.0,"pressed":true,"script":null) ] } shoot={ @@ -68,7 +72,7 @@ shoot={ } throw={ "deadzone": 0.2, -"events": [Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":4,"pressure":0.0,"pressed":true,"script":null) +"events": [Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":3,"pressure":0.0,"pressed":true,"script":null) ] } diff --git a/resources/character_stats.gd b/resources/character_stats.gd new file mode 100644 index 0000000..70cf38f --- /dev/null +++ b/resources/character_stats.gd @@ -0,0 +1,11 @@ +class_name CharacterStats +extends Resource + +@export_category("Health") +@export var health : int = 100 +@export var max_health : int = 100 +@export var starting_health : int = 100 + +@export_category("Damage") +@export var melee_damage : int = 10 +@export var ranged_damage : int = 0 diff --git a/resources/character_stats.gd.uid b/resources/character_stats.gd.uid new file mode 100644 index 0000000..662a5d9 --- /dev/null +++ b/resources/character_stats.gd.uid @@ -0,0 +1 @@ +uid://dseptumqu6tok diff --git a/resources/player_stats.tres b/resources/player_stats.tres new file mode 100644 index 0000000..3b98c0f --- /dev/null +++ b/resources/player_stats.tres @@ -0,0 +1,8 @@ +[gd_resource type="Resource" script_class="CharacterStats" load_steps=2 format=3 uid="uid://b4honm56f7ui"] + +[ext_resource type="Script" uid="uid://dseptumqu6tok" path="res://resources/character_stats.gd" id="1_wld0n"] + +[resource] +script = ExtResource("1_wld0n") +ranged_damage = 10 +metadata/_custom_type_script = "uid://dseptumqu6tok" diff --git a/resources/slime_stats.tres b/resources/slime_stats.tres new file mode 100644 index 0000000..f08003e --- /dev/null +++ b/resources/slime_stats.tres @@ -0,0 +1,11 @@ +[gd_resource type="Resource" script_class="CharacterStats" load_steps=2 format=3 uid="uid://cuqjljjdqplsj"] + +[ext_resource type="Script" uid="uid://dseptumqu6tok" path="res://resources/character_stats.gd" id="1_sbyxr"] + +[resource] +script = ExtResource("1_sbyxr") +health = 50 +max_health = 50 +starting_health = 50 +melee_damage = 5 +metadata/_custom_type_script = "uid://dseptumqu6tok" diff --git a/scenes/bullet.tscn b/scenes/bullet.tscn index dbabb44..3dab082 100644 --- a/scenes/bullet.tscn +++ b/scenes/bullet.tscn @@ -4,12 +4,12 @@ [ext_resource type="Texture2D" uid="uid://rejfd2gqjk7w" path="res://graphics/effects/14.png" id="2_y25gk"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_h1aey"] -size = Vector2(16, 2) +size = Vector2(16, 20) [node name="Bullet" type="Area2D"] z_index = 100 collision_layer = 8 -collision_mask = 6 +collision_mask = 22 script = ExtResource("1_mkf8s") [node name="CollisionShape2D" type="CollisionShape2D" parent="."] @@ -20,3 +20,5 @@ debug_color = Color(1, 0, 0, 1) [node name="Sprite2D" type="Sprite2D" parent="."] scale = Vector2(0.1, 0.1) texture = ExtResource("2_y25gk") + +[connection signal="area_entered" from="." to="." method="_on_area_entered"] diff --git a/scenes/coin.tscn b/scenes/coin.tscn index 8d61480..4fdeeaf 100644 --- a/scenes/coin.tscn +++ b/scenes/coin.tscn @@ -100,6 +100,8 @@ radius = 4.0 height = 10.0 [node name="Coin" type="Area2D"] +collision_layer = 4 +collision_mask = 9 script = ExtResource("1_i64fm") [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] diff --git a/scenes/game.tscn b/scenes/game.tscn index 27ce56a..fa2a9db 100644 --- a/scenes/game.tscn +++ b/scenes/game.tscn @@ -1,6 +1,5 @@ -[gd_scene load_steps=22 format=4 uid="uid://cueixogtk70go"] +[gd_scene load_steps=21 format=4 uid="uid://cueixogtk70go"] -[ext_resource type="Script" uid="uid://d0ca3jbhe8le3" path="res://scripts/game_controller.gd" id="1_lbhrr"] [ext_resource type="Script" uid="uid://b84pdw14l6gb6" path="res://scripts/scene_manager.gd" id="2_iywne"] [ext_resource type="PackedScene" uid="uid://2pp1gtlflav8" path="res://scenes/trigger.tscn" id="2_yqjtg"] [ext_resource type="PackedScene" uid="uid://d3y1iqmpknpyo" path="res://scenes/player.tscn" id="3_lnu2h"] @@ -432,10 +431,10 @@ cellular_return_type = 0 domain_warp_enabled = true [sub_resource type="NoiseTexture2D" id="NoiseTexture2D_u5sy4"] -in_3d_space = true -seamless = true -color_ramp = SubResource("Gradient_iywne") noise = SubResource("FastNoiseLite_p57ef") +color_ramp = SubResource("Gradient_iywne") +seamless = true +in_3d_space = true [sub_resource type="Gradient" id="Gradient_p57ef"] offsets = PackedFloat32Array(0.513333, 0.846667, 0.926667) @@ -446,14 +445,13 @@ noise_type = 5 frequency = 0.02 [sub_resource type="NoiseTexture2D" id="NoiseTexture2D_iywne"] -seamless = true -color_ramp = SubResource("Gradient_p57ef") noise = SubResource("FastNoiseLite_u5sy4") +color_ramp = SubResource("Gradient_p57ef") +seamless = true [sub_resource type="WorldBoundaryShape2D" id="WorldBoundaryShape2D_8cj0n"] [node name="Game" type="Node2D"] -script = ExtResource("1_lbhrr") [node name="SceneManager" type="Node2D" parent="."] unique_name_in_owner = true @@ -534,26 +532,6 @@ position = Vector2(-7, -210) z_index = 5 position = Vector2(-49, 84) -[node name="Coin2" parent="Coins" instance=ExtResource("9_0tnpc")] -z_index = 5 -position = Vector2(-266, -76) - -[node name="Coin3" parent="Coins" instance=ExtResource("9_0tnpc")] -z_index = 5 -position = Vector2(-18, -140) - -[node name="Coin4" parent="Coins" instance=ExtResource("9_0tnpc")] -z_index = 5 -position = Vector2(203, -105) - -[node name="Coin5" parent="Coins" instance=ExtResource("9_0tnpc")] -z_index = 5 -position = Vector2(381, -169) - -[node name="Coin6" parent="Coins" instance=ExtResource("9_0tnpc")] -z_index = 5 -position = Vector2(402, 21) - [node name="Enemies" type="Node" parent="."] [node name="Slimer" parent="Enemies" instance=ExtResource("10_vtaks")] diff --git a/scenes/level_2.tscn b/scenes/level_2.tscn new file mode 100644 index 0000000..8e8ab4a --- /dev/null +++ b/scenes/level_2.tscn @@ -0,0 +1,554 @@ +[gd_scene load_steps=21 format=4 uid="uid://y34miorfoath"] + +[ext_resource type="Script" uid="uid://b84pdw14l6gb6" path="res://scripts/scene_manager.gd" id="1_6cvei"] +[ext_resource type="Texture2D" uid="uid://dkco6bp2yelei" path="res://graphics/tiles/25-10-26-godot-course-Terrain (32x32)-color-exchange-1.png" id="2_que50"] +[ext_resource type="Texture2D" uid="uid://bpf0sbb3o6rch" path="res://graphics/objects/veg_32x32.png" id="3_hey2k"] +[ext_resource type="Texture2D" uid="uid://ctrmx80fc52bt" path="res://graphics/objects/mushroom_32x64.png" id="4_172wr"] +[ext_resource type="PackedScene" uid="uid://d3y1iqmpknpyo" path="res://scenes/player.tscn" id="5_g2hoc"] +[ext_resource type="PackedScene" uid="uid://2pp1gtlflav8" path="res://scenes/trigger.tscn" id="6_fldb1"] +[ext_resource type="PackedScene" uid="uid://yr1iqtid2ihb" path="res://scenes/small_crate.tscn" id="7_guvtl"] +[ext_resource type="PackedScene" uid="uid://31idmjadvk3t" path="res://scenes/coin.tscn" id="8_igmy8"] +[ext_resource type="PackedScene" uid="uid://bts74sqcd7k7h" path="res://scenes/slimer.tscn" id="9_wdtqu"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_gee14"] +texture = ExtResource("2_que50") +texture_region_size = Vector2i(32, 32) +0:0/0 = 0 +0:0/0/terrain_set = 0 +0:0/0/terrain = 0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:0/0/terrains_peering_bit/right_side = 0 +0:0/0/terrains_peering_bit/bottom_right_corner = 0 +0:0/0/terrains_peering_bit/bottom_side = 0 +1:0/0 = 0 +1:0/0/terrain_set = 0 +1:0/0/terrain = 0 +1:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +1:0/0/terrains_peering_bit/right_side = 0 +1:0/0/terrains_peering_bit/bottom_right_corner = 0 +1:0/0/terrains_peering_bit/bottom_side = 0 +1:0/0/terrains_peering_bit/bottom_left_corner = 0 +1:0/0/terrains_peering_bit/left_side = 0 +2:0/0 = 0 +2:0/0/terrain_set = 0 +2:0/0/terrain = 0 +2:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +2:0/0/terrains_peering_bit/bottom_side = 0 +2:0/0/terrains_peering_bit/bottom_left_corner = 0 +2:0/0/terrains_peering_bit/left_side = 0 +4:0/0 = 0 +4:0/0/terrain_set = 0 +4:0/0/terrain = 0 +4:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +4:0/0/terrains_peering_bit/bottom_side = 0 +6:0/0 = 0 +6:0/0/terrain_set = 0 +6:0/0/terrain = 0 +6:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +6:0/0/terrains_peering_bit/right_side = 0 +6:0/0/terrains_peering_bit/bottom_side = 0 +6:0/0/terrains_peering_bit/bottom_left_corner = 0 +6:0/0/terrains_peering_bit/left_side = 0 +6:0/0/terrains_peering_bit/top_left_corner = 0 +6:0/0/terrains_peering_bit/top_side = 0 +6:0/0/terrains_peering_bit/top_right_corner = 0 +7:0/0 = 0 +7:0/0/terrain_set = 0 +7:0/0/terrain = 0 +7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +7:0/0/terrains_peering_bit/right_side = 0 +7:0/0/terrains_peering_bit/bottom_right_corner = 0 +7:0/0/terrains_peering_bit/bottom_side = 0 +7:0/0/terrains_peering_bit/left_side = 0 +7:0/0/terrains_peering_bit/top_left_corner = 0 +7:0/0/terrains_peering_bit/top_side = 0 +7:0/0/terrains_peering_bit/top_right_corner = 0 +9:0/0 = 0 +9:0/0/terrain_set = 0 +9:0/0/terrain = 0 +9:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +9:0/0/terrains_peering_bit/right_side = 0 +9:0/0/terrains_peering_bit/bottom_right_corner = 0 +9:0/0/terrains_peering_bit/bottom_side = 0 +9:0/0/terrains_peering_bit/bottom_left_corner = 0 +9:0/0/terrains_peering_bit/left_side = 0 +9:0/0/terrains_peering_bit/top_side = 0 +10:0/0 = 0 +10:0/0/terrain_set = 0 +10:0/0/terrain = 0 +10:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +10:0/0/terrains_peering_bit/right_side = 0 +10:0/0/terrains_peering_bit/bottom_side = 0 +10:0/0/terrains_peering_bit/bottom_left_corner = 0 +10:0/0/terrains_peering_bit/left_side = 0 +10:0/0/terrains_peering_bit/top_left_corner = 0 +10:0/0/terrains_peering_bit/top_side = 0 +12:0/0 = 0 +12:0/0/terrain_set = 0 +12:0/0/terrain = 0 +12:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +12:0/0/terrains_peering_bit/right_side = 0 +12:0/0/terrains_peering_bit/bottom_right_corner = 0 +12:0/0/terrains_peering_bit/bottom_side = 0 +12:0/0/terrains_peering_bit/left_side = 0 +12:0/0/terrains_peering_bit/top_side = 0 +13:0/0 = 0 +13:0/0/terrain_set = 0 +13:0/0/terrain = 0 +13:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +13:0/0/terrains_peering_bit/right_side = 0 +13:0/0/terrains_peering_bit/bottom_side = 0 +13:0/0/terrains_peering_bit/bottom_left_corner = 0 +13:0/0/terrains_peering_bit/left_side = 0 +13:0/0/terrains_peering_bit/top_side = 0 +15:0/0 = 0 +15:0/0/terrain_set = 0 +15:0/0/terrain = 0 +15:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +15:0/0/terrains_peering_bit/right_side = 0 +15:0/0/terrains_peering_bit/bottom_side = 0 +15:0/0/terrains_peering_bit/left_side = 0 +15:0/0/terrains_peering_bit/top_side = 0 +0:1/0 = 0 +0:1/0/terrain_set = 0 +0:1/0/terrain = 0 +0:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:1/0/terrains_peering_bit/right_side = 0 +0:1/0/terrains_peering_bit/bottom_right_corner = 0 +0:1/0/terrains_peering_bit/bottom_side = 0 +0:1/0/terrains_peering_bit/top_side = 0 +0:1/0/terrains_peering_bit/top_right_corner = 0 +1:1/0 = 0 +1:1/0/terrain_set = 0 +1:1/0/terrain = 0 +1:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +1:1/0/terrains_peering_bit/right_side = 0 +1:1/0/terrains_peering_bit/bottom_right_corner = 0 +1:1/0/terrains_peering_bit/bottom_side = 0 +1:1/0/terrains_peering_bit/bottom_left_corner = 0 +1:1/0/terrains_peering_bit/left_side = 0 +1:1/0/terrains_peering_bit/top_left_corner = 0 +1:1/0/terrains_peering_bit/top_side = 0 +1:1/0/terrains_peering_bit/top_right_corner = 0 +2:1/0 = 0 +2:1/0/terrain_set = 0 +2:1/0/terrain = 0 +2:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +2:1/0/terrains_peering_bit/bottom_side = 0 +2:1/0/terrains_peering_bit/bottom_left_corner = 0 +2:1/0/terrains_peering_bit/left_side = 0 +2:1/0/terrains_peering_bit/top_left_corner = 0 +2:1/0/terrains_peering_bit/top_side = 0 +4:1/0 = 0 +4:1/0/terrain_set = 0 +4:1/0/terrain = 0 +4:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +4:1/0/terrains_peering_bit/bottom_side = 0 +4:1/0/terrains_peering_bit/top_side = 0 +6:1/0 = 0 +6:1/0/terrain_set = 0 +6:1/0/terrain = 0 +6:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +6:1/0/terrains_peering_bit/right_side = 0 +6:1/0/terrains_peering_bit/bottom_right_corner = 0 +6:1/0/terrains_peering_bit/bottom_side = 0 +6:1/0/terrains_peering_bit/bottom_left_corner = 0 +6:1/0/terrains_peering_bit/left_side = 0 +6:1/0/terrains_peering_bit/top_left_corner = 0 +6:1/0/terrains_peering_bit/top_side = 0 +7:1/0 = 0 +7:1/0/terrain_set = 0 +7:1/0/terrain = 0 +7:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +7:1/0/terrains_peering_bit/right_side = 0 +7:1/0/terrains_peering_bit/bottom_right_corner = 0 +7:1/0/terrains_peering_bit/bottom_side = 0 +7:1/0/terrains_peering_bit/bottom_left_corner = 0 +7:1/0/terrains_peering_bit/left_side = 0 +7:1/0/terrains_peering_bit/top_side = 0 +7:1/0/terrains_peering_bit/top_right_corner = 0 +9:1/0 = 0 +9:1/0/terrain_set = 0 +9:1/0/terrain = 0 +9:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +9:1/0/terrains_peering_bit/right_side = 0 +9:1/0/terrains_peering_bit/bottom_right_corner = 0 +9:1/0/terrains_peering_bit/bottom_side = 0 +9:1/0/terrains_peering_bit/left_side = 0 +9:1/0/terrains_peering_bit/top_side = 0 +9:1/0/terrains_peering_bit/top_right_corner = 0 +10:1/0 = 0 +10:1/0/terrain_set = 0 +10:1/0/terrain = 0 +10:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +10:1/0/terrains_peering_bit/right_side = 0 +10:1/0/terrains_peering_bit/bottom_side = 0 +10:1/0/terrains_peering_bit/left_side = 0 +10:1/0/terrains_peering_bit/top_left_corner = 0 +10:1/0/terrains_peering_bit/top_side = 0 +10:1/0/terrains_peering_bit/top_right_corner = 0 +12:1/0 = 0 +12:1/0/terrain_set = 0 +12:1/0/terrain = 0 +12:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +12:1/0/terrains_peering_bit/right_side = 0 +12:1/0/terrains_peering_bit/bottom_side = 0 +12:1/0/terrains_peering_bit/left_side = 0 +12:1/0/terrains_peering_bit/top_side = 0 +12:1/0/terrains_peering_bit/top_right_corner = 0 +13:1/0 = 0 +13:1/0/terrain_set = 0 +13:1/0/terrain = 0 +13:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +13:1/0/terrains_peering_bit/right_side = 0 +13:1/0/terrains_peering_bit/bottom_side = 0 +13:1/0/terrains_peering_bit/left_side = 0 +13:1/0/terrains_peering_bit/top_left_corner = 0 +13:1/0/terrains_peering_bit/top_side = 0 +15:1/0 = 0 +15:1/0/terrain_set = 0 +15:1/0/terrain = 0 +15:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +15:1/0/terrains_peering_bit/right_side = 0 +15:1/0/terrains_peering_bit/bottom_side = 0 +15:1/0/terrains_peering_bit/bottom_left_corner = 0 +15:1/0/terrains_peering_bit/left_side = 0 +15:1/0/terrains_peering_bit/top_side = 0 +15:1/0/terrains_peering_bit/top_right_corner = 0 +16:1/0 = 0 +16:1/0/terrain_set = 0 +16:1/0/terrain = 0 +16:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +16:1/0/terrains_peering_bit/right_side = 0 +16:1/0/terrains_peering_bit/bottom_right_corner = 0 +16:1/0/terrains_peering_bit/bottom_side = 0 +16:1/0/terrains_peering_bit/left_side = 0 +16:1/0/terrains_peering_bit/top_left_corner = 0 +16:1/0/terrains_peering_bit/top_side = 0 +0:2/0 = 0 +0:2/0/terrain_set = 0 +0:2/0/terrain = 0 +0:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 7.96577, -13.0639, 12.7452, -9.24029, 16, 16, 16) +0:2/0/terrains_peering_bit/right_side = 0 +0:2/0/terrains_peering_bit/top_side = 0 +0:2/0/terrains_peering_bit/top_right_corner = 0 +1:2/0 = 0 +1:2/0/terrain_set = 0 +1:2/0/terrain = 0 +1:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +1:2/0/terrains_peering_bit/right_side = 0 +1:2/0/terrains_peering_bit/left_side = 0 +1:2/0/terrains_peering_bit/top_left_corner = 0 +1:2/0/terrains_peering_bit/top_side = 0 +1:2/0/terrains_peering_bit/top_right_corner = 0 +2:2/0 = 0 +2:2/0/terrain_set = 0 +2:2/0/terrain = 0 +2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 7.96577, 13.0639, 12.7452, 9.24029, 16, -16, 16) +2:2/0/terrains_peering_bit/left_side = 0 +2:2/0/terrains_peering_bit/top_left_corner = 0 +2:2/0/terrains_peering_bit/top_side = 0 +4:2/0 = 0 +4:2/0/terrain_set = 0 +4:2/0/terrain = 0 +4:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 7.96577, -13.0639, 12.7452, -9.24029, 16, 7.64714, 16, 13.3825, 12.7452, 16, 7.64714) +4:2/0/terrains_peering_bit/top_side = 0 +6:3/0 = 0 +6:3/0/terrain_set = 0 +6:3/0/terrain = 0 +6:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +6:3/0/terrains_peering_bit/right_side = 0 +6:3/0/terrains_peering_bit/bottom_side = 0 +6:3/0/terrains_peering_bit/top_side = 0 +6:3/0/terrains_peering_bit/top_right_corner = 0 +7:3/0 = 0 +7:3/0/terrain_set = 0 +7:3/0/terrain = 0 +7:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +7:3/0/terrains_peering_bit/bottom_side = 0 +7:3/0/terrains_peering_bit/left_side = 0 +7:3/0/terrains_peering_bit/top_left_corner = 0 +7:3/0/terrains_peering_bit/top_side = 0 +9:3/0 = 0 +9:3/0/terrain_set = 0 +9:3/0/terrain = 0 +9:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +9:3/0/terrains_peering_bit/right_side = 0 +9:3/0/terrains_peering_bit/bottom_side = 0 +9:3/0/terrains_peering_bit/bottom_left_corner = 0 +9:3/0/terrains_peering_bit/left_side = 0 +10:3/0 = 0 +10:3/0/terrain_set = 0 +10:3/0/terrain = 0 +10:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +10:3/0/terrains_peering_bit/right_side = 0 +10:3/0/terrains_peering_bit/bottom_right_corner = 0 +10:3/0/terrains_peering_bit/bottom_side = 0 +10:3/0/terrains_peering_bit/left_side = 0 +12:3/0 = 0 +12:3/0/terrain_set = 0 +12:3/0/terrain = 0 +12:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +12:3/0/terrains_peering_bit/right_side = 0 +12:3/0/terrains_peering_bit/bottom_side = 0 +12:3/0/terrains_peering_bit/top_side = 0 +13:3/0 = 0 +13:3/0/terrain_set = 0 +13:3/0/terrain = 0 +13:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +13:3/0/terrains_peering_bit/right_side = 0 +13:3/0/terrains_peering_bit/bottom_side = 0 +13:3/0/terrains_peering_bit/left_side = 0 +15:3/0 = 0 +15:3/0/terrain_set = 0 +15:3/0/terrain = 0 +15:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +15:3/0/terrains_peering_bit/right_side = 0 +15:3/0/terrains_peering_bit/bottom_side = 0 +16:3/0 = 0 +16:3/0/terrain_set = 0 +16:3/0/terrain = 0 +16:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +16:3/0/terrains_peering_bit/bottom_side = 0 +16:3/0/terrains_peering_bit/left_side = 0 +0:4/0 = 0 +0:4/0/terrain_set = 0 +0:4/0/terrain = 0 +0:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -7.64714, 16, -13.3825, 12.7452, -16, 7.64714) +0:4/0/terrains_peering_bit/right_side = 0 +1:4/0 = 0 +1:4/0/terrain_set = 0 +1:4/0/terrain = 0 +1:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +1:4/0/terrains_peering_bit/right_side = 0 +1:4/0/terrains_peering_bit/left_side = 0 +2:4/0 = 0 +2:4/0/terrain_set = 0 +2:4/0/terrain = 0 +2:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 16, 7.64714, 16, 13.3825, 12.7452, 16, 7.64714) +2:4/0/terrains_peering_bit/left_side = 0 +4:4/0 = 0 +4:4/0/terrain_set = 0 +4:4/0/terrain = 0 +4:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 7.96577, -13.0639, 12.7452, -9.24029, 16, 7.64714, 16, 13.3825, 12.7452, 16, 7.64714) +6:4/0 = 0 +6:4/0/terrain_set = 0 +6:4/0/terrain = 0 +6:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +6:4/0/terrains_peering_bit/right_side = 0 +6:4/0/terrains_peering_bit/bottom_right_corner = 0 +6:4/0/terrains_peering_bit/bottom_side = 0 +6:4/0/terrains_peering_bit/top_side = 0 +7:4/0 = 0 +7:4/0/terrain_set = 0 +7:4/0/terrain = 0 +7:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +7:4/0/terrains_peering_bit/bottom_side = 0 +7:4/0/terrains_peering_bit/bottom_left_corner = 0 +7:4/0/terrains_peering_bit/left_side = 0 +7:4/0/terrains_peering_bit/top_side = 0 +9:4/0 = 0 +9:4/0/terrain_set = 0 +9:4/0/terrain = 0 +9:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +9:4/0/terrains_peering_bit/right_side = 0 +9:4/0/terrains_peering_bit/left_side = 0 +9:4/0/terrains_peering_bit/top_left_corner = 0 +9:4/0/terrains_peering_bit/top_side = 0 +10:4/0 = 0 +10:4/0/terrain_set = 0 +10:4/0/terrain = 0 +10:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +10:4/0/terrains_peering_bit/right_side = 0 +10:4/0/terrains_peering_bit/left_side = 0 +10:4/0/terrains_peering_bit/top_side = 0 +10:4/0/terrains_peering_bit/top_right_corner = 0 +12:4/0 = 0 +12:4/0/terrain_set = 0 +12:4/0/terrain = 0 +12:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +12:4/0/terrains_peering_bit/right_side = 0 +12:4/0/terrains_peering_bit/left_side = 0 +12:4/0/terrains_peering_bit/top_side = 0 +13:4/0 = 0 +13:4/0/terrain_set = 0 +13:4/0/terrain = 0 +13:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +13:4/0/terrains_peering_bit/bottom_side = 0 +13:4/0/terrains_peering_bit/left_side = 0 +13:4/0/terrains_peering_bit/top_side = 0 +15:4/0 = 0 +15:4/0/terrain_set = 0 +15:4/0/terrain = 0 +15:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 7.96577, -13.0639, 12.7452, -9.24029, 16, 16, 16) +15:4/0/terrains_peering_bit/right_side = 0 +15:4/0/terrains_peering_bit/top_side = 0 +16:4/0 = 0 +16:4/0/terrain_set = 0 +16:4/0/terrain = 0 +16:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 7.96577, 13.0639, 12.7452, 9.24029, 16, -16, 16) +16:4/0/terrains_peering_bit/left_side = 0 +16:4/0/terrains_peering_bit/top_side = 0 + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_0tnpc"] +texture = ExtResource("3_hey2k") +texture_region_size = Vector2i(32, 32) +0:0/0 = 0 +0:0/0/terrain_set = 0 +0:0/0/terrain = 1 + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_vtaks"] +texture = ExtResource("4_172wr") +texture_region_size = Vector2i(32, 32) +0:0/0 = 0 +0:0/0/terrain_set = 0 +0:0/0/terrains_peering_bit/bottom_side = 1 +0:1/0 = 0 +0:1/0/terrain_set = 0 +0:1/0/terrain = 1 +0:1/0/terrains_peering_bit/top_side = 1 + +[sub_resource type="TileSet" id="TileSet_gee14"] +tile_size = Vector2i(32, 32) +physics_layer_0/collision_layer = 2 +physics_layer_0/collision_mask = 13 +terrain_set_0/mode = 0 +terrain_set_0/terrain_0/name = "Main Terrain" +terrain_set_0/terrain_0/color = Color(0.5, 0.34375, 0.25, 1) +terrain_set_0/terrain_1/name = "Vegetation" +terrain_set_0/terrain_1/color = Color(0.5, 0.4375, 0.25, 1) +sources/0 = SubResource("TileSetAtlasSource_gee14") +sources/1 = SubResource("TileSetAtlasSource_0tnpc") +sources/2 = SubResource("TileSetAtlasSource_vtaks") + +[sub_resource type="Gradient" id="Gradient_iywne"] +offsets = PackedFloat32Array(0.206667, 0.66, 0.966667) +colors = PackedColorArray(0, 0, 0, 1, 0.192157, 0.188235, 0.227451, 1, 0.270588, 0.235294, 0.368627, 1) + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_p57ef"] +noise_type = 2 +cellular_return_type = 0 +domain_warp_enabled = true + +[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_u5sy4"] +noise = SubResource("FastNoiseLite_p57ef") +color_ramp = SubResource("Gradient_iywne") +seamless = true +in_3d_space = true + +[sub_resource type="Gradient" id="Gradient_p57ef"] +offsets = PackedFloat32Array(0.513333, 0.846667, 0.926667) +colors = PackedColorArray(0, 0, 0, 0, 0.5525, 0.85, 0.58225, 0.360784, 0.992333, 1, 0.54, 0.270588) + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_u5sy4"] +noise_type = 5 +frequency = 0.02 + +[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_iywne"] +noise = SubResource("FastNoiseLite_u5sy4") +color_ramp = SubResource("Gradient_p57ef") +seamless = true + +[sub_resource type="WorldBoundaryShape2D" id="WorldBoundaryShape2D_8cj0n"] + +[node name="Game" type="Node2D"] + +[node name="SceneManager" type="Node2D" parent="."] +unique_name_in_owner = true +script = ExtResource("1_6cvei") + +[node name="TileMapLayer" type="TileMapLayer" parent="."] +position = Vector2(0, 1) +tile_map_data = PackedByteArray("AADy/wMAAAABAAEAAADy/wQAAAABAAIAAADz/wQAAAABAAIAAADz/wMAAAABAAEAAAD0/wMAAAABAAEAAAD0/wQAAAABAAIAAADx/wQAAAAAAAIAAADx/wMAAAAAAAEAAAD4/wMAAAABAAAAAAD4/wQAAAABAAIAAAD5/wQAAAABAAIAAAD6/wQAAAABAAIAAAD7/wQAAAABAAIAAAD8/wQAAAABAAIAAAD9/wQAAAABAAIAAAD+/wQAAAAHAAAAAAD+/wMAAAABAAAAAAD9/wMAAAABAAAAAAD8/wMAAAABAAAAAAD7/wMAAAABAAAAAAD6/wMAAAABAAAAAAD5/wMAAAABAAAAAAABAAMAAAABAAAAAAABAAQAAAABAAEAAAABAAUAAAABAAIAAAACAAUAAAABAAIAAAADAAUAAAABAAIAAAAEAAUAAAABAAIAAAAEAAQAAAAGAAEAAAAEAAMAAAACAAAAAAADAAMAAAABAAAAAAACAAMAAAABAAAAAAACAAQAAAABAAEAAAADAAQAAAABAAEAAAD3/wMAAAABAAAAAAD2/wMAAAAGAAEAAAD1/wMAAAABAAEAAAD1/wQAAAABAAIAAAD2/wQAAAABAAIAAAD3/wQAAAABAAIAAAAKAAIAAAABAAAAAAAJAAIAAAAAAAAAAAAJAAMAAAAAAAEAAAAMAAEAAAABAAAAAAAMAAIAAAABAAEAAAAMAAMAAAABAAEAAAAMAAQAAAABAAEAAAANAAQAAAABAAEAAAANAAUAAAABAAIAAAAOAAUAAAABAAIAAAAPAAUAAAABAAIAAAAMAAUAAAABAAIAAAANAAEAAAABAAAAAAAOAAEAAAABAAAAAAANAAIAAAABAAEAAAANAAMAAAABAAEAAAAOAAQAAAABAAEAAAAPAAQAAAABAAEAAAAPAAMAAAABAAEAAAAPAAIAAAAGAAEAAAAPAAEAAAACAAAAAAAOAAIAAAABAAEAAAAOAAMAAAABAAEAAAARAAIAAAABAAAAAAARAAMAAAABAAEAAAARAAQAAAABAAEAAAARAAUAAAABAAIAAAASAAUAAAABAAIAAAATAAUAAAABAAIAAAAUAAUAAAABAAIAAAAVAAUAAAABAAIAAAAWAAUAAAABAAIAAAAWAAQAAAABAAEAAAAWAAMAAAAGAAEAAAAVAAMAAAABAAEAAAAVAAIAAAABAAAAAAAUAAIAAAABAAAAAAATAAIAAAABAAAAAAASAAIAAAABAAAAAAASAAMAAAABAAEAAAASAAQAAAABAAEAAAATAAQAAAABAAEAAAAUAAQAAAABAAEAAAAUAAMAAAABAAEAAAATAAMAAAABAAEAAAAVAAQAAAABAAEAAAAWAAIAAAACAAAAAAD4//7/AAABAAQAAAD5//7/AAAKAAMAAAD6//7/AAAHAAEAAAD7//7/AAACAAEAAAD9//3/AAAKAAQAAAD+//3/AAABAAIAAAD///3/AAABAAIAAAAAAP3/AAABAAIAAAAAAPz/AAABAAAAAAD+//z/AAABAAAAAAD///z/AAABAAAAAAACAP3/AAACAAQAAAABAP3/AAAJAAQAAAD5////AAAAAAIAAAD6////AAABAAIAAAD7////AAACAAIAAADx////AAAAAAAAAADy////AAABAAAAAADz////AAACAAAAAADx/wAAAAAAAAEAAADx/wEAAAAAAAEAAADy/wEAAAABAAEAAADz/wEAAAAGAAEAAADz/wAAAAACAAEAAADy/wAAAAABAAEAAADx/wIAAAAAAAEAAADy/wIAAAABAAEAAADz/wIAAAABAAEAAAD0/wIAAAABAAEAAAD1/wIAAAABAAEAAAD2/wIAAAACAAEAAAD3//7/AAAAAAQAAAD6//3/AAAAAAAAAAD7//3/AAAJAAMAAAABAPz/AAACAAAAAAD9//z/AAAAAAAAAAD8//3/AAABAAQAAAAHAAQAAAABAAAAAAAGAAQAAAABAAAAAAAFAAQAAAABAAAAAAALAAIAAAAHAAEAAAAQAAIAAAABAAAAAAAQAAMAAAABAAEAAAAQAAQAAAABAAEAAAAQAAUAAAABAAIAAAALAAMAAAABAAEAAAAKAAMAAAABAAEAAAAKAAQAAAABAAEAAAAKAAUAAAABAAIAAAAJAAUAAAABAAIAAAAJAAQAAAAHAAEAAAAIAAQAAAABAAAAAAAGAAUAAAABAAIAAAAFAAUAAAABAAIAAAAHAAUAAAABAAIAAAAIAAUAAAABAAIAAAALAAUAAAABAAIAAAALAAQAAAABAAEAAAAAAAQAAAABAAEAAAD//wQAAAABAAEAAAD+/wUAAAAAAAIAAAD//wUAAAABAAIAAAAAAAUAAAABAAIAAAD//wMAAAABAAAAAAAAAAMAAAABAAAAAAALAAEAAAAAAAAAAAD0/wEAAAABAAAAAAD1/wEAAAABAAAAAAALAPv/AAAAAAAAAAALAPz/AAAAAAEAAAALAP3/AAAAAAIAAAAMAPz/AAABAAEAAAANAPz/AAABAAEAAAAOAPz/AAABAAEAAAAOAPv/AAABAAAAAAANAPv/AAABAAAAAAAMAPv/AAABAAAAAAAMAP3/AAABAAIAAAANAP3/AAABAAIAAAAOAP3/AAABAAIAAAAPAPz/AAACAAEAAAAPAPv/AAACAAAAAAAPAP3/AAACAAIAAAAYAAMAAAACAAAAAAAXAAMAAAABAAAAAAAXAAQAAAABAAEAAAAXAAUAAAABAAIAAAAYAAUAAAACAAIAAAAYAAQAAAACAAEAAAAGAP3/AAAAAAQAAAAHAP3/AAACAAQAAADx//3/AAAAAAIAAADy//3/AAABAAIAAADz//3/AAACAAIAAADz//z/AAACAAAAAADy//z/AAABAAAAAADx//z/AAAAAAAAAAD2/wEAAAACAAAAAAD9/wIAAQAAAAAAAAD//wIAAQAAAAAAAAAFAAMAAQAAAAAAAAAIAAMAAQAAAAAAAAAJAAEAAQAAAAAAAAANAAAAAQAAAAAAAAD4/wIAAQAAAAAAAAD1/wAAAQAAAAAAAAD4//3/AQAAAAAAAAD8//z/AQAAAAAAAAACAPz/AQAAAAAAAAAGAPz/AQAAAAAAAAAXAAIAAQAAAAAAAAAHAAMAAgAAAAEAAAAHAAIAAgAAAAAAAAAOAAAAAgAAAAEAAAAOAP//AgAAAAAAAAASAAEAAgAAAAEAAAASAAAAAgAAAAAAAAAAAAIAAgAAAAEAAAAAAAEAAgAAAAAAAAD5/wIAAgAAAAEAAAD5/wEAAgAAAAAAAAALAPr/AgAAAAEAAAALAPn/AgAAAAAAAAD+//v/AgAAAAEAAAD+//r/AgAAAAAAAAAAAPv/AQAAAAAAAADx//v/AQAAAAAAAADy//v/AgAAAAEAAADy//r/AgAAAAAAAAD5//3/AgAAAAEAAAD5//z/AgAAAAAAAAD7//z/AgAAAAEAAAD7//v/AgAAAAAAAAD0/wAAAgAAAAEAAAD0////AgAAAAAAAAAHAPz/AgAAAAEAAAAHAPv/AgAAAAAAAAA=") +tile_set = SubResource("TileSet_gee14") + +[node name="Background" type="Parallax2D" parent="."] +z_index = -100 +scroll_scale = Vector2(0.5, 0.5) +repeat_size = Vector2(512, 512) +repeat_times = 3 +metadata/_edit_lock_ = true +metadata/_edit_group_ = true + +[node name="BackgroundSprite" type="Sprite2D" parent="Background"] +texture = SubResource("NoiseTexture2D_u5sy4") + +[node name="Foreground" type="Parallax2D" parent="."] +z_index = 10 +repeat_size = Vector2(512, 512) +autoscroll = Vector2(-10, 0) +repeat_times = 4 +metadata/_edit_group_ = true +metadata/_edit_lock_ = true + +[node name="ForegroundSprite" type="Sprite2D" parent="Foreground"] +texture = SubResource("NoiseTexture2D_iywne") + +[node name="Player" parent="." instance=ExtResource("5_g2hoc")] +z_index = 100 +position = Vector2(-201, 51) + +[node name="WorldBoundary" type="Area2D" parent="."] +position = Vector2(0, 360) +collision_layer = 2 +collision_mask = 5 +metadata/_edit_group_ = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="WorldBoundary"] +shape = SubResource("WorldBoundaryShape2D_8cj0n") +debug_color = Color(0, 0.509804, 0.00392157, 1) + +[node name="Triggers" type="Node" parent="."] + +[node name="Trigger" parent="Triggers" instance=ExtResource("6_fldb1")] +position = Vector2(104, 47) +scale = Vector2(0.485519, 0.332699) + +[node name="Trigger2" parent="Triggers" instance=ExtResource("6_fldb1")] +position = Vector2(532, 62) +scale = Vector2(0.594276, 0.546575) +intent = "powerup" + +[node name="Crates" type="Node" parent="."] + +[node name="SmallCrate" parent="Crates" groups=["explodable", "pushable"] instance=ExtResource("7_guvtl")] +z_index = 10 +position = Vector2(-146, -162) + +[node name="SmallCrate2" parent="Crates" groups=["explodable", "pushable"] instance=ExtResource("7_guvtl")] +z_index = 10 +position = Vector2(226, 60) + +[node name="SmallCrate3" parent="Crates" groups=["explodable", "pushable"] instance=ExtResource("7_guvtl")] +z_index = 10 +position = Vector2(623, 7) + +[node name="SmallCrate4" parent="Crates" groups=["explodable", "pushable"] instance=ExtResource("7_guvtl")] +z_index = 10 +position = Vector2(-433, -201) + +[node name="Coins" type="Node" parent="."] + +[node name="Coin" parent="Coins" instance=ExtResource("8_igmy8")] +z_index = 5 +position = Vector2(-49, 84) + +[node name="Coin2" parent="Coins" instance=ExtResource("8_igmy8")] +z_index = 5 +position = Vector2(-266, -76) + +[node name="Coin3" parent="Coins" instance=ExtResource("8_igmy8")] +z_index = 5 +position = Vector2(-18, -140) + +[node name="Enemies" type="Node" parent="."] + +[node name="Slimer" parent="Enemies" instance=ExtResource("9_wdtqu")] +position = Vector2(-123, 85) + +[node name="Slimer2" parent="Enemies" instance=ExtResource("9_wdtqu")] +position = Vector2(53, 86) + +[connection signal="body_entered" from="WorldBoundary" to="SceneManager" method="_on_world_boundary_body_entered"] +[connection signal="trigger_fired" from="Triggers/Trigger" to="." method="_on_trigger_fired"] +[connection signal="trigger_fired" from="Triggers/Trigger2" to="." method="_on_trigger_fired"] diff --git a/scenes/level_3.tscn b/scenes/level_3.tscn new file mode 100644 index 0000000..3873470 --- /dev/null +++ b/scenes/level_3.tscn @@ -0,0 +1,565 @@ +[gd_scene load_steps=21 format=4 uid="uid://csmari5rsi31l"] + +[ext_resource type="Script" uid="uid://b84pdw14l6gb6" path="res://scripts/scene_manager.gd" id="1_ha73p"] +[ext_resource type="Texture2D" uid="uid://dkco6bp2yelei" path="res://graphics/tiles/25-10-26-godot-course-Terrain (32x32)-color-exchange-1.png" id="2_vcx5n"] +[ext_resource type="Texture2D" uid="uid://bpf0sbb3o6rch" path="res://graphics/objects/veg_32x32.png" id="3_56dhn"] +[ext_resource type="Texture2D" uid="uid://ctrmx80fc52bt" path="res://graphics/objects/mushroom_32x64.png" id="4_ax3dk"] +[ext_resource type="PackedScene" uid="uid://d3y1iqmpknpyo" path="res://scenes/player.tscn" id="5_q2dsb"] +[ext_resource type="PackedScene" uid="uid://2pp1gtlflav8" path="res://scenes/trigger.tscn" id="6_p3r0x"] +[ext_resource type="PackedScene" uid="uid://yr1iqtid2ihb" path="res://scenes/small_crate.tscn" id="7_5xqnf"] +[ext_resource type="PackedScene" uid="uid://31idmjadvk3t" path="res://scenes/coin.tscn" id="8_una4e"] +[ext_resource type="PackedScene" uid="uid://bts74sqcd7k7h" path="res://scenes/slimer.tscn" id="9_ema3p"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_gee14"] +texture = ExtResource("2_vcx5n") +texture_region_size = Vector2i(32, 32) +0:0/0 = 0 +0:0/0/terrain_set = 0 +0:0/0/terrain = 0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:0/0/terrains_peering_bit/right_side = 0 +0:0/0/terrains_peering_bit/bottom_right_corner = 0 +0:0/0/terrains_peering_bit/bottom_side = 0 +1:0/0 = 0 +1:0/0/terrain_set = 0 +1:0/0/terrain = 0 +1:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +1:0/0/terrains_peering_bit/right_side = 0 +1:0/0/terrains_peering_bit/bottom_right_corner = 0 +1:0/0/terrains_peering_bit/bottom_side = 0 +1:0/0/terrains_peering_bit/bottom_left_corner = 0 +1:0/0/terrains_peering_bit/left_side = 0 +2:0/0 = 0 +2:0/0/terrain_set = 0 +2:0/0/terrain = 0 +2:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +2:0/0/terrains_peering_bit/bottom_side = 0 +2:0/0/terrains_peering_bit/bottom_left_corner = 0 +2:0/0/terrains_peering_bit/left_side = 0 +4:0/0 = 0 +4:0/0/terrain_set = 0 +4:0/0/terrain = 0 +4:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +4:0/0/terrains_peering_bit/bottom_side = 0 +6:0/0 = 0 +6:0/0/terrain_set = 0 +6:0/0/terrain = 0 +6:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +6:0/0/terrains_peering_bit/right_side = 0 +6:0/0/terrains_peering_bit/bottom_side = 0 +6:0/0/terrains_peering_bit/bottom_left_corner = 0 +6:0/0/terrains_peering_bit/left_side = 0 +6:0/0/terrains_peering_bit/top_left_corner = 0 +6:0/0/terrains_peering_bit/top_side = 0 +6:0/0/terrains_peering_bit/top_right_corner = 0 +7:0/0 = 0 +7:0/0/terrain_set = 0 +7:0/0/terrain = 0 +7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +7:0/0/terrains_peering_bit/right_side = 0 +7:0/0/terrains_peering_bit/bottom_right_corner = 0 +7:0/0/terrains_peering_bit/bottom_side = 0 +7:0/0/terrains_peering_bit/left_side = 0 +7:0/0/terrains_peering_bit/top_left_corner = 0 +7:0/0/terrains_peering_bit/top_side = 0 +7:0/0/terrains_peering_bit/top_right_corner = 0 +9:0/0 = 0 +9:0/0/terrain_set = 0 +9:0/0/terrain = 0 +9:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +9:0/0/terrains_peering_bit/right_side = 0 +9:0/0/terrains_peering_bit/bottom_right_corner = 0 +9:0/0/terrains_peering_bit/bottom_side = 0 +9:0/0/terrains_peering_bit/bottom_left_corner = 0 +9:0/0/terrains_peering_bit/left_side = 0 +9:0/0/terrains_peering_bit/top_side = 0 +10:0/0 = 0 +10:0/0/terrain_set = 0 +10:0/0/terrain = 0 +10:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +10:0/0/terrains_peering_bit/right_side = 0 +10:0/0/terrains_peering_bit/bottom_side = 0 +10:0/0/terrains_peering_bit/bottom_left_corner = 0 +10:0/0/terrains_peering_bit/left_side = 0 +10:0/0/terrains_peering_bit/top_left_corner = 0 +10:0/0/terrains_peering_bit/top_side = 0 +12:0/0 = 0 +12:0/0/terrain_set = 0 +12:0/0/terrain = 0 +12:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +12:0/0/terrains_peering_bit/right_side = 0 +12:0/0/terrains_peering_bit/bottom_right_corner = 0 +12:0/0/terrains_peering_bit/bottom_side = 0 +12:0/0/terrains_peering_bit/left_side = 0 +12:0/0/terrains_peering_bit/top_side = 0 +13:0/0 = 0 +13:0/0/terrain_set = 0 +13:0/0/terrain = 0 +13:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +13:0/0/terrains_peering_bit/right_side = 0 +13:0/0/terrains_peering_bit/bottom_side = 0 +13:0/0/terrains_peering_bit/bottom_left_corner = 0 +13:0/0/terrains_peering_bit/left_side = 0 +13:0/0/terrains_peering_bit/top_side = 0 +15:0/0 = 0 +15:0/0/terrain_set = 0 +15:0/0/terrain = 0 +15:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +15:0/0/terrains_peering_bit/right_side = 0 +15:0/0/terrains_peering_bit/bottom_side = 0 +15:0/0/terrains_peering_bit/left_side = 0 +15:0/0/terrains_peering_bit/top_side = 0 +0:1/0 = 0 +0:1/0/terrain_set = 0 +0:1/0/terrain = 0 +0:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:1/0/terrains_peering_bit/right_side = 0 +0:1/0/terrains_peering_bit/bottom_right_corner = 0 +0:1/0/terrains_peering_bit/bottom_side = 0 +0:1/0/terrains_peering_bit/top_side = 0 +0:1/0/terrains_peering_bit/top_right_corner = 0 +1:1/0 = 0 +1:1/0/terrain_set = 0 +1:1/0/terrain = 0 +1:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +1:1/0/terrains_peering_bit/right_side = 0 +1:1/0/terrains_peering_bit/bottom_right_corner = 0 +1:1/0/terrains_peering_bit/bottom_side = 0 +1:1/0/terrains_peering_bit/bottom_left_corner = 0 +1:1/0/terrains_peering_bit/left_side = 0 +1:1/0/terrains_peering_bit/top_left_corner = 0 +1:1/0/terrains_peering_bit/top_side = 0 +1:1/0/terrains_peering_bit/top_right_corner = 0 +2:1/0 = 0 +2:1/0/terrain_set = 0 +2:1/0/terrain = 0 +2:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +2:1/0/terrains_peering_bit/bottom_side = 0 +2:1/0/terrains_peering_bit/bottom_left_corner = 0 +2:1/0/terrains_peering_bit/left_side = 0 +2:1/0/terrains_peering_bit/top_left_corner = 0 +2:1/0/terrains_peering_bit/top_side = 0 +4:1/0 = 0 +4:1/0/terrain_set = 0 +4:1/0/terrain = 0 +4:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +4:1/0/terrains_peering_bit/bottom_side = 0 +4:1/0/terrains_peering_bit/top_side = 0 +6:1/0 = 0 +6:1/0/terrain_set = 0 +6:1/0/terrain = 0 +6:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +6:1/0/terrains_peering_bit/right_side = 0 +6:1/0/terrains_peering_bit/bottom_right_corner = 0 +6:1/0/terrains_peering_bit/bottom_side = 0 +6:1/0/terrains_peering_bit/bottom_left_corner = 0 +6:1/0/terrains_peering_bit/left_side = 0 +6:1/0/terrains_peering_bit/top_left_corner = 0 +6:1/0/terrains_peering_bit/top_side = 0 +7:1/0 = 0 +7:1/0/terrain_set = 0 +7:1/0/terrain = 0 +7:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +7:1/0/terrains_peering_bit/right_side = 0 +7:1/0/terrains_peering_bit/bottom_right_corner = 0 +7:1/0/terrains_peering_bit/bottom_side = 0 +7:1/0/terrains_peering_bit/bottom_left_corner = 0 +7:1/0/terrains_peering_bit/left_side = 0 +7:1/0/terrains_peering_bit/top_side = 0 +7:1/0/terrains_peering_bit/top_right_corner = 0 +9:1/0 = 0 +9:1/0/terrain_set = 0 +9:1/0/terrain = 0 +9:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +9:1/0/terrains_peering_bit/right_side = 0 +9:1/0/terrains_peering_bit/bottom_right_corner = 0 +9:1/0/terrains_peering_bit/bottom_side = 0 +9:1/0/terrains_peering_bit/left_side = 0 +9:1/0/terrains_peering_bit/top_side = 0 +9:1/0/terrains_peering_bit/top_right_corner = 0 +10:1/0 = 0 +10:1/0/terrain_set = 0 +10:1/0/terrain = 0 +10:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +10:1/0/terrains_peering_bit/right_side = 0 +10:1/0/terrains_peering_bit/bottom_side = 0 +10:1/0/terrains_peering_bit/left_side = 0 +10:1/0/terrains_peering_bit/top_left_corner = 0 +10:1/0/terrains_peering_bit/top_side = 0 +10:1/0/terrains_peering_bit/top_right_corner = 0 +12:1/0 = 0 +12:1/0/terrain_set = 0 +12:1/0/terrain = 0 +12:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +12:1/0/terrains_peering_bit/right_side = 0 +12:1/0/terrains_peering_bit/bottom_side = 0 +12:1/0/terrains_peering_bit/left_side = 0 +12:1/0/terrains_peering_bit/top_side = 0 +12:1/0/terrains_peering_bit/top_right_corner = 0 +13:1/0 = 0 +13:1/0/terrain_set = 0 +13:1/0/terrain = 0 +13:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +13:1/0/terrains_peering_bit/right_side = 0 +13:1/0/terrains_peering_bit/bottom_side = 0 +13:1/0/terrains_peering_bit/left_side = 0 +13:1/0/terrains_peering_bit/top_left_corner = 0 +13:1/0/terrains_peering_bit/top_side = 0 +15:1/0 = 0 +15:1/0/terrain_set = 0 +15:1/0/terrain = 0 +15:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +15:1/0/terrains_peering_bit/right_side = 0 +15:1/0/terrains_peering_bit/bottom_side = 0 +15:1/0/terrains_peering_bit/bottom_left_corner = 0 +15:1/0/terrains_peering_bit/left_side = 0 +15:1/0/terrains_peering_bit/top_side = 0 +15:1/0/terrains_peering_bit/top_right_corner = 0 +16:1/0 = 0 +16:1/0/terrain_set = 0 +16:1/0/terrain = 0 +16:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +16:1/0/terrains_peering_bit/right_side = 0 +16:1/0/terrains_peering_bit/bottom_right_corner = 0 +16:1/0/terrains_peering_bit/bottom_side = 0 +16:1/0/terrains_peering_bit/left_side = 0 +16:1/0/terrains_peering_bit/top_left_corner = 0 +16:1/0/terrains_peering_bit/top_side = 0 +0:2/0 = 0 +0:2/0/terrain_set = 0 +0:2/0/terrain = 0 +0:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 7.96577, -13.0639, 12.7452, -9.24029, 16, 16, 16) +0:2/0/terrains_peering_bit/right_side = 0 +0:2/0/terrains_peering_bit/top_side = 0 +0:2/0/terrains_peering_bit/top_right_corner = 0 +1:2/0 = 0 +1:2/0/terrain_set = 0 +1:2/0/terrain = 0 +1:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +1:2/0/terrains_peering_bit/right_side = 0 +1:2/0/terrains_peering_bit/left_side = 0 +1:2/0/terrains_peering_bit/top_left_corner = 0 +1:2/0/terrains_peering_bit/top_side = 0 +1:2/0/terrains_peering_bit/top_right_corner = 0 +2:2/0 = 0 +2:2/0/terrain_set = 0 +2:2/0/terrain = 0 +2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 7.96577, 13.0639, 12.7452, 9.24029, 16, -16, 16) +2:2/0/terrains_peering_bit/left_side = 0 +2:2/0/terrains_peering_bit/top_left_corner = 0 +2:2/0/terrains_peering_bit/top_side = 0 +4:2/0 = 0 +4:2/0/terrain_set = 0 +4:2/0/terrain = 0 +4:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 7.96577, -13.0639, 12.7452, -9.24029, 16, 7.64714, 16, 13.3825, 12.7452, 16, 7.64714) +4:2/0/terrains_peering_bit/top_side = 0 +6:3/0 = 0 +6:3/0/terrain_set = 0 +6:3/0/terrain = 0 +6:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +6:3/0/terrains_peering_bit/right_side = 0 +6:3/0/terrains_peering_bit/bottom_side = 0 +6:3/0/terrains_peering_bit/top_side = 0 +6:3/0/terrains_peering_bit/top_right_corner = 0 +7:3/0 = 0 +7:3/0/terrain_set = 0 +7:3/0/terrain = 0 +7:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +7:3/0/terrains_peering_bit/bottom_side = 0 +7:3/0/terrains_peering_bit/left_side = 0 +7:3/0/terrains_peering_bit/top_left_corner = 0 +7:3/0/terrains_peering_bit/top_side = 0 +9:3/0 = 0 +9:3/0/terrain_set = 0 +9:3/0/terrain = 0 +9:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +9:3/0/terrains_peering_bit/right_side = 0 +9:3/0/terrains_peering_bit/bottom_side = 0 +9:3/0/terrains_peering_bit/bottom_left_corner = 0 +9:3/0/terrains_peering_bit/left_side = 0 +10:3/0 = 0 +10:3/0/terrain_set = 0 +10:3/0/terrain = 0 +10:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +10:3/0/terrains_peering_bit/right_side = 0 +10:3/0/terrains_peering_bit/bottom_right_corner = 0 +10:3/0/terrains_peering_bit/bottom_side = 0 +10:3/0/terrains_peering_bit/left_side = 0 +12:3/0 = 0 +12:3/0/terrain_set = 0 +12:3/0/terrain = 0 +12:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +12:3/0/terrains_peering_bit/right_side = 0 +12:3/0/terrains_peering_bit/bottom_side = 0 +12:3/0/terrains_peering_bit/top_side = 0 +13:3/0 = 0 +13:3/0/terrain_set = 0 +13:3/0/terrain = 0 +13:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +13:3/0/terrains_peering_bit/right_side = 0 +13:3/0/terrains_peering_bit/bottom_side = 0 +13:3/0/terrains_peering_bit/left_side = 0 +15:3/0 = 0 +15:3/0/terrain_set = 0 +15:3/0/terrain = 0 +15:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +15:3/0/terrains_peering_bit/right_side = 0 +15:3/0/terrains_peering_bit/bottom_side = 0 +16:3/0 = 0 +16:3/0/terrain_set = 0 +16:3/0/terrain = 0 +16:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +16:3/0/terrains_peering_bit/bottom_side = 0 +16:3/0/terrains_peering_bit/left_side = 0 +0:4/0 = 0 +0:4/0/terrain_set = 0 +0:4/0/terrain = 0 +0:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -7.64714, 16, -13.3825, 12.7452, -16, 7.64714) +0:4/0/terrains_peering_bit/right_side = 0 +1:4/0 = 0 +1:4/0/terrain_set = 0 +1:4/0/terrain = 0 +1:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +1:4/0/terrains_peering_bit/right_side = 0 +1:4/0/terrains_peering_bit/left_side = 0 +2:4/0 = 0 +2:4/0/terrain_set = 0 +2:4/0/terrain = 0 +2:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 16, 7.64714, 16, 13.3825, 12.7452, 16, 7.64714) +2:4/0/terrains_peering_bit/left_side = 0 +4:4/0 = 0 +4:4/0/terrain_set = 0 +4:4/0/terrain = 0 +4:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 7.96577, -13.0639, 12.7452, -9.24029, 16, 7.64714, 16, 13.3825, 12.7452, 16, 7.64714) +6:4/0 = 0 +6:4/0/terrain_set = 0 +6:4/0/terrain = 0 +6:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +6:4/0/terrains_peering_bit/right_side = 0 +6:4/0/terrains_peering_bit/bottom_right_corner = 0 +6:4/0/terrains_peering_bit/bottom_side = 0 +6:4/0/terrains_peering_bit/top_side = 0 +7:4/0 = 0 +7:4/0/terrain_set = 0 +7:4/0/terrain = 0 +7:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +7:4/0/terrains_peering_bit/bottom_side = 0 +7:4/0/terrains_peering_bit/bottom_left_corner = 0 +7:4/0/terrains_peering_bit/left_side = 0 +7:4/0/terrains_peering_bit/top_side = 0 +9:4/0 = 0 +9:4/0/terrain_set = 0 +9:4/0/terrain = 0 +9:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +9:4/0/terrains_peering_bit/right_side = 0 +9:4/0/terrains_peering_bit/left_side = 0 +9:4/0/terrains_peering_bit/top_left_corner = 0 +9:4/0/terrains_peering_bit/top_side = 0 +10:4/0 = 0 +10:4/0/terrain_set = 0 +10:4/0/terrain = 0 +10:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +10:4/0/terrains_peering_bit/right_side = 0 +10:4/0/terrains_peering_bit/left_side = 0 +10:4/0/terrains_peering_bit/top_side = 0 +10:4/0/terrains_peering_bit/top_right_corner = 0 +12:4/0 = 0 +12:4/0/terrain_set = 0 +12:4/0/terrain = 0 +12:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +12:4/0/terrains_peering_bit/right_side = 0 +12:4/0/terrains_peering_bit/left_side = 0 +12:4/0/terrains_peering_bit/top_side = 0 +13:4/0 = 0 +13:4/0/terrain_set = 0 +13:4/0/terrain = 0 +13:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +13:4/0/terrains_peering_bit/bottom_side = 0 +13:4/0/terrains_peering_bit/left_side = 0 +13:4/0/terrains_peering_bit/top_side = 0 +15:4/0 = 0 +15:4/0/terrain_set = 0 +15:4/0/terrain = 0 +15:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 7.96577, -13.0639, 12.7452, -9.24029, 16, 16, 16) +15:4/0/terrains_peering_bit/right_side = 0 +15:4/0/terrains_peering_bit/top_side = 0 +16:4/0 = 0 +16:4/0/terrain_set = 0 +16:4/0/terrain = 0 +16:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 7.96577, 13.0639, 12.7452, 9.24029, 16, -16, 16) +16:4/0/terrains_peering_bit/left_side = 0 +16:4/0/terrains_peering_bit/top_side = 0 + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_0tnpc"] +texture = ExtResource("3_56dhn") +texture_region_size = Vector2i(32, 32) +0:0/0 = 0 +0:0/0/terrain_set = 0 +0:0/0/terrain = 1 + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_vtaks"] +texture = ExtResource("4_ax3dk") +texture_region_size = Vector2i(32, 32) +0:0/0 = 0 +0:0/0/terrain_set = 0 +0:0/0/terrains_peering_bit/bottom_side = 1 +0:1/0 = 0 +0:1/0/terrain_set = 0 +0:1/0/terrain = 1 +0:1/0/terrains_peering_bit/top_side = 1 + +[sub_resource type="TileSet" id="TileSet_gee14"] +tile_size = Vector2i(32, 32) +physics_layer_0/collision_layer = 2 +physics_layer_0/collision_mask = 13 +terrain_set_0/mode = 0 +terrain_set_0/terrain_0/name = "Main Terrain" +terrain_set_0/terrain_0/color = Color(0.5, 0.34375, 0.25, 1) +terrain_set_0/terrain_1/name = "Vegetation" +terrain_set_0/terrain_1/color = Color(0.5, 0.4375, 0.25, 1) +sources/0 = SubResource("TileSetAtlasSource_gee14") +sources/1 = SubResource("TileSetAtlasSource_0tnpc") +sources/2 = SubResource("TileSetAtlasSource_vtaks") + +[sub_resource type="Gradient" id="Gradient_iywne"] +offsets = PackedFloat32Array(0.206667, 0.66, 0.966667) +colors = PackedColorArray(0, 0, 0, 1, 0.192157, 0.188235, 0.227451, 1, 0.270588, 0.235294, 0.368627, 1) + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_p57ef"] +noise_type = 2 +cellular_return_type = 0 +domain_warp_enabled = true + +[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_u5sy4"] +noise = SubResource("FastNoiseLite_p57ef") +color_ramp = SubResource("Gradient_iywne") +seamless = true +in_3d_space = true + +[sub_resource type="Gradient" id="Gradient_p57ef"] +offsets = PackedFloat32Array(0.513333, 0.846667, 0.926667) +colors = PackedColorArray(0, 0, 0, 0, 0.5525, 0.85, 0.58225, 0.360784, 0.992333, 1, 0.54, 0.270588) + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_u5sy4"] +noise_type = 5 +frequency = 0.02 + +[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_iywne"] +noise = SubResource("FastNoiseLite_u5sy4") +color_ramp = SubResource("Gradient_p57ef") +seamless = true + +[sub_resource type="WorldBoundaryShape2D" id="WorldBoundaryShape2D_8cj0n"] + +[node name="Game" type="Node2D"] + +[node name="SceneManager" type="Node2D" parent="."] +unique_name_in_owner = true +script = ExtResource("1_ha73p") + +[node name="TileMapLayer" type="TileMapLayer" parent="."] +position = Vector2(0, 1) +tile_map_data = PackedByteArray("AADy/wMAAAABAAEAAADy/wQAAAABAAIAAADz/wQAAAABAAIAAADz/wMAAAABAAEAAAD0/wMAAAABAAEAAAD0/wQAAAABAAIAAADx/wQAAAAAAAIAAADx/wMAAAAAAAEAAAD4/wMAAAABAAAAAAD4/wQAAAABAAIAAAD5/wQAAAABAAIAAAD6/wQAAAABAAIAAAD7/wQAAAABAAIAAAD8/wQAAAABAAIAAAD9/wQAAAABAAIAAAD+/wQAAAAHAAAAAAD+/wMAAAABAAAAAAD9/wMAAAABAAAAAAD8/wMAAAABAAAAAAD7/wMAAAABAAAAAAD6/wMAAAABAAAAAAD5/wMAAAABAAAAAAABAAMAAAABAAAAAAABAAQAAAABAAEAAAABAAUAAAABAAIAAAACAAUAAAABAAIAAAADAAUAAAABAAIAAAAEAAUAAAABAAIAAAAEAAQAAAAGAAEAAAAEAAMAAAACAAAAAAADAAMAAAABAAAAAAACAAMAAAABAAAAAAACAAQAAAABAAEAAAADAAQAAAABAAEAAAD3/wMAAAABAAAAAAD2/wMAAAAGAAEAAAD1/wMAAAABAAEAAAD1/wQAAAABAAIAAAD2/wQAAAABAAIAAAD3/wQAAAABAAIAAAAKAAIAAAABAAAAAAAJAAIAAAAAAAAAAAAJAAMAAAAAAAEAAAAMAAEAAAABAAAAAAAMAAIAAAABAAEAAAAMAAMAAAABAAEAAAAMAAQAAAABAAEAAAANAAQAAAABAAEAAAANAAUAAAABAAIAAAAOAAUAAAABAAIAAAAPAAUAAAABAAIAAAAMAAUAAAABAAIAAAANAAEAAAABAAAAAAAOAAEAAAABAAAAAAANAAIAAAABAAEAAAANAAMAAAABAAEAAAAOAAQAAAABAAEAAAAPAAQAAAABAAEAAAAPAAMAAAABAAEAAAAPAAIAAAAGAAEAAAAPAAEAAAACAAAAAAAOAAIAAAABAAEAAAAOAAMAAAABAAEAAAARAAIAAAABAAAAAAARAAMAAAABAAEAAAARAAQAAAABAAEAAAARAAUAAAABAAIAAAASAAUAAAABAAIAAAATAAUAAAABAAIAAAAUAAUAAAABAAIAAAAVAAUAAAABAAIAAAAWAAUAAAABAAIAAAAWAAQAAAABAAEAAAAWAAMAAAAGAAEAAAAVAAMAAAABAAEAAAAVAAIAAAABAAAAAAAUAAIAAAABAAAAAAATAAIAAAABAAAAAAASAAIAAAABAAAAAAASAAMAAAABAAEAAAASAAQAAAABAAEAAAATAAQAAAABAAEAAAAUAAQAAAABAAEAAAAUAAMAAAABAAEAAAATAAMAAAABAAEAAAAVAAQAAAABAAEAAAAWAAIAAAACAAAAAAD4//7/AAABAAQAAAD5//7/AAAKAAMAAAD6//7/AAAHAAEAAAD7//7/AAACAAEAAAD9//3/AAAKAAQAAAD+//3/AAABAAIAAAD///3/AAABAAIAAAAAAP3/AAABAAIAAAAAAPz/AAABAAAAAAD+//z/AAABAAAAAAD///z/AAABAAAAAAACAP3/AAACAAQAAAABAP3/AAAJAAQAAAD5////AAAAAAIAAAD6////AAABAAIAAAD7////AAACAAIAAADx////AAAAAAAAAADy////AAABAAAAAADz////AAACAAAAAADx/wAAAAAAAAEAAADx/wEAAAAAAAEAAADy/wEAAAABAAEAAADz/wEAAAAGAAEAAADz/wAAAAACAAEAAADy/wAAAAABAAEAAADx/wIAAAAAAAEAAADy/wIAAAABAAEAAADz/wIAAAABAAEAAAD0/wIAAAABAAEAAAD1/wIAAAABAAEAAAD2/wIAAAACAAEAAAD3//7/AAAAAAQAAAD6//3/AAAAAAAAAAD7//3/AAAJAAMAAAABAPz/AAACAAAAAAD9//z/AAAAAAAAAAD8//3/AAABAAQAAAAHAAQAAAABAAAAAAAGAAQAAAABAAAAAAAFAAQAAAABAAAAAAALAAIAAAAHAAEAAAAQAAIAAAABAAAAAAAQAAMAAAABAAEAAAAQAAQAAAABAAEAAAAQAAUAAAABAAIAAAALAAMAAAABAAEAAAAKAAMAAAABAAEAAAAKAAQAAAABAAEAAAAKAAUAAAABAAIAAAAJAAUAAAABAAIAAAAJAAQAAAAHAAEAAAAIAAQAAAABAAAAAAAGAAUAAAABAAIAAAAFAAUAAAABAAIAAAAHAAUAAAABAAIAAAAIAAUAAAABAAIAAAALAAUAAAABAAIAAAALAAQAAAABAAEAAAAAAAQAAAABAAEAAAD//wQAAAABAAEAAAD+/wUAAAAAAAIAAAD//wUAAAABAAIAAAAAAAUAAAABAAIAAAD//wMAAAABAAAAAAAAAAMAAAABAAAAAAALAAEAAAAAAAAAAAD0/wEAAAABAAAAAAD1/wEAAAABAAAAAAALAPv/AAAAAAAAAAALAPz/AAAAAAEAAAALAP3/AAAAAAIAAAAMAPz/AAABAAEAAAANAPz/AAABAAEAAAAOAPz/AAABAAEAAAAOAPv/AAABAAAAAAANAPv/AAABAAAAAAAMAPv/AAABAAAAAAAMAP3/AAABAAIAAAANAP3/AAABAAIAAAAOAP3/AAABAAIAAAAPAPz/AAACAAEAAAAPAPv/AAACAAAAAAAPAP3/AAACAAIAAAAYAAMAAAACAAAAAAAXAAMAAAABAAAAAAAXAAQAAAABAAEAAAAXAAUAAAABAAIAAAAYAAUAAAACAAIAAAAYAAQAAAACAAEAAAAGAP3/AAAAAAQAAAAHAP3/AAACAAQAAADx//3/AAAAAAIAAADy//3/AAABAAIAAADz//3/AAACAAIAAADz//z/AAACAAAAAADy//z/AAABAAAAAADx//z/AAAAAAAAAAD2/wEAAAACAAAAAAD9/wIAAQAAAAAAAAD//wIAAQAAAAAAAAAFAAMAAQAAAAAAAAAIAAMAAQAAAAAAAAAJAAEAAQAAAAAAAAANAAAAAQAAAAAAAAD4/wIAAQAAAAAAAAD1/wAAAQAAAAAAAAD4//3/AQAAAAAAAAD8//z/AQAAAAAAAAACAPz/AQAAAAAAAAAGAPz/AQAAAAAAAAAXAAIAAQAAAAAAAAAHAAMAAgAAAAEAAAAHAAIAAgAAAAAAAAAOAAAAAgAAAAEAAAAOAP//AgAAAAAAAAASAAEAAgAAAAEAAAASAAAAAgAAAAAAAAAAAAIAAgAAAAEAAAAAAAEAAgAAAAAAAAD5/wIAAgAAAAEAAAD5/wEAAgAAAAAAAAALAPr/AgAAAAEAAAALAPn/AgAAAAAAAAD+//v/AgAAAAEAAAD+//r/AgAAAAAAAAAAAPv/AQAAAAAAAADx//v/AQAAAAAAAADy//v/AgAAAAEAAADy//r/AgAAAAAAAAD5//3/AgAAAAEAAAD5//z/AgAAAAAAAAD7//z/AgAAAAEAAAD7//v/AgAAAAAAAAD0/wAAAgAAAAEAAAD0////AgAAAAAAAAAHAPz/AgAAAAEAAAAHAPv/AgAAAAAAAAA=") +tile_set = SubResource("TileSet_gee14") + +[node name="Background" type="Parallax2D" parent="."] +z_index = -100 +scroll_scale = Vector2(0.5, 0.5) +repeat_size = Vector2(512, 512) +repeat_times = 3 +metadata/_edit_lock_ = true +metadata/_edit_group_ = true + +[node name="BackgroundSprite" type="Sprite2D" parent="Background"] +texture = SubResource("NoiseTexture2D_u5sy4") + +[node name="Foreground" type="Parallax2D" parent="."] +z_index = 10 +repeat_size = Vector2(512, 512) +autoscroll = Vector2(-10, 0) +repeat_times = 4 +metadata/_edit_group_ = true +metadata/_edit_lock_ = true + +[node name="ForegroundSprite" type="Sprite2D" parent="Foreground"] +texture = SubResource("NoiseTexture2D_iywne") + +[node name="Player" parent="." instance=ExtResource("5_q2dsb")] +z_index = 100 +position = Vector2(-201, 51) + +[node name="WorldBoundary" type="Area2D" parent="."] +position = Vector2(0, 360) +collision_layer = 2 +collision_mask = 5 +metadata/_edit_group_ = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="WorldBoundary"] +shape = SubResource("WorldBoundaryShape2D_8cj0n") +debug_color = Color(0, 0.509804, 0.00392157, 1) + +[node name="Triggers" type="Node" parent="."] + +[node name="Trigger" parent="Triggers" instance=ExtResource("6_p3r0x")] +position = Vector2(104, 47) +scale = Vector2(0.485519, 0.332699) + +[node name="Trigger2" parent="Triggers" instance=ExtResource("6_p3r0x")] +position = Vector2(532, 62) +scale = Vector2(0.594276, 0.546575) +intent = "powerup" + +[node name="Crates" type="Node" parent="."] + +[node name="SmallCrate" parent="Crates" groups=["explodable", "pushable"] instance=ExtResource("7_5xqnf")] +z_index = 10 + +[node name="SmallCrate2" parent="Crates" groups=["explodable", "pushable"] instance=ExtResource("7_5xqnf")] +z_index = 10 +position = Vector2(216, 52) + +[node name="SmallCrate3" parent="Crates" groups=["explodable", "pushable"] instance=ExtResource("7_5xqnf")] +z_index = 10 +position = Vector2(-253, 10) + +[node name="SmallCrate4" parent="Crates" groups=["explodable", "pushable"] instance=ExtResource("7_5xqnf")] +z_index = 10 +position = Vector2(-82, -5) + +[node name="Coins" type="Node" parent="."] + +[node name="Coin" parent="Coins" instance=ExtResource("8_una4e")] +z_index = 5 +position = Vector2(-49, 84) + +[node name="Coin2" parent="Coins" instance=ExtResource("8_una4e")] +z_index = 5 +position = Vector2(-266, -76) + +[node name="Coin3" parent="Coins" instance=ExtResource("8_una4e")] +z_index = 5 +position = Vector2(-18, -140) + +[node name="Coin4" parent="Coins" instance=ExtResource("8_una4e")] +z_index = 5 +position = Vector2(203, -105) + +[node name="Coin5" parent="Coins" instance=ExtResource("8_una4e")] +z_index = 5 +position = Vector2(381, -169) + +[node name="Coin6" parent="Coins" instance=ExtResource("8_una4e")] +z_index = 5 +position = Vector2(402, 21) + +[node name="Enemies" type="Node" parent="."] + +[node name="Slimer" parent="Enemies" instance=ExtResource("9_ema3p")] +position = Vector2(-123, 85) + +[node name="Slimer2" parent="Enemies" instance=ExtResource("9_ema3p")] +position = Vector2(53, 86) + +[connection signal="body_entered" from="WorldBoundary" to="SceneManager" method="_on_world_boundary_body_entered"] +[connection signal="trigger_fired" from="Triggers/Trigger" to="." method="_on_trigger_fired"] +[connection signal="trigger_fired" from="Triggers/Trigger2" to="." method="_on_trigger_fired"] diff --git a/scenes/slimer.tscn b/scenes/slimer.tscn index db9524b..4c9669b 100644 --- a/scenes/slimer.tscn +++ b/scenes/slimer.tscn @@ -43,6 +43,8 @@ animations = [{ size = Vector2(14, 15) [node name="Slimer" type="Area2D"] +collision_layer = 16 +collision_mask = 15 script = ExtResource("1_4oill") [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] @@ -55,4 +57,18 @@ frame_progress = 0.901815 position = Vector2(0, 4.5) shape = SubResource("RectangleShape2D_02r3y") +[node name="RightCast" type="RayCast2D" parent="."] +target_position = Vector2(20, 0) + +[node name="LeftCast" type="RayCast2D" parent="."] +target_position = Vector2(-20, 0) + +[node name="RightDownCast" type="RayCast2D" parent="."] +position = Vector2(7, 0) +target_position = Vector2(0, 20) + +[node name="LeftDownCast" type="RayCast2D" parent="."] +position = Vector2(-7, 0) +target_position = Vector2(0, 20) + [connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/scripts/bullet.gd b/scripts/bullet.gd index 43d36ef..70a2345 100644 --- a/scripts/bullet.gd +++ b/scripts/bullet.gd @@ -1,11 +1,10 @@ class_name Bullet extends Area2D +## Bang bang! @export var speed : float = 700 -# Called when the node enters the scene tree for the first time. -func _ready() -> void: - pass # Replace with function body. +signal bullet_damaged(thing_damaged, bullet) # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta: float) -> void: @@ -13,3 +12,7 @@ func _process(delta: float) -> void: func set_speed(value) -> void: speed = value + + +func _on_area_entered(area: Area2D) -> void: + bullet_damaged.emit(area, self) # Replace with function body. diff --git a/scripts/coin.gd b/scripts/coin.gd index ba9c068..0fa2024 100644 --- a/scripts/coin.gd +++ b/scripts/coin.gd @@ -7,3 +7,8 @@ func _on_body_entered(body: Node2D) -> void: print_debug("body connected with coin") if body is Player: coin_collected.emit(body, self) + if body is Grenade: + self.visible = false + body.explode() + await body.animated_sprite_2d.animation_finished + self.queue_free() diff --git a/scripts/game_controller.gd b/scripts/game_controller.gd index 9588de8..7e347c0 100644 --- a/scripts/game_controller.gd +++ b/scripts/game_controller.gd @@ -2,6 +2,48 @@ extends Node2D var coins_collected : int = 0 var total_coins : int = 0 +var levels = ["res://scenes/game.tscn", "res://scenes/level_2.tscn", "res://scenes/level_3.tscn"] +var timers = [10, 15, 20] +var time_available : int = 0 +var current_level = 0 +var timer = Timer.new() + +## Signals +signal level_changed(level) +signal destroyed(body) +signal player_damaged(health, max_health) +signal player_death + +var enemy_stats : CharacterStats +var player_stats : CharacterStats +var enemies_dict : Dictionary = {} +var player_current_health : int = 0 + +func _ready() -> void: + # load in characters + enemy_stats = load("res://resources/slime_stats.tres") + player_stats = load("res://resources/player_stats.tres") + player_current_health = player_stats.starting_health + add_child(timer) + timer.wait_time = 1.0 + timer.one_shot = false + timer.connect("timeout", second_counter) + timer.start() + +func second_counter() -> void: + time_available -= 1 + if time_available <= 0: + print_debug("You ran out of time! Emitting level_changed signal") + #get_tree().call_deferred("change_scene_to_file", levels[current_level]) + #await get_tree().create_timer(1.0).timeout + level_changed.emit(levels[current_level]) + +func reset() -> void: + print_debug("Resetting the level") + enemies_dict.clear() + player_current_health = player_stats["starting_health"] + time_available = timers[current_level] + print_debug("You have %s seconds to find all the coins" % str(time_available)) func _on_trigger_fired(intent: Variant, body: PhysicsBody2D) -> void: print("Game controller knows %s trigger fired " % intent) @@ -9,7 +51,7 @@ func _on_trigger_fired(intent: Variant, body: PhysicsBody2D) -> void: "destroy": print("Destroy this thing!") if body is RigidBody2D: - body.queue_free() + destroyed.emit(body) "powerup": print("Power this thing up!") @@ -18,15 +60,52 @@ func on_coin_collected(_body, coin) -> void: coins_collected += 1 print_debug("Coins collected: %s" % str(coins_collected)) print_debug("There are %s coins remaining" % str(total_coins - coins_collected)) - coin.queue_free() - if coins_collected >= total_coins: - print_debug("You win!") - await get_tree().create_timer(1.0).timeout - get_tree().call_deferred("reload_current_scene") - -func on_player_slimed(body, slime) -> void: - print_debug("GC knows player slimed") + destroyed.emit(coin) func set_total_coins(value) -> void: - total_coins = value - print_debug("There are %s coins in the level" % str(total_coins)) + print_debug("Setting coin total to %s" % str(value)) + if value == 0: + # You won! + current_level += 1 + if current_level >= levels.size(): + current_level = 0 + #await get_tree().create_timer(1.0).timeout + level_changed.emit(levels[current_level]) + #total_coins = value + print_debug("There are %s coins in the level" % str(value)) + +func on_player_slimed(_body, slime) -> void: + print_debug("GC knows player slimed") + print_debug("Damage: " + str(enemies_dict[slime]["damage"])) + player_current_health -= enemies_dict[slime]["damage"] + if player_current_health <= 0: + print_debug("Player dead!") + player_death.emit() + else: + print_debug("Taking damage") + player_damaged.emit(player_current_health, player_stats.starting_health) + print_debug("Player Health: " + str(player_current_health) + " of " + str(player_stats.starting_health)) + +func add_enemy_to_level(enemy) -> void: + print_debug("GC adding %s to level" % enemy.name) + var rand_damage : int = randi() % 10 + var this_enemy_stats : Dictionary = { + "health": enemy_stats.health, + "damage": enemy_stats.melee_damage + rand_damage + } + enemies_dict[enemy] = this_enemy_stats + +func bullet_damage(thing_damaged, _bullet) -> void: + print_debug("Bullet has hit %s" % thing_damaged.name) + if thing_damaged is Slimer: + print_debug("Hitting a slime!") + enemies_dict[thing_damaged]["health"] -= player_stats.ranged_damage + if enemies_dict[thing_damaged]["health"] <= 0: + print("Enemy killed") + remove_enemy_from_level(thing_damaged) + destroyed.emit(thing_damaged) + else: + print_debug("Slime health is %s" % enemies_dict[thing_damaged]["health"]) + +func remove_enemy_from_level(enemy) -> void: + enemies_dict.erase(enemy) diff --git a/scripts/scene_manager.gd b/scripts/scene_manager.gd index 2244a83..5d88d66 100644 --- a/scripts/scene_manager.gd +++ b/scripts/scene_manager.gd @@ -6,27 +6,45 @@ var grenade = preload("res://scenes/grenade.tscn") var bullet_array = [] var total_allowed_bullets : int = 7 -@onready var game: Node2D = $".." @onready var coins: Node = $"../Coins" @onready var enemies: Node = $"../Enemies" func _ready() -> void: + GameController.reset() build_level() func build_level() -> void: - var total_coins : int = 0 if coins: - for coin in coins.get_children(): - if coin is Coin: - total_coins += 1 - coin.coin_collected.connect(game.on_coin_collected) - game.set_total_coins(total_coins) - var total_enemies : int = 0 + update_coins() + + var _total_enemies : int = 0 if enemies: - for enemy in enemies.get_children(): - if enemy is Slimer: - total_enemies += 1 - enemy.player_slimed.connect(game.on_player_slimed) + update_enemies() + # Wire up signals from GameController + GameController.level_changed.connect(change_scene) + GameController.destroyed.connect(destroy) + +func update_enemies() -> void: + var total_enemies : int = 0 + for enemy in enemies.get_children(): + if enemy is Slimer: + total_enemies += 1 + if not enemy.player_slimed.is_connected(GameController.on_player_slimed): + enemy.player_slimed.connect(GameController.on_player_slimed) + GameController.add_enemy_to_level(enemy) + +func update_coins() -> void: + var total_coins : int = 0 + for coin in coins.get_children(): + if coin is Coin: + print_debug("Adding %s to the total" % str(coin)) + if not coin.coin_collected.is_connected(GameController.on_coin_collected): + coin.coin_collected.connect(GameController.on_coin_collected) + print_debug("There are %s coins in the total" % str(total_coins)) + if not coin.tree_exited.is_connected(update_coins): + coin.tree_exited.connect(update_coins) + total_coins += 1 + GameController.set_total_coins(total_coins) func make_bullet(_bullet_position, _bullet_speed) -> void: print("make a bullet; put it in the world") @@ -37,7 +55,7 @@ func make_bullet(_bullet_position, _bullet_speed) -> void: func make_grenade(_grenade_position, _grenade_direction) -> void: print("SM make a grenade") var my_grenade : Grenade = grenade.instantiate() - game.add_child(my_grenade) + GameController.add_child(my_grenade) my_grenade.transform = _grenade_position my_grenade.apply_central_impulse(Vector2(_grenade_direction, -1) * 200) @@ -46,7 +64,8 @@ func bullet_factory() -> Bullet: if bullet_array.size() < total_allowed_bullets: # make a new bullet my_bullet = bullet.instantiate() - game.add_child(my_bullet) + my_bullet.bullet_damaged.connect(GameController.bullet_damage) + owner.add_child(my_bullet) else: my_bullet = bullet_array.pop_back() bullet_array.push_front(my_bullet) @@ -56,3 +75,10 @@ func _on_world_boundary_body_entered(body: Node2D) -> void: if body is Player: var current_scene = get_tree() current_scene.call_deferred("reload_current_scene") + +func change_scene(level) -> void: + print_debug("Changing scene to level %s" % level) + get_tree().call_deferred("change_scene_to_file", level) + +func destroy(body) -> void: + body.queue_free() diff --git a/scripts/slimer.gd b/scripts/slimer.gd index 6ff0887..d84624c 100644 --- a/scripts/slimer.gd +++ b/scripts/slimer.gd @@ -1,8 +1,19 @@ class_name Slimer extends Area2D +@onready var right_cast: RayCast2D = $RightCast +@onready var left_cast: RayCast2D = $LeftCast +@onready var right_down_cast: RayCast2D = $RightDownCast +@onready var left_down_cast: RayCast2D = $LeftDownCast + +var speed : int = 100 +var direction : int = 1 + signal player_slimed(body, slime) +func _process(delta: float) -> void: + position.x += direction * speed * delta + func _on_body_entered(body: Node2D) -> void: if body is Player: print_debug("Player hit Slimer")