multi levels; closed loop; custom resources; character stats; enemy attacks; player attacks; enemy movement started

This commit is contained in:
Adam Burns 2025-11-03 20:56:43 -05:00
parent 0d6ffa22df
commit 1e24e0a59a
39 changed files with 1475 additions and 61 deletions

View File

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/Player Idle 48x48.png-febc6ee73b16c6ae56feb25
compress/mode=0 compress/mode=0
compress/high_quality=false compress/high_quality=false
compress/lossy_quality=0.7 compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
@ -25,6 +27,10 @@ mipmaps/generate=false
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" 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/fix_alpha_border=true
process/premult_alpha=false process/premult_alpha=false
process/normal_map_invert_y=false process/normal_map_invert_y=false

View File

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/player jump 48x48.png-53153cc022c0f5f1a72bef8
compress/mode=0 compress/mode=0
compress/high_quality=false compress/high_quality=false
compress/lossy_quality=0.7 compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
@ -25,6 +27,10 @@ mipmaps/generate=false
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" 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/fix_alpha_border=true
process/premult_alpha=false process/premult_alpha=false
process/normal_map_invert_y=false process/normal_map_invert_y=false

View File

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/player new jump 48x48.png-085528a4cee6917e773
compress/mode=0 compress/mode=0
compress/high_quality=false compress/high_quality=false
compress/lossy_quality=0.7 compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
@ -25,6 +27,10 @@ mipmaps/generate=false
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" 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/fix_alpha_border=true
process/premult_alpha=false process/premult_alpha=false
process/normal_map_invert_y=false process/normal_map_invert_y=false

View File

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/player land 48x48.png-73bf83889efcd0c346ed730
compress/mode=0 compress/mode=0
compress/high_quality=false compress/high_quality=false
compress/lossy_quality=0.7 compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
@ -25,6 +27,10 @@ mipmaps/generate=false
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" 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/fix_alpha_border=true
process/premult_alpha=false process/premult_alpha=false
process/normal_map_invert_y=false process/normal_map_invert_y=false

View File

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/Player Punch 64x64(1).png-30d66d61ef3a1f371d6
compress/mode=0 compress/mode=0
compress/high_quality=false compress/high_quality=false
compress/lossy_quality=0.7 compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
@ -25,6 +27,10 @@ mipmaps/generate=false
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" 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/fix_alpha_border=true
process/premult_alpha=false process/premult_alpha=false
process/normal_map_invert_y=false process/normal_map_invert_y=false

View File

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/player run 48x48.png-e4bb17293a9ce0c0c03376a7
compress/mode=0 compress/mode=0
compress/high_quality=false compress/high_quality=false
compress/lossy_quality=0.7 compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
@ -25,6 +27,10 @@ mipmaps/generate=false
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" 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/fix_alpha_border=true
process/premult_alpha=false process/premult_alpha=false
process/normal_map_invert_y=false process/normal_map_invert_y=false

View File

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/Player Running Shooting 48x48.png-3d2df69d2a4
compress/mode=0 compress/mode=0
compress/high_quality=false compress/high_quality=false
compress/lossy_quality=0.7 compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
@ -25,6 +27,10 @@ mipmaps/generate=false
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" 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/fix_alpha_border=true
process/premult_alpha=false process/premult_alpha=false
process/normal_map_invert_y=false process/normal_map_invert_y=false

View File

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/player shoot 2H 48x48.png-6d3782d73196ec488a7
compress/mode=0 compress/mode=0
compress/high_quality=false compress/high_quality=false
compress/lossy_quality=0.7 compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
@ -25,6 +27,10 @@ mipmaps/generate=false
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" 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/fix_alpha_border=true
process/premult_alpha=false process/premult_alpha=false
process/normal_map_invert_y=false process/normal_map_invert_y=false

View File

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/25-10-17-sky-background-godot-course-.png-685
compress/mode=0 compress/mode=0
compress/high_quality=false compress/high_quality=false
compress/lossy_quality=0.7 compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
@ -25,6 +27,10 @@ mipmaps/generate=false
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" 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/fix_alpha_border=true
process/premult_alpha=false process/premult_alpha=false
process/normal_map_invert_y=false process/normal_map_invert_y=false

