From 7f787903b75c56945177d8fa0fc492b2ba566bf6 Mon Sep 17 00:00:00 2001 From: OddlyTimbot Date: Mon, 12 May 2025 20:55:34 -0400 Subject: [PATCH] multi levels, collectibles, enemies, started player damage or death --- assets/graphics/collectibles/coin.png | Bin 0 -> 500 bytes assets/graphics/collectibles/coin.png.import | 34 ++ assets/graphics/enemies/slime_green.png | Bin 0 -> 908 bytes .../graphics/enemies/slime_green.png.import | 34 ++ project.godot | 4 + scenes/coin.tscn | 112 ++++ scenes/game.tscn | 55 +- scenes/level2.tscn | 519 +++++++++++++++++ scenes/level3.tscn | 520 ++++++++++++++++++ scenes/slime.tscn | 73 +++ scripts/coin.gd | 7 + scripts/coin.gd.uid | 1 + scripts/gamecontroller.gd | 57 +- scripts/player.gd | 7 + scripts/scene_manager.gd | 49 +- scripts/slime.gd | 24 + scripts/slime.gd.uid | 1 + scripts/trigger.gd | 2 +- 18 files changed, 1460 insertions(+), 39 deletions(-) create mode 100644 assets/graphics/collectibles/coin.png create mode 100644 assets/graphics/collectibles/coin.png.import create mode 100644 assets/graphics/enemies/slime_green.png create mode 100644 assets/graphics/enemies/slime_green.png.import create mode 100644 scenes/coin.tscn create mode 100644 scenes/level2.tscn create mode 100644 scenes/level3.tscn create mode 100644 scenes/slime.tscn create mode 100644 scripts/coin.gd create mode 100644 scripts/coin.gd.uid create mode 100644 scripts/slime.gd create mode 100644 scripts/slime.gd.uid diff --git a/assets/graphics/collectibles/coin.png b/assets/graphics/collectibles/coin.png new file mode 100644 index 0000000000000000000000000000000000000000..01ae33d70b398db7f1f7bcafe883a0a469805201 GIT binary patch literal 500 zcmV^r!6hi!Wct>kSmw76A*+mkqIDVjdDL!Rb}5E?Td;C@2y9S zHih2xK(yTWh+gXdrTqK8Uwx^_$MoI4V|67Hn26^Qp-rJ*c_3P5d_*tx|6%^yEznE& zeE6^KHvJ|vI7934d=L#ytZIR)9hxaN1Jm8sZ6_j{Yx1#nTWt!D2<;1?{VNX?M*l~R zzukKP+i+D+FAlB;7qkOXfaGA?&h>EX&+$Oxqgs>{d4C#zhd05hUS`kO@{&+Bb`?-H zKXwYn7Ms9B!`F}PQh%-o65r;4=uy!A4;g>*6iCRL!wF!o{9{X0YM%Mf@U=DvM2}Kx zY#A;!e+4Y{Qh#m^NPMe5dkcj0f5`ZIy8@JYG2kpkh}LrU76{dHI?&Z}2LKX(>v1MX z4k6>OaQ_N1p97frj@jdSpELonJ&y=&3jN9h(K6#Bda3^x^WUBW>`ee7IfzLSUk<|l qVg27u071wNc?u+CjZ6R`YyJS*Ofbr5QwY-l0000JWrs--17qeTsRD5g z!(g=zZP^CRNrf+-+NH@KR$Td0s&mngVw3+xu0?EXcCBM}?K8i`C}Wk?V1NhZ=gNnL znwH6IezGFZ!~9a6?RHUyhPV4>Uu{?_FnfW>zS{qPKK*<4uVTZ$ce_63>1Q2~5psEW zx_|#J@#X97|9=sRdr@7gG^K>%S{q!=tk;zc{umA757CW^gF~?Y* zzL@Q4_FeSScBuyG05^_0b=8H-_E|RV`0{(oCG+JLF?=tr`x)+BFt>laYl`#E_4#US z^)8yV;ydQc)Lt=IzWv`O|NWa{=kBflzObA3)w^Aa^ZVqko^^cn|Ic5O3*}M*OaJxH zkT2-?mBRcbPJn+~%B^6jY(87p9(Mo#>Q7(h~rm&XFcnS2%Pu(#j4I<=R1EbeZ((y;O5o?wIy5Q|G$2J-k$H; z`tsE}e}z7FZ&xe&&T>;Ie$t&EuHB#RoL~6BudegQ(e6(xj^8Zaa&Il$W#4ySE~~5m zTfmt7%O>)U?6I5hEH)mc^Zy7i2AYE5_cS8+Pd zEL*XBwVBru|99M6hFkZ|y>aAN9DmO}@fM%8>yNRi-8VbG`yY1_&*gmzOfw=rUyaF+ zc6a>UWOJqT@=>+Yz0nhwE57CCn(*tmRI)?YzOxPXujg|0Ui|Qj8JN8oJYD@<);T3K F0RY5^vzq__ literal 0 HcmV?d00001 diff --git a/assets/graphics/enemies/slime_green.png.import b/assets/graphics/enemies/slime_green.png.import new file mode 100644 index 0000000..406ee9a --- /dev/null +++ b/assets/graphics/enemies/slime_green.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bc5qrj3rg2rey" +path="res://.godot/imported/slime_green.png-5261ffd1254c816fe62b35227a9aa11d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/graphics/enemies/slime_green.png" +dest_files=["res://.godot/imported/slime_green.png-5261ffd1254c816fe62b35227a9aa11d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/project.godot b/project.godot index 034f95b..92cdc99 100644 --- a/project.godot +++ b/project.godot @@ -15,6 +15,10 @@ run/main_scene="res://scenes/game.tscn" config/features=PackedStringArray("4.4", "Forward Plus") config/icon="res://icon.svg" +[autoload] + +Gamecontroller="*res://scripts/gamecontroller.gd" + [display] window/size/viewport_width=320 diff --git a/scenes/coin.tscn b/scenes/coin.tscn new file mode 100644 index 0000000..2d95d07 --- /dev/null +++ b/scenes/coin.tscn @@ -0,0 +1,112 @@ +[gd_scene load_steps=17 format=3 uid="uid://c0b4iaixh56in"] + +[ext_resource type="Script" uid="uid://cp61o6khv0k24" path="res://scripts/coin.gd" id="1_i64fm"] +[ext_resource type="Texture2D" uid="uid://c0gn8vjhctf7v" path="res://assets/graphics/collectibles/coin.png" id="1_rwqht"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_i64fm"] +atlas = ExtResource("1_rwqht") +region = Rect2(0, 0, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_11l1o"] +atlas = ExtResource("1_rwqht") +region = Rect2(16, 0, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_d14el"] +atlas = ExtResource("1_rwqht") +region = Rect2(32, 0, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_1ikuy"] +atlas = ExtResource("1_rwqht") +region = Rect2(48, 0, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_wnlwo"] +atlas = ExtResource("1_rwqht") +region = Rect2(64, 0, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_jig8b"] +atlas = ExtResource("1_rwqht") +region = Rect2(80, 0, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_xmuha"] +atlas = ExtResource("1_rwqht") +region = Rect2(96, 0, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_kfxoj"] +atlas = ExtResource("1_rwqht") +region = Rect2(112, 0, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_jsmju"] +atlas = ExtResource("1_rwqht") +region = Rect2(128, 0, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_s0mny"] +atlas = ExtResource("1_rwqht") +region = Rect2(144, 0, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_7cc30"] +atlas = ExtResource("1_rwqht") +region = Rect2(160, 0, 16, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_rojmm"] +atlas = ExtResource("1_rwqht") +region = Rect2(176, 0, 16, 16) + +[sub_resource type="SpriteFrames" id="SpriteFrames_ls27i"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_i64fm") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_11l1o") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_d14el") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_1ikuy") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_wnlwo") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_jig8b") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_xmuha") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_kfxoj") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_jsmju") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_s0mny") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_7cc30") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_rojmm") +}], +"loop": true, +"name": &"default", +"speed": 12.0 +}] + +[sub_resource type="CircleShape2D" id="CircleShape2D_ssuvv"] +radius = 5.0 + +[node name="Area2D" type="Area2D"] +script = ExtResource("1_i64fm") + +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] +texture_filter = 1 +sprite_frames = SubResource("SpriteFrames_ls27i") +autoplay = "default" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("CircleShape2D_ssuvv") + +[connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/scenes/game.tscn b/scenes/game.tscn index d333a0a..b6a8b90 100644 --- a/scenes/game.tscn +++ b/scenes/game.tscn @@ -1,6 +1,5 @@ [gd_scene load_steps=20 format=4 uid="uid://cwuxdg5c8ylmp"] -[ext_resource type="Script" uid="uid://cw3ucen7ivcu3" path="res://scripts/gamecontroller.gd" id="1_wj22x"] [ext_resource type="Script" uid="uid://bus3b1g717jlm" path="res://scripts/scene_manager.gd" id="2_lbhrr"] [ext_resource type="PackedScene" uid="uid://cgk1d1f5ffbbd" path="res://scenes/player.tscn" id="2_lnu2h"] [ext_resource type="PackedScene" uid="uid://clf5mhteceas4" path="res://scenes/trigger.tscn" id="3_jlag1"] @@ -12,7 +11,8 @@ [ext_resource type="Texture2D" uid="uid://cfbvrcr2cxndb" path="res://assets/graphics/background/trees_foreground.png" id="5_dinhu"] [ext_resource type="Texture2D" uid="uid://cfkcsnjdu1hyu" path="res://assets/graphics/terrain/vegetation/veg_32x32.png" id="5_vtaks"] [ext_resource type="Texture2D" uid="uid://bu2davrqnpe" path="res://assets/graphics/background/plane.png" id="6_kvuet"] -[ext_resource type="PackedScene" uid="uid://c633ux67ehud7" path="res://scenes/bullet.tscn" id="6_p57ef"] +[ext_resource type="PackedScene" uid="uid://c0b4iaixh56in" path="res://scenes/coin.tscn" id="12_dinhu"] +[ext_resource type="PackedScene" uid="uid://cro4avvf0dbbr" path="res://scenes/slime.tscn" id="13_kvuet"] [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_gee14"] texture = ExtResource("3_u5sy4") @@ -291,6 +291,7 @@ texture_region_size = Vector2i(32, 32) 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, -16, 16) 0:4/0/terrains_peering_bit/right_side = 0 1:4/0 = 0 @@ -301,6 +302,7 @@ texture_region_size = Vector2i(32, 32) 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, -16, 16) 2:4/0/terrains_peering_bit/left_side = 0 4:4/0 = 0 @@ -402,7 +404,7 @@ size = Vector2(55.5, 41) [sub_resource type="WorldBoundaryShape2D" id="WorldBoundaryShape2D_16wxc"] [node name="Game" type="Node2D"] -script = ExtResource("1_wj22x") +position = Vector2(-14, 3) [node name="SceneManager" type="Node" parent="."] unique_name_in_owner = true @@ -442,7 +444,7 @@ texture = ExtResource("6_kvuet") [node name="TileMapLayer" type="TileMapLayer" parent="."] texture_filter = 1 position = Vector2(1, 0) -tile_map_data = PackedByteArray("AAAOAAoAAAAEAAQAAAAQAAoAAAAPAAQAAAARAAoAAAABAAQAAAASAAoAAAABAAQAAAATAAoAAAAQAAQAAAAJAAoAAAAEAAIAAAAJAAkAAAANAAMAAAAIAAkAAAAPAAQAAAAIAAgAAAAQAAMAAAAHAAgAAAAPAAQAAAAHAAcAAAAEAAAAAAATAAkAAAAEAAAAAAAQAAkAAAAEAAAAAAAEAA0AAAABAAIAAAAFAA0AAAABAAIAAAAGAA0AAAABAAIAAAAHAA0AAAABAAIAAAAIAA0AAAABAAIAAAAJAA0AAAABAAIAAAAKAA0AAAABAAIAAAALAA0AAAAJAAQAAAAMAA0AAAABAAQAAAANAA0AAAAKAAQAAAAOAA0AAAABAAIAAAAPAA0AAAABAAIAAAAQAA0AAAABAAIAAAARAA0AAAABAAIAAAASAA0AAAABAAIAAAATAA0AAAABAAIAAAAUAA0AAAABAAIAAAAVAA0AAAABAAIAAAAWAA0AAAABAAIAAAAXAA0AAAABAAIAAAAYAA0AAAABAAIAAAAZAA0AAAACAAIAAAAEAAwAAAABAAAAAAAFAAwAAAABAAAAAAAGAAwAAAABAAAAAAAHAAwAAAABAAAAAAAIAAwAAAABAAAAAAAJAAwAAAABAAAAAAAKAAwAAAABAAAAAAALAAwAAAACAAAAAAANAAwAAAAAAAAAAAAOAAwAAAABAAAAAAAPAAwAAAABAAAAAAAQAAwAAAABAAAAAAARAAwAAAABAAAAAAASAAwAAAABAAAAAAATAAwAAAABAAAAAAAUAAwAAAABAAAAAAAVAAwAAAABAAAAAAAWAAwAAAABAAAAAAAXAAwAAAABAAAAAAAYAAwAAAABAAAAAAAZAAwAAAACAAAAAAAQAAgAAgAAAAAAAAAVAAsAAQAAAAEAAAAVAAoAAQAAAAAAAAAWAAsAAQAAAAEAAAAWAAoAAQAAAAAAAAAZAAsAAgAAAAAAAAAYAAsAAQAAAAEAAAAYAAoAAQAAAAAAAAAXAAsAAQAAAAEAAAAXAAoAAQAAAAAAAAANAAkAAAAQAAQAAAAMAAkAAAABAAQAAAALAAkAAAABAAQAAAAKAAkAAAABAAQAAAADAAwAAAABAAAAAAACAAwAAAABAAAAAAABAAwAAAABAAAAAAAAAAwAAAAGAAQAAAADAA0AAAABAAIAAAACAA0AAAABAAIAAAABAA0AAAABAAIAAAAAAA0AAAAAAAIAAAA=") +tile_map_data = PackedByteArray("AAAOAAoAAAAEAAQAAAAQAAoAAAAPAAQAAAARAAoAAAABAAQAAAASAAoAAAABAAQAAAATAAoAAAAQAAQAAAAJAAoAAAAEAAIAAAAJAAkAAAANAAMAAAAIAAkAAAAPAAQAAAAIAAgAAAAQAAMAAAAHAAgAAAAPAAQAAAAHAAcAAAAEAAAAAAATAAkAAAAEAAAAAAAQAAkAAAAEAAAAAAAEAA0AAAABAAIAAAAFAA0AAAABAAIAAAAGAA0AAAABAAIAAAAHAA0AAAABAAIAAAAIAA0AAAABAAIAAAAJAA0AAAABAAIAAAAKAA0AAAABAAIAAAALAA0AAAAJAAQAAAAMAA0AAAABAAQAAAANAA0AAAAKAAQAAAAOAA0AAAABAAIAAAAPAA0AAAABAAIAAAAQAA0AAAABAAIAAAARAA0AAAABAAIAAAASAA0AAAABAAIAAAATAA0AAAABAAIAAAAUAA0AAAABAAIAAAAVAA0AAAABAAIAAAAWAA0AAAABAAIAAAAXAA0AAAABAAIAAAAYAA0AAAABAAIAAAAZAA0AAAACAAIAAAAEAAwAAAABAAAAAAAFAAwAAAABAAAAAAAGAAwAAAABAAAAAAAHAAwAAAABAAAAAAAIAAwAAAABAAAAAAAJAAwAAAABAAAAAAAKAAwAAAABAAAAAAALAAwAAAACAAAAAAANAAwAAAAAAAAAAAAOAAwAAAABAAAAAAAPAAwAAAABAAAAAAAQAAwAAAABAAAAAAARAAwAAAABAAAAAAASAAwAAAABAAAAAAATAAwAAAABAAAAAAAUAAwAAAABAAAAAAAVAAwAAAABAAAAAAAWAAwAAAABAAAAAAAXAAwAAAABAAAAAAAYAAwAAAABAAAAAAAZAAwAAAACAAAAAAAQAAgAAgAAAAAAAAAVAAsAAQAAAAEAAAAVAAoAAQAAAAAAAAAWAAsAAQAAAAEAAAAWAAoAAQAAAAAAAAAZAAsAAgAAAAAAAAAYAAsAAQAAAAEAAAAYAAoAAQAAAAAAAAAXAAsAAQAAAAEAAAAXAAoAAQAAAAAAAAANAAkAAAACAAQAAAAMAAkAAAABAAQAAAALAAkAAAABAAQAAAAKAAkAAAABAAQAAAADAAwAAAABAAAAAAACAAwAAAABAAAAAAABAAwAAAABAAAAAAAAAAwAAAAGAAQAAAADAA0AAAABAAIAAAACAA0AAAABAAIAAAABAA0AAAABAAIAAAAAAA0AAAAAAAIAAAARAAcAAAAAAAQAAAASAAcAAAABAAQAAAATAAcAAAACAAQAAAA=") tile_set = SubResource("TileSet_0tnpc") [node name="CharacterBody2D" parent="." instance=ExtResource("2_lnu2h")] @@ -484,35 +486,38 @@ shape = SubResource("WorldBoundaryShape2D_16wxc") [node name="crates" type="Node2D" parent="."] -[node name="RigidBody2D" parent="crates" instance=ExtResource("4_iywne")] -position = Vector2(407, 407) - -[node name="RigidBody2D2" parent="crates" instance=ExtResource("4_iywne")] -position = Vector2(508, 303) - [node name="RigidBody2D3" parent="crates" instance=ExtResource("4_iywne")] -position = Vector2(576, 221) +position = Vector2(367, 271) -[node name="RigidBody2D4" parent="crates" instance=ExtResource("4_iywne")] -position = Vector2(403, 324) +[node name="triggers" type="Node2D" parent="."] -[node name="RigidBody2D5" parent="crates" instance=ExtResource("4_iywne")] -position = Vector2(357, 331) +[node name="Trigger" parent="triggers" instance=ExtResource("3_jlag1")] +position = Vector2(324, 259) -[node name="Trigger" parent="." instance=ExtResource("3_jlag1")] -position = Vector2(-39, 214) - -[node name="Trigger2" parent="." instance=ExtResource("3_jlag1")] -position = Vector2(638, 390) +[node name="Trigger2" parent="triggers" instance=ExtResource("3_jlag1")] +position = Vector2(719, 82) effect = "teleport" -[node name="Area2D" parent="." instance=ExtResource("6_p57ef")] -position = Vector2(366, 300) - [node name="DirectionalLight2D" type="DirectionalLight2D" parent="."] color = Color(0.328443, 0.958547, 0.863958, 1) energy = 0.23 blend_mode = 1 -[connection signal="triggerFired" from="Trigger" to="." method="_on_trigger_fired"] -[connection signal="triggerFired" from="Trigger2" to="." method="_on_trigger_fired"] +[node name="coins" type="Node2D" parent="."] + +[node name="Area2D" parent="coins" instance=ExtResource("12_dinhu")] +position = Vector2(281, 250) + +[node name="Area2D2" parent="coins" instance=ExtResource("12_dinhu")] +position = Vector2(557, 314) + +[node name="enemies" type="Node2D" parent="."] + +[node name="Area2D" parent="enemies" instance=ExtResource("13_kvuet")] +position = Vector2(396, 275) + +[node name="Area2D2" parent="enemies" instance=ExtResource("13_kvuet")] +position = Vector2(594, 309) + +[connection signal="triggerFired" from="triggers/Trigger" to="." method="_on_trigger_fired"] +[connection signal="triggerFired" from="triggers/Trigger2" to="." method="_on_trigger_fired"] diff --git a/scenes/level2.tscn b/scenes/level2.tscn new file mode 100644 index 0000000..4adea50 --- /dev/null +++ b/scenes/level2.tscn @@ -0,0 +1,519 @@ +[gd_scene load_steps=19 format=4 uid="uid://d0qq6qkntfckg"] + +[ext_resource type="Script" uid="uid://bus3b1g717jlm" path="res://scripts/scene_manager.gd" id="1_76toy"] +[ext_resource type="Texture2D" uid="uid://dhkx31lax12gl" path="res://assets/graphics/background/sky_far.png" id="2_8g4ke"] +[ext_resource type="Texture2D" uid="uid://uswj5ignpua4" path="res://assets/graphics/background/forestbackground_mid.png" id="3_56gwk"] +[ext_resource type="Texture2D" uid="uid://cfbvrcr2cxndb" path="res://assets/graphics/background/trees_foreground.png" id="4_ve5ok"] +[ext_resource type="Texture2D" uid="uid://bu2davrqnpe" path="res://assets/graphics/background/plane.png" id="5_cleqw"] +[ext_resource type="Texture2D" uid="uid://c386aypkw54oc" path="res://assets/graphics/terrain/Terrain (32x32).png" id="6_wvb8j"] +[ext_resource type="Texture2D" uid="uid://dq8nlvjv522pc" path="res://assets/graphics/terrain/vegetation/mushroom_32x64.png" id="7_g8vcy"] +[ext_resource type="Texture2D" uid="uid://cfkcsnjdu1hyu" path="res://assets/graphics/terrain/vegetation/veg_32x32.png" id="8_cqal4"] +[ext_resource type="PackedScene" uid="uid://cgk1d1f5ffbbd" path="res://scenes/player.tscn" id="9_o3sye"] +[ext_resource type="PackedScene" uid="uid://cym46ub26gs80" path="res://scenes/crate.tscn" id="10_24ks5"] +[ext_resource type="PackedScene" uid="uid://clf5mhteceas4" path="res://scenes/trigger.tscn" id="11_s4es8"] +[ext_resource type="PackedScene" uid="uid://c0b4iaixh56in" path="res://scenes/coin.tscn" id="12_8g4ke"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_gee14"] +texture = ExtResource("6_wvb8j") +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/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/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/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/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/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/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/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 +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/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/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/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/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/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/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/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/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, 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, 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, 16, -16, 16) +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, 0, -16, -0.31863, 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(2.54905, -16, 16, -16, 16, 16, 2.54905, 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, -3.18631, -16, -1.59315) +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, -3.18631, -16, -1.59315) +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, -6.69124, -16, -7.00988, 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, -3.82357, -16, -2.86768) +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, -0.955893, -0.955891, -0.955893, -0.63726, 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, 1.27452, 16, 0, -0.31863, -16, -0.955893) +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, -16, 16) +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, -16, 16) +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, 16, -16, 16) +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, 0, -16, -0.31863, 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(2.54905, -16, 16, -16, 16, 16, 2.54905, 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, -0.63726, 16, -0.955893, 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, -0.63726, 16, -0.955893, 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, 3.50494, 16, 3.18631, 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(5.73536, -16, 16, -16, 16, 16, 5.09809, 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(0, -16, 1.59315, 0.63726, 16, 0.955891, 16, 16, -16, 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(0.637264, -16, 16, -16, 16, 16, -16, 16, -16, 0.955891, 1.59315, 1.91179) +16:4/0/terrains_peering_bit/left_side = 0 +16:4/0/terrains_peering_bit/top_side = 0 + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_kvpfn"] +texture = ExtResource("7_g8vcy") +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="TileSetAtlasSource" id="TileSetAtlasSource_dinhu"] +texture = ExtResource("8_cqal4") +texture_region_size = Vector2i(32, 32) +0:0/0 = 0 +0:0/0/terrain_set = 0 +0:0/0/terrain = 1 + +[sub_resource type="TileSet" id="TileSet_0tnpc"] +tile_size = Vector2i(32, 32) +physics_layer_0/collision_layer = 1 +terrain_set_0/mode = 0 +terrain_set_0/terrain_0/name = "LeafyRocks" +terrain_set_0/terrain_0/color = Color(0.5, 0.34375, 0.25, 1) +terrain_set_0/terrain_1/name = "veg" +terrain_set_0/terrain_1/color = Color(0.5, 0.4375, 0.25, 1) +sources/0 = SubResource("TileSetAtlasSource_gee14") +sources/1 = SubResource("TileSetAtlasSource_kvpfn") +sources/2 = SubResource("TileSetAtlasSource_dinhu") + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_um86g"] +size = Vector2(55.5, 41) + +[sub_resource type="WorldBoundaryShape2D" id="WorldBoundaryShape2D_16wxc"] + +[node name="Game" type="Node2D"] + +[node name="SceneManager" type="Node" parent="."] +unique_name_in_owner = true +script = ExtResource("1_76toy") + +[node name="Parallax2D" type="Parallax2D" parent="."] +repeat_size = Vector2(320, 180) + +[node name="Sprite2D" type="Sprite2D" parent="Parallax2D"] +texture_filter = 1 +position = Vector2(160, 90) +texture = ExtResource("2_8g4ke") + +[node name="Parallax2D2" type="Parallax2D" parent="."] +scroll_scale = Vector2(0.5, 0.5) +repeat_size = Vector2(320, 0) + +[node name="Sprite2D" type="Sprite2D" parent="Parallax2D2"] +texture_filter = 1 +position = Vector2(160, 300) +texture = ExtResource("3_56gwk") + +[node name="Parallax2D3" type="Parallax2D" parent="."] +scroll_scale = Vector2(0.8, 0.8) +repeat_size = Vector2(320, 0) + +[node name="Sprite2D" type="Sprite2D" parent="Parallax2D3"] +texture_filter = 1 +position = Vector2(160, 300) +texture = ExtResource("4_ve5ok") + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture_filter = 1 +position = Vector2(684, 372) +texture = ExtResource("5_cleqw") + +[node name="TileMapLayer" type="TileMapLayer" parent="."] +texture_filter = 1 +position = Vector2(1, 0) +tile_map_data = PackedByteArray("AAAOAAoAAAAEAAQAAAAQAAoAAAAPAAQAAAARAAoAAAABAAQAAAASAAoAAAABAAQAAAATAAoAAAAQAAQAAAAJAAoAAAAEAAIAAAAJAAkAAAANAAMAAAAIAAkAAAAPAAQAAAAIAAgAAAAQAAMAAAAHAAgAAAAPAAQAAAAHAAcAAAAEAAAAAAATAAkAAAAEAAAAAAAQAAkAAAAEAAAAAAAEAA0AAAABAAIAAAAFAA0AAAABAAIAAAAGAA0AAAABAAIAAAAHAA0AAAABAAIAAAAIAA0AAAABAAIAAAAJAA0AAAABAAIAAAAKAA0AAAABAAIAAAALAA0AAAAJAAQAAAAMAA0AAAABAAQAAAANAA0AAAAKAAQAAAAOAA0AAAABAAIAAAAPAA0AAAABAAIAAAAQAA0AAAABAAIAAAARAA0AAAABAAIAAAASAA0AAAABAAIAAAATAA0AAAABAAIAAAAUAA0AAAABAAIAAAAVAA0AAAABAAIAAAAWAA0AAAABAAIAAAAXAA0AAAABAAIAAAAYAA0AAAABAAIAAAAZAA0AAAACAAIAAAAEAAwAAAABAAAAAAAFAAwAAAABAAAAAAAGAAwAAAABAAAAAAAHAAwAAAABAAAAAAAIAAwAAAABAAAAAAAJAAwAAAABAAAAAAAKAAwAAAABAAAAAAALAAwAAAACAAAAAAANAAwAAAAAAAAAAAAOAAwAAAABAAAAAAAPAAwAAAABAAAAAAAQAAwAAAABAAAAAAARAAwAAAABAAAAAAASAAwAAAABAAAAAAATAAwAAAABAAAAAAAUAAwAAAABAAAAAAAVAAwAAAABAAAAAAAWAAwAAAABAAAAAAAXAAwAAAABAAAAAAAYAAwAAAABAAAAAAAZAAwAAAACAAAAAAAQAAgAAgAAAAAAAAAVAAsAAQAAAAEAAAAVAAoAAQAAAAAAAAAWAAsAAQAAAAEAAAAWAAoAAQAAAAAAAAAZAAsAAgAAAAAAAAAYAAsAAQAAAAEAAAAYAAoAAQAAAAAAAAAXAAsAAQAAAAEAAAAXAAoAAQAAAAAAAAAMAAkAAAABAAQAAAALAAkAAAABAAQAAAAKAAkAAAABAAQAAAADAAwAAAABAAAAAAACAAwAAAABAAAAAAABAAwAAAABAAAAAAAAAAwAAAAGAAQAAAADAA0AAAABAAIAAAACAA0AAAABAAIAAAABAA0AAAABAAIAAAAAAA0AAAAAAAIAAAANAAkAAAACAAQAAAA=") +tile_set = SubResource("TileSet_0tnpc") + +[node name="CharacterBody2D" parent="." instance=ExtResource("9_o3sye")] +position = Vector2(471, 287) + +[node name="level" type="Node2D" parent="."] + +[node name="StaticBody2D" type="StaticBody2D" parent="level"] +position = Vector2(1050, 300) +scale = Vector2(0.600002, 1) +metadata/_edit_group_ = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="level/StaticBody2D"] +position = Vector2(-0.75, 10.5) +shape = SubResource("RectangleShape2D_um86g") + +[node name="StaticBody2D2" type="StaticBody2D" parent="level"] +position = Vector2(1091, 498) +metadata/_edit_group_ = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="level/StaticBody2D2"] +position = Vector2(-0.75, 10.5) +shape = SubResource("RectangleShape2D_um86g") + +[node name="StaticBody2D3" type="StaticBody2D" parent="level"] +position = Vector2(1051, 368) +scale = Vector2(2.2, 1) +metadata/_edit_group_ = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="level/StaticBody2D3"] +position = Vector2(-0.75, 10.5) +shape = SubResource("RectangleShape2D_um86g") + +[node name="Floor" type="StaticBody2D" parent="level"] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="level/Floor"] +position = Vector2(473, 428) +shape = SubResource("WorldBoundaryShape2D_16wxc") + +[node name="crates" type="Node2D" parent="."] + +[node name="RigidBody2D" parent="crates" instance=ExtResource("10_24ks5")] +position = Vector2(407, 407) + +[node name="RigidBody2D2" parent="crates" instance=ExtResource("10_24ks5")] +position = Vector2(508, 303) + +[node name="RigidBody2D3" parent="crates" instance=ExtResource("10_24ks5")] +position = Vector2(576, 221) + +[node name="RigidBody2D4" parent="crates" instance=ExtResource("10_24ks5")] +position = Vector2(403, 324) + +[node name="RigidBody2D5" parent="crates" instance=ExtResource("10_24ks5")] +position = Vector2(357, 331) + +[node name="DirectionalLight2D" type="DirectionalLight2D" parent="."] +color = Color(0.328443, 0.958547, 0.863958, 1) +energy = 0.23 +blend_mode = 1 + +[node name="triggers" type="Node2D" parent="."] + +[node name="Trigger" parent="triggers" instance=ExtResource("11_s4es8")] +position = Vector2(348, 258) + +[node name="Trigger2" parent="triggers" instance=ExtResource("11_s4es8")] +position = Vector2(719, 82) +effect = "teleport" + +[node name="coins" type="Node2D" parent="."] + +[node name="Area2D" parent="coins" instance=ExtResource("12_8g4ke")] +position = Vector2(433, 282) diff --git a/scenes/level3.tscn b/scenes/level3.tscn new file mode 100644 index 0000000..7d98212 --- /dev/null +++ b/scenes/level3.tscn @@ -0,0 +1,520 @@ +[gd_scene load_steps=19 format=4 uid="uid://bcdsen05n88xb"] + +[ext_resource type="Script" uid="uid://bus3b1g717jlm" path="res://scripts/scene_manager.gd" id="1_fh4ka"] +[ext_resource type="Texture2D" uid="uid://dhkx31lax12gl" path="res://assets/graphics/background/sky_far.png" id="2_qewby"] +[ext_resource type="Texture2D" uid="uid://uswj5ignpua4" path="res://assets/graphics/background/forestbackground_mid.png" id="3_bradm"] +[ext_resource type="Texture2D" uid="uid://cfbvrcr2cxndb" path="res://assets/graphics/background/trees_foreground.png" id="4_got4s"] +[ext_resource type="Texture2D" uid="uid://bu2davrqnpe" path="res://assets/graphics/background/plane.png" id="5_e40mx"] +[ext_resource type="Texture2D" uid="uid://c386aypkw54oc" path="res://assets/graphics/terrain/Terrain (32x32).png" id="6_a114e"] +[ext_resource type="Texture2D" uid="uid://dq8nlvjv522pc" path="res://assets/graphics/terrain/vegetation/mushroom_32x64.png" id="7_y1e0c"] +[ext_resource type="Texture2D" uid="uid://cfkcsnjdu1hyu" path="res://assets/graphics/terrain/vegetation/veg_32x32.png" id="8_s4dsi"] +[ext_resource type="PackedScene" uid="uid://cgk1d1f5ffbbd" path="res://scenes/player.tscn" id="9_07lh1"] +[ext_resource type="PackedScene" uid="uid://cym46ub26gs80" path="res://scenes/crate.tscn" id="10_6uuvf"] +[ext_resource type="PackedScene" uid="uid://clf5mhteceas4" path="res://scenes/trigger.tscn" id="11_x008a"] +[ext_resource type="PackedScene" uid="uid://c0b4iaixh56in" path="res://scenes/coin.tscn" id="12_qewby"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_gee14"] +texture = ExtResource("6_a114e") +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/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/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/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/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/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/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/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 +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/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/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/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/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/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/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/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/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, 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, 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, 16, -16, 16) +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, 0, -16, -0.31863, 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(2.54905, -16, 16, -16, 16, 16, 2.54905, 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, -3.18631, -16, -1.59315) +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, -3.18631, -16, -1.59315) +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, -6.69124, -16, -7.00988, 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, -3.82357, -16, -2.86768) +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, -0.955893, -0.955891, -0.955893, -0.63726, 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, 1.27452, 16, 0, -0.31863, -16, -0.955893) +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, -16, 16) +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, -16, 16) +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, 16, -16, 16) +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, 0, -16, -0.31863, 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(2.54905, -16, 16, -16, 16, 16, 2.54905, 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, -0.63726, 16, -0.955893, 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, -0.63726, 16, -0.955893, 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, 3.50494, 16, 3.18631, 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(5.73536, -16, 16, -16, 16, 16, 5.09809, 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(0, -16, 1.59315, 0.63726, 16, 0.955891, 16, 16, -16, 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(0.637264, -16, 16, -16, 16, 16, -16, 16, -16, 0.955891, 1.59315, 1.91179) +16:4/0/terrains_peering_bit/left_side = 0 +16:4/0/terrains_peering_bit/top_side = 0 + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_kvpfn"] +texture = ExtResource("7_y1e0c") +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="TileSetAtlasSource" id="TileSetAtlasSource_dinhu"] +texture = ExtResource("8_s4dsi") +texture_region_size = Vector2i(32, 32) +0:0/0 = 0 +0:0/0/terrain_set = 0 +0:0/0/terrain = 1 + +[sub_resource type="TileSet" id="TileSet_0tnpc"] +tile_size = Vector2i(32, 32) +physics_layer_0/collision_layer = 1 +terrain_set_0/mode = 0 +terrain_set_0/terrain_0/name = "LeafyRocks" +terrain_set_0/terrain_0/color = Color(0.5, 0.34375, 0.25, 1) +terrain_set_0/terrain_1/name = "veg" +terrain_set_0/terrain_1/color = Color(0.5, 0.4375, 0.25, 1) +sources/0 = SubResource("TileSetAtlasSource_gee14") +sources/1 = SubResource("TileSetAtlasSource_kvpfn") +sources/2 = SubResource("TileSetAtlasSource_dinhu") + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_um86g"] +size = Vector2(55.5, 41) + +[sub_resource type="WorldBoundaryShape2D" id="WorldBoundaryShape2D_16wxc"] + +[node name="Game" type="Node2D"] + +[node name="SceneManager" type="Node" parent="."] +unique_name_in_owner = true +script = ExtResource("1_fh4ka") + +[node name="Parallax2D" type="Parallax2D" parent="."] +repeat_size = Vector2(320, 180) + +[node name="Sprite2D" type="Sprite2D" parent="Parallax2D"] +texture_filter = 1 +position = Vector2(160, 90) +texture = ExtResource("2_qewby") + +[node name="Parallax2D2" type="Parallax2D" parent="."] +scroll_scale = Vector2(0.5, 0.5) +repeat_size = Vector2(320, 0) + +[node name="Sprite2D" type="Sprite2D" parent="Parallax2D2"] +texture_filter = 1 +position = Vector2(160, 300) +texture = ExtResource("3_bradm") + +[node name="Parallax2D3" type="Parallax2D" parent="."] +scroll_scale = Vector2(0.8, 0.8) +repeat_size = Vector2(320, 0) + +[node name="Sprite2D" type="Sprite2D" parent="Parallax2D3"] +texture_filter = 1 +position = Vector2(160, 300) +texture = ExtResource("4_got4s") + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture_filter = 1 +position = Vector2(684, 372) +texture = ExtResource("5_e40mx") + +[node name="TileMapLayer" type="TileMapLayer" parent="."] +texture_filter = 1 +position = Vector2(1, 0) +tile_map_data = PackedByteArray("AAAOAAoAAAAEAAQAAAAQAAoAAAAPAAQAAAARAAoAAAABAAQAAAASAAoAAAABAAQAAAATAAoAAAAQAAQAAAAJAAoAAAAEAAIAAAAJAAkAAAANAAMAAAAIAAkAAAAPAAQAAAAIAAgAAAAQAAMAAAAHAAgAAAAPAAQAAAAHAAcAAAAEAAAAAAATAAkAAAAEAAAAAAAQAAkAAAAEAAAAAAAEAA0AAAABAAIAAAAFAA0AAAABAAIAAAAGAA0AAAABAAIAAAAHAA0AAAABAAIAAAAIAA0AAAABAAIAAAAJAA0AAAABAAIAAAAKAA0AAAABAAIAAAALAA0AAAAJAAQAAAAMAA0AAAABAAQAAAANAA0AAAAKAAQAAAAOAA0AAAABAAIAAAAPAA0AAAABAAIAAAAQAA0AAAABAAIAAAARAA0AAAABAAIAAAASAA0AAAABAAIAAAATAA0AAAABAAIAAAAUAA0AAAABAAIAAAAVAA0AAAABAAIAAAAWAA0AAAABAAIAAAAXAA0AAAABAAIAAAAYAA0AAAABAAIAAAAZAA0AAAACAAIAAAAEAAwAAAABAAAAAAAFAAwAAAABAAAAAAAGAAwAAAABAAAAAAAHAAwAAAABAAAAAAAIAAwAAAABAAAAAAAJAAwAAAABAAAAAAAKAAwAAAABAAAAAAALAAwAAAACAAAAAAANAAwAAAAAAAAAAAAOAAwAAAABAAAAAAAPAAwAAAABAAAAAAAQAAwAAAABAAAAAAARAAwAAAABAAAAAAASAAwAAAABAAAAAAATAAwAAAABAAAAAAAUAAwAAAABAAAAAAAVAAwAAAABAAAAAAAWAAwAAAABAAAAAAAXAAwAAAABAAAAAAAYAAwAAAABAAAAAAAZAAwAAAACAAAAAAAQAAgAAgAAAAAAAAAVAAsAAQAAAAEAAAAVAAoAAQAAAAAAAAAWAAsAAQAAAAEAAAAWAAoAAQAAAAAAAAAZAAsAAgAAAAAAAAAYAAsAAQAAAAEAAAAYAAoAAQAAAAAAAAAXAAsAAQAAAAEAAAAXAAoAAQAAAAAAAAAMAAkAAAABAAQAAAALAAkAAAABAAQAAAAKAAkAAAABAAQAAAADAAwAAAABAAAAAAACAAwAAAABAAAAAAABAAwAAAABAAAAAAAAAAwAAAAGAAQAAAADAA0AAAABAAIAAAACAA0AAAABAAIAAAABAA0AAAABAAIAAAAAAA0AAAAAAAIAAAANAAkAAAACAAQAAAA=") +tile_set = SubResource("TileSet_0tnpc") + +[node name="CharacterBody2D" parent="." instance=ExtResource("9_07lh1")] +position = Vector2(471, 287) + +[node name="level" type="Node2D" parent="."] + +[node name="StaticBody2D" type="StaticBody2D" parent="level"] +position = Vector2(1050, 300) +scale = Vector2(0.600002, 1) +metadata/_edit_group_ = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="level/StaticBody2D"] +position = Vector2(-0.75, 10.5) +shape = SubResource("RectangleShape2D_um86g") + +[node name="StaticBody2D2" type="StaticBody2D" parent="level"] +position = Vector2(1091, 498) +metadata/_edit_group_ = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="level/StaticBody2D2"] +position = Vector2(-0.75, 10.5) +shape = SubResource("RectangleShape2D_um86g") + +[node name="StaticBody2D3" type="StaticBody2D" parent="level"] +position = Vector2(1051, 368) +scale = Vector2(2.2, 1) +metadata/_edit_group_ = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="level/StaticBody2D3"] +position = Vector2(-0.75, 10.5) +shape = SubResource("RectangleShape2D_um86g") + +[node name="Floor" type="StaticBody2D" parent="level"] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="level/Floor"] +position = Vector2(473, 428) +shape = SubResource("WorldBoundaryShape2D_16wxc") + +[node name="crates" type="Node2D" parent="."] + +[node name="RigidBody2D" parent="crates" instance=ExtResource("10_6uuvf")] +position = Vector2(407, 407) + +[node name="RigidBody2D2" parent="crates" instance=ExtResource("10_6uuvf")] +position = Vector2(508, 303) + +[node name="RigidBody2D3" parent="crates" instance=ExtResource("10_6uuvf")] +position = Vector2(576, 221) + +[node name="RigidBody2D4" parent="crates" instance=ExtResource("10_6uuvf")] +position = Vector2(403, 324) + +[node name="RigidBody2D5" parent="crates" instance=ExtResource("10_6uuvf")] +position = Vector2(357, 331) + +[node name="Trigger" parent="." instance=ExtResource("11_x008a")] +position = Vector2(-39, 214) + +[node name="Trigger2" parent="." instance=ExtResource("11_x008a")] +position = Vector2(638, 390) +effect = "teleport" + +[node name="DirectionalLight2D" type="DirectionalLight2D" parent="."] +color = Color(0.328443, 0.958547, 0.863958, 1) +energy = 0.23 +blend_mode = 1 + +[node name="coins" type="Node2D" parent="."] + +[node name="Area2D" parent="coins" instance=ExtResource("12_qewby")] +position = Vector2(433, 282) + +[connection signal="triggerFired" from="Trigger" to="." method="_on_trigger_fired"] +[connection signal="triggerFired" from="Trigger2" to="." method="_on_trigger_fired"] diff --git a/scenes/slime.tscn b/scenes/slime.tscn new file mode 100644 index 0000000..3a8f678 --- /dev/null +++ b/scenes/slime.tscn @@ -0,0 +1,73 @@ +[gd_scene load_steps=9 format=3 uid="uid://cro4avvf0dbbr"] + +[ext_resource type="Script" uid="uid://bk0hrjj1738iy" path="res://scripts/slime.gd" id="1_p2gj0"] +[ext_resource type="Texture2D" uid="uid://bc5qrj3rg2rey" path="res://assets/graphics/enemies/slime_green.png" id="2_n6pvg"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_pjw23"] +atlas = ExtResource("2_n6pvg") +region = Rect2(0, 24, 24, 24) + +[sub_resource type="AtlasTexture" id="AtlasTexture_2npkn"] +atlas = ExtResource("2_n6pvg") +region = Rect2(24, 24, 24, 24) + +[sub_resource type="AtlasTexture" id="AtlasTexture_fd6lc"] +atlas = ExtResource("2_n6pvg") +region = Rect2(48, 24, 24, 24) + +[sub_resource type="AtlasTexture" id="AtlasTexture_gstla"] +atlas = ExtResource("2_n6pvg") +region = Rect2(72, 24, 24, 24) + +[sub_resource type="SpriteFrames" id="SpriteFrames_v5wyi"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_pjw23") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_2npkn") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_fd6lc") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_gstla") +}], +"loop": true, +"name": &"run", +"speed": 12.0 +}] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_0l8pv"] +size = Vector2(14, 15) + +[node name="Area2D" type="Area2D"] +script = ExtResource("1_p2gj0") + +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] +texture_filter = 1 +sprite_frames = SubResource("SpriteFrames_v5wyi") +animation = &"run" +autoplay = "run" +frame_progress = 0.677109 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2(0, 4.5) +shape = SubResource("RectangleShape2D_0l8pv") + +[node name="RightSideCast" type="RayCast2D" parent="."] +target_position = Vector2(13, 0) + +[node name="RightDownCast" type="RayCast2D" parent="."] +position = Vector2(7, 0) +target_position = Vector2(0, 14) + +[node name="LeftDownCast" type="RayCast2D" parent="."] +position = Vector2(-7, 0) +target_position = Vector2(0, 14) + +[node name="LeftSideCast" type="RayCast2D" parent="."] +target_position = Vector2(-13, 0) + +[connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/scripts/coin.gd b/scripts/coin.gd new file mode 100644 index 0000000..4dcaabe --- /dev/null +++ b/scripts/coin.gd @@ -0,0 +1,7 @@ +class_name Coin extends Area2D + +signal coinCollectedSignal(body, coin) + +func _on_body_entered(body: Node2D) -> void: + print("Coin collision") + coinCollectedSignal.emit(body, self) diff --git a/scripts/coin.gd.uid b/scripts/coin.gd.uid new file mode 100644 index 0000000..a16040d --- /dev/null +++ b/scripts/coin.gd.uid @@ -0,0 +1 @@ +uid://cp61o6khv0k24 diff --git a/scripts/gamecontroller.gd b/scripts/gamecontroller.gd index f7a260c..a6ab37c 100644 --- a/scripts/gamecontroller.gd +++ b/scripts/gamecontroller.gd @@ -3,6 +3,19 @@ var totalCrates = 3 var timeLimit = 10 var timer = Timer.new() +var coinsCollectedTotal := 0 + +var levels = ["res://scenes/game.tscn","res://scenes/level2.tscn","res://scenes/level3.tscn"] +var timers = [10, 15, 25] +var currentLevel = 0 + +var playerHealth = 100 + +signal levelCompleteSignal(level) +signal destroySignal(body) +signal playerDamage +signal playerDeath + # Called when the node enters the scene tree for the first time. func _ready() -> void: add_child(timer) @@ -14,27 +27,53 @@ func secondCounter(): timeLimit -=1 if timeLimit <= 0: - - get_tree().reload_current_scene() + #loser!!!! + levelCompleteSignal.emit(levels[currentLevel]) # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta: float) -> void: - pass + if totalCrates == 0: + print("YOU WIN!") + currentLevel +=1 + if currentLevel >= levels.size(): + currentLevel = 0 + levelCompleteSignal.emit(levels[currentLevel]) func _on_trigger_fired(effect: Variant, body: Variant) -> void: print("Game controller knows :: "+effect) if effect=="destroy": - totalCrates -= 1 - print("Crates Remaining " + str(totalCrates) ) - body.queue_free() - if totalCrates == 0: - print("YOU WIN!") - get_tree().reload_current_scene() + if body is Crate: + print("Crates Remaining " + str(totalCrates) ) + destroySignal.emit(body) + +func _on_coin_collected(body, coin): + coinsCollectedTotal += 1 + destroySignal.emit(coin) + print("GC knows coin collected") +func _on_player_damage(body, enemy): + if enemy is Slime: + print("slime attack!!!") + playerHealth -= 10 + + if playerHealth >0: + print("Player damaged") + playerDamage.emit() + else: + print("Player dead") + playerDeath.emit() + func numberOfCrates(value): totalCrates = value print("Total crates at GC: "+str(totalCrates) ) func bulletDamage(body, bullet): print("Game controller knows about bullet hit") + +func reset(): + timeLimit = timers[currentLevel] + playerHealth = 100 + +func death(): + print("player death animation complete") diff --git a/scripts/player.gd b/scripts/player.gd index ed591ab..62c49ab 100644 --- a/scripts/player.gd +++ b/scripts/player.gd @@ -29,6 +29,13 @@ var pushTarget:RigidBody2D var pushEnabled:bool = false var upJump:bool = false +signal deathComplete + +func _player_damage(): + print("Player taking damage!") +func _player_death(): + print("Player dead!!") + func _physics_process(delta: float) -> void: diff --git a/scripts/scene_manager.gd b/scripts/scene_manager.gd index fba21cc..6580bc5 100644 --- a/scripts/scene_manager.gd +++ b/scripts/scene_manager.gd @@ -1,20 +1,52 @@ extends Node -@onready var game: GameController = $".." + @onready var crates: Node2D = $"../crates" +@onready var triggers: Node2D = $"../triggers" +@onready var coins: Node2D = $"../coins" +@onready var enemies: Node2D = $"../enemies" +@onready var player: Player = $"../CharacterBody2D" var bullet = preload("res://scenes/bullet.tscn") var bulletArray=[] var totalAllowedBullets = 7 func buildLevel()->void: + Gamecontroller.reset() #count crates + + # tell the game controller + Gamecontroller.numberOfCrates( countCrates() ) + if triggers: + for obj in triggers.get_children(): + if obj is Trigger: + obj.triggerFired.connect(Gamecontroller._on_trigger_fired) + # coins + if coins: + for obj in coins.get_children(): + if obj is Coin: + obj.coinCollectedSignal.connect(Gamecontroller._on_coin_collected) + + # enemies + if enemies: + for obj in enemies.get_children(): + if obj is Slime: + obj.playerDamageSignal.connect(Gamecontroller._on_player_damage) + + #Wire up signals + Gamecontroller.levelCompleteSignal.connect(loadLevel) + Gamecontroller.destroySignal.connect(destroy) + Gamecontroller.playerDamage.connect(player._player_damage) + Gamecontroller.playerDeath.connect(player._player_death) + #player connection + player.deathComplete.connect(Gamecontroller.death) + +func countCrates()->int: var totalCrates = 0 for obj in crates.get_children(): if obj is Crate: totalCrates +=1 - # tell the game controller - game.numberOfCrates(totalCrates) + return totalCrates func _ready() -> void: buildLevel() @@ -24,7 +56,7 @@ func bulletFactory(): if bulletArray.size() < totalAllowedBullets: #new bullet mybullet = bullet.instantiate() - mybullet.connect("bulletHit", game.bulletDamage) + mybullet.connect("bulletHit", Gamecontroller.bulletDamage) owner.add_child(mybullet) else: #recycled bullet @@ -38,3 +70,12 @@ func makeBullet(position, speed): var mybullet = bulletFactory() mybullet.setSpeed(speed) mybullet.transform = position + +func loadLevel(level): + get_tree().call_deferred("change_scene_to_file", level) + +func destroy(body): + if body is Crate: + Gamecontroller.numberOfCrates( countCrates() -1 ) + body.queue_free() + diff --git a/scripts/slime.gd b/scripts/slime.gd new file mode 100644 index 0000000..b477401 --- /dev/null +++ b/scripts/slime.gd @@ -0,0 +1,24 @@ +class_name Slime extends Area2D +signal playerDamageSignal(body, slime) +@onready var right_side_cast: RayCast2D = $RightSideCast +@onready var right_down_cast: RayCast2D = $RightDownCast +@onready var left_down_cast: RayCast2D = $LeftDownCast +@onready var left_side_cast: RayCast2D = $LeftSideCast +@onready var sprite: AnimatedSprite2D = $AnimatedSprite2D + +var speed = 100 +var direction = 1 + +func _process(delta: float) -> void: + if not right_down_cast.is_colliding() or right_side_cast.is_colliding(): + direction = -1 + sprite.flip_h = true + if not left_down_cast.is_colliding() or left_side_cast.is_colliding(): + direction = 1 + sprite.flip_h = false + + position.x += direction * speed * delta + +func _on_body_entered(body: Node2D) -> void: + print("Slime Contact") + playerDamageSignal.emit(body, self) diff --git a/scripts/slime.gd.uid b/scripts/slime.gd.uid new file mode 100644 index 0000000..00e2f58 --- /dev/null +++ b/scripts/slime.gd.uid @@ -0,0 +1 @@ +uid://bk0hrjj1738iy diff --git a/scripts/trigger.gd b/scripts/trigger.gd index e643cd9..d14cee8 100644 --- a/scripts/trigger.gd +++ b/scripts/trigger.gd @@ -1,4 +1,4 @@ -extends Area2D +class_name Trigger extends Area2D @export var effect = "destroy"