View File

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/25-10-17-trees-background-godot-course-v1.png
compress/mode=0 compress/mode=0
compress/high_quality=false compress/high_quality=false
compress/lossy_quality=0.7 compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
@ -25,6 +27,10 @@ mipmaps/generate=false
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" 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/fix_alpha_border=true
process/premult_alpha=false process/premult_alpha=false
process/normal_map_invert_y=false process/normal_map_invert_y=false

View File

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/forestbackground.png-c62d472b3b61aefff531c569
compress/mode=0 compress/mode=0
compress/high_quality=false compress/high_quality=false
compress/lossy_quality=0.7 compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
@ -25,6 +27,10 @@ mipmaps/generate=false
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" 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/fix_alpha_border=true
process/premult_alpha=false process/premult_alpha=false
process/normal_map_invert_y=false process/normal_map_invert_y=false

View File

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/14.png-b80bda9481eb03b9296615b658f23b86.ctex"
compress/mode=0 compress/mode=0
compress/high_quality=false compress/high_quality=false
compress/lossy_quality=0.7 compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
@ -25,6 +27,10 @@ mipmaps/generate=false
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" 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/fix_alpha_border=true
process/premult_alpha=false process/premult_alpha=false
process/normal_map_invert_y=false process/normal_map_invert_y=false

View File

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/explosion.png-67838f4909472368e8b1165eafa79d8
compress/mode=0 compress/mode=0
compress/high_quality=false compress/high_quality=false
compress/lossy_quality=0.7 compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
@ -25,6 +27,10 @@ mipmaps/generate=false
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" 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/fix_alpha_border=true
process/premult_alpha=false process/premult_alpha=false
process/normal_map_invert_y=false process/normal_map_invert_y=false

View File

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/orb_red.png-96d2144e68a7a46da9f571d0443165d8.
compress/mode=0 compress/mode=0
compress/high_quality=false compress/high_quality=false
compress/lossy_quality=0.7 compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
@ -25,6 +27,10 @@ mipmaps/generate=false
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" 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/fix_alpha_border=true
process/premult_alpha=false process/premult_alpha=false
process/normal_map_invert_y=false process/normal_map_invert_y=false

View File

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/slime_green(1).png-681a56605c941b0b260c890dc1
compress/mode=0 compress/mode=0
compress/high_quality=false compress/high_quality=false
compress/lossy_quality=0.7 compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
@ -25,6 +27,10 @@ mipmaps/generate=false
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" 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/fix_alpha_border=true
process/premult_alpha=false process/premult_alpha=false
process/normal_map_invert_y=false process/normal_map_invert_y=false

View File

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/25-10-27-small-crate.png-2ac8da16d97759b258fc
compress/mode=0 compress/mode=0
compress/high_quality=false compress/high_quality=false
compress/lossy_quality=0.7 compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
@ -25,6 +27,10 @@ mipmaps/generate=false
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" 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/fix_alpha_border=true
process/premult_alpha=false process/premult_alpha=false
process/normal_map_invert_y=false process/normal_map_invert_y=false

View File

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/mushroom_32x64.png-ae0508fa0fd752d4aa1446b33c
compress/mode=0 compress/mode=0
compress/high_quality=false compress/high_quality=false
compress/lossy_quality=0.7 compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
@ -25,6 +27,10 @@ mipmaps/generate=false
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" 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/fix_alpha_border=true
process/premult_alpha=false process/premult_alpha=false
process/normal_map_invert_y=false process/normal_map_invert_y=false

View File

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/veg_32x32.png-742a28d4fd61b9f915a41209e1c7450
compress/mode=0 compress/mode=0
compress/high_quality=false compress/high_quality=false
compress/lossy_quality=0.7 compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
@ -25,6 +27,10 @@ mipmaps/generate=false
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" 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/fix_alpha_border=true
process/premult_alpha=false process/premult_alpha=false
process/normal_map_invert_y=false process/normal_map_invert_y=false

View File

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/coin(1).png-19d802c455c83c490b6727491bcbe9e7.
compress/mode=0 compress/mode=0
compress/high_quality=false compress/high_quality=false
compress/lossy_quality=0.7 compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
@ -25,6 +27,10 @@ mipmaps/generate=false
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" 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/fix_alpha_border=true
process/premult_alpha=false process/premult_alpha=false
process/normal_map_invert_y=false process/normal_map_invert_y=false

View File

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/25-10-18-godot-course-Terrain (32x32).png-1ec
compress/mode=0 compress/mode=0
compress/high_quality=false compress/high_quality=false
compress/lossy_quality=0.7 compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
@ -25,6 +27,10 @@ mipmaps/generate=false
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" 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/fix_alpha_border=true
process/premult_alpha=false process/premult_alpha=false
process/normal_map_invert_y=false process/normal_map_invert_y=false

View File

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/25-10-26-godot-course-Terrain (32x32)-color-e
compress/mode=0 compress/mode=0
compress/high_quality=false compress/high_quality=false
compress/lossy_quality=0.7 compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
@ -25,6 +27,10 @@ mipmaps/generate=false
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" 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/fix_alpha_border=true
process/premult_alpha=false process/premult_alpha=false
process/normal_map_invert_y=false process/normal_map_invert_y=false

View File

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/crate-100-custom.png-5420ee27cb0ee861df6e7629
compress/mode=0 compress/mode=0
compress/high_quality=false compress/high_quality=false
compress/lossy_quality=0.7 compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
@ -25,6 +27,10 @@ mipmaps/generate=false
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" 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/fix_alpha_border=true
process/premult_alpha=false process/premult_alpha=false
process/normal_map_invert_y=false process/normal_map_invert_y=false

View File

@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.cte
compress/mode=0 compress/mode=0
compress/high_quality=false compress/high_quality=false
compress/lossy_quality=0.7 compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
@ -25,6 +27,10 @@ mipmaps/generate=false
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" 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/fix_alpha_border=true
process/premult_alpha=false process/premult_alpha=false
process/normal_map_invert_y=false process/normal_map_invert_y=false

View File

@ -13,9 +13,13 @@ config_version=5
config/name="September Game AB" config/name="September Game AB"
config/tags=PackedStringArray("2d", "lesson", "platformer") config/tags=PackedStringArray("2d", "lesson", "platformer")
run/main_scene="uid://cueixogtk70go" run/main_scene="uid://cueixogtk70go"
config/features=PackedStringArray("4.4", "Forward Plus") config/features=PackedStringArray("4.5", "Forward Plus")
config/icon="res://icon.svg" config/icon="res://icon.svg"
[autoload]
GameController="*res://scripts/game_controller.gd"
[display] [display]
window/size/viewport_width=320 window/size/viewport_width=320
@ -58,7 +62,7 @@ jump={
} }
shove={ shove={
"deadzone": 0.2, "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={ shoot={
@ -68,7 +72,7 @@ shoot={
} }
throw={ throw={
"deadzone": 0.2, "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)
] ]
} }

View File

@ -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

View File

@ -0,0 +1 @@
uid://dseptumqu6tok

View File

@ -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"

View File

@ -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"

View File

@ -4,12 +4,12 @@
[ext_resource type="Texture2D" uid="uid://rejfd2gqjk7w" path="res://graphics/effects/14.png" id="2_y25gk"] [ext_resource type="Texture2D" uid="uid://rejfd2gqjk7w" path="res://graphics/effects/14.png" id="2_y25gk"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_h1aey"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_h1aey"]
size = Vector2(16, 2) size = Vector2(16, 20)
[node name="Bullet" type="Area2D"] [node name="Bullet" type="Area2D"]
z_index = 100 z_index = 100
collision_layer = 8 collision_layer = 8
collision_mask = 6 collision_mask = 22
script = ExtResource("1_mkf8s") script = ExtResource("1_mkf8s")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."] [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
@ -20,3 +20,5 @@ debug_color = Color(1, 0, 0, 1)
[node name="Sprite2D" type="Sprite2D" parent="."] [node name="Sprite2D" type="Sprite2D" parent="."]
scale = Vector2(0.1, 0.1) scale = Vector2(0.1, 0.1)
texture = ExtResource("2_y25gk") texture = ExtResource("2_y25gk")
[connection signal="area_entered" from="." to="." method="_on_area_entered"]

View File

@ -100,6 +100,8 @@ radius = 4.0
height = 10.0 height = 10.0
[node name="Coin" type="Area2D"] [node name="Coin" type="Area2D"]
collision_layer = 4
collision_mask = 9
script = ExtResource("1_i64fm") script = ExtResource("1_i64fm")
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]

View File

@ -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="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://2pp1gtlflav8" path="res://scenes/trigger.tscn" id="2_yqjtg"]
[ext_resource type="PackedScene" uid="uid://d3y1iqmpknpyo" path="res://scenes/player.tscn" id="3_lnu2h"] [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 domain_warp_enabled = true
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_u5sy4"] [sub_resource type="NoiseTexture2D" id="NoiseTexture2D_u5sy4"]
in_3d_space = true
seamless = true
color_ramp = SubResource("Gradient_iywne")
noise = SubResource("FastNoiseLite_p57ef") noise = SubResource("FastNoiseLite_p57ef")
color_ramp = SubResource("Gradient_iywne")
seamless = true
in_3d_space = true
[sub_resource type="Gradient" id="Gradient_p57ef"] [sub_resource type="Gradient" id="Gradient_p57ef"]
offsets = PackedFloat32Array(0.513333, 0.846667, 0.926667) offsets = PackedFloat32Array(0.513333, 0.846667, 0.926667)
@ -446,14 +445,13 @@ noise_type = 5
frequency = 0.02 frequency = 0.02
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_iywne"] [sub_resource type="NoiseTexture2D" id="NoiseTexture2D_iywne"]
seamless = true
color_ramp = SubResource("Gradient_p57ef")
noise = SubResource("FastNoiseLite_u5sy4") noise = SubResource("FastNoiseLite_u5sy4")
color_ramp = SubResource("Gradient_p57ef")
seamless = true
[sub_resource type="WorldBoundaryShape2D" id="WorldBoundaryShape2D_8cj0n"] [sub_resource type="WorldBoundaryShape2D" id="WorldBoundaryShape2D_8cj0n"]
[node name="Game" type="Node2D"] [node name="Game" type="Node2D"]
script = ExtResource("1_lbhrr")
[node name="SceneManager" type="Node2D" parent="."] [node name="SceneManager" type="Node2D" parent="."]
unique_name_in_owner = true unique_name_in_owner = true
@ -534,26 +532,6 @@ position = Vector2(-7, -210)
z_index = 5 z_index = 5
position = Vector2(-49, 84) 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="Enemies" type="Node" parent="."]
[node name="Slimer" parent="Enemies" instance=ExtResource("10_vtaks")] [node name="Slimer" parent="Enemies" instance=ExtResource("10_vtaks")]

554
scenes/level_2.tscn Normal file
View File

@ -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"]

565
scenes/level_3.tscn Normal file
View File

@ -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"]

View File

@ -43,6 +43,8 @@ animations = [{
size = Vector2(14, 15) size = Vector2(14, 15)
[node name="Slimer" type="Area2D"] [node name="Slimer" type="Area2D"]
collision_layer = 16
collision_mask = 15
script = ExtResource("1_4oill") script = ExtResource("1_4oill")
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
@ -55,4 +57,18 @@ frame_progress = 0.901815
position = Vector2(0, 4.5) position = Vector2(0, 4.5)
shape = SubResource("RectangleShape2D_02r3y") 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"] [connection signal="body_entered" from="." to="." method="_on_body_entered"]

View File

@ -1,11 +1,10 @@
class_name Bullet class_name Bullet
extends Area2D extends Area2D
## Bang bang!
@export var speed : float = 700 @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. # Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void: func _process(delta: float) -> void:
@ -13,3 +12,7 @@ func _process(delta: float) -> void:
func set_speed(value) -> void: func set_speed(value) -> void:
speed = value speed = value
func _on_area_entered(area: Area2D) -> void:
bullet_damaged.emit(area, self) # Replace with function body.

View File

@ -7,3 +7,8 @@ func _on_body_entered(body: Node2D) -> void:
print_debug("body connected with coin") print_debug("body connected with coin")
if body is Player: if body is Player:
coin_collected.emit(body, self) coin_collected.emit(body, self)
if body is Grenade:
self.visible = false
body.explode()
await body.animated_sprite_2d.animation_finished
self.queue_free()

View File

@ -2,6 +2,48 @@ extends Node2D
var coins_collected : int = 0 var coins_collected : int = 0
var total_coins : 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: func _on_trigger_fired(intent: Variant, body: PhysicsBody2D) -> void:
print("Game controller knows %s trigger fired " % intent) print("Game controller knows %s trigger fired " % intent)
@ -9,7 +51,7 @@ func _on_trigger_fired(intent: Variant, body: PhysicsBody2D) -> void:
"destroy": "destroy":
print("Destroy this thing!") print("Destroy this thing!")
if body is RigidBody2D: if body is RigidBody2D:
body.queue_free() destroyed.emit(body)
"powerup": "powerup":
print("Power this thing up!") print("Power this thing up!")
@ -18,15 +60,52 @@ func on_coin_collected(_body, coin) -> void:
coins_collected += 1 coins_collected += 1
print_debug("Coins collected: %s" % str(coins_collected)) print_debug("Coins collected: %s" % str(coins_collected))
print_debug("There are %s coins remaining" % str(total_coins - coins_collected)) print_debug("There are %s coins remaining" % str(total_coins - coins_collected))
coin.queue_free() destroyed.emit(coin)
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")
func set_total_coins(value) -> void: func set_total_coins(value) -> void:
total_coins = value print_debug("Setting coin total to %s" % str(value))
print_debug("There are %s coins in the level" % str(total_coins)) 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)

View File

@ -6,27 +6,45 @@ var grenade = preload("res://scenes/grenade.tscn")
var bullet_array = [] var bullet_array = []
var total_allowed_bullets : int = 7 var total_allowed_bullets : int = 7
@onready var game: Node2D = $".."
@onready var coins: Node = $"../Coins" @onready var coins: Node = $"../Coins"
@onready var enemies: Node = $"../Enemies" @onready var enemies: Node = $"../Enemies"
func _ready() -> void: func _ready() -> void:
GameController.reset()
build_level() build_level()
func build_level() -> void: func build_level() -> void:
var total_coins : int = 0
if coins: if coins:
for coin in coins.get_children(): update_coins()
if coin is Coin:
total_coins += 1 var _total_enemies : int = 0
coin.coin_collected.connect(game.on_coin_collected)
game.set_total_coins(total_coins)
var total_enemies : int = 0
if enemies: if enemies:
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(): for enemy in enemies.get_children():
if enemy is Slimer: if enemy is Slimer:
total_enemies += 1 total_enemies += 1
enemy.player_slimed.connect(game.on_player_slimed) 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: func make_bullet(_bullet_position, _bullet_speed) -> void:
print("make a bullet; put it in the world") 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: func make_grenade(_grenade_position, _grenade_direction) -> void:
print("SM make a grenade") print("SM make a grenade")
var my_grenade : Grenade = grenade.instantiate() var my_grenade : Grenade = grenade.instantiate()
game.add_child(my_grenade) GameController.add_child(my_grenade)
my_grenade.transform = _grenade_position my_grenade.transform = _grenade_position
my_grenade.apply_central_impulse(Vector2(_grenade_direction, -1) * 200) 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: if bullet_array.size() < total_allowed_bullets:
# make a new bullet # make a new bullet
my_bullet = bullet.instantiate() my_bullet = bullet.instantiate()
game.add_child(my_bullet) my_bullet.bullet_damaged.connect(GameController.bullet_damage)
owner.add_child(my_bullet)
else: else:
my_bullet = bullet_array.pop_back() my_bullet = bullet_array.pop_back()
bullet_array.push_front(my_bullet) bullet_array.push_front(my_bullet)
@ -56,3 +75,10 @@ func _on_world_boundary_body_entered(body: Node2D) -> void:
if body is Player: if body is Player:
var current_scene = get_tree() var current_scene = get_tree()
current_scene.call_deferred("reload_current_scene") 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()

View File

@ -1,8 +1,19 @@
class_name Slimer class_name Slimer
extends Area2D 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) signal player_slimed(body, slime)
func _process(delta: float) -> void:
position.x += direction * speed * delta
func _on_body_entered(body: Node2D) -> void: func _on_body_entered(body: Node2D) -> void:
if body is Player: if body is Player:
print_debug("Player hit Slimer") print_debug("Player hit Slimer")