diff --git a/assets/graphics/enemies/slime_green.png b/assets/graphics/enemies/slime_green.png new file mode 100644 index 0000000..a21cb6f Binary files /dev/null and b/assets/graphics/enemies/slime_green.png differ diff --git a/assets/graphics/enemies/slime_green.png.import b/assets/graphics/enemies/slime_green.png.import new file mode 100644 index 0000000..8160b80 --- /dev/null +++ b/assets/graphics/enemies/slime_green.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c00c0x1qv83o1" +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/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/graphics/environment/terrain/mushroom2.png b/assets/graphics/environment/terrain/mushroom2.png new file mode 100644 index 0000000..ffaf96e Binary files /dev/null and b/assets/graphics/environment/terrain/mushroom2.png differ diff --git a/assets/graphics/environment/terrain/mushroom2.png.import b/assets/graphics/environment/terrain/mushroom2.png.import new file mode 100644 index 0000000..c10c704 --- /dev/null +++ b/assets/graphics/environment/terrain/mushroom2.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c5al5emuqsd65" +path="res://.godot/imported/mushroom2.png-608f3e649684b6403ee46b5c51e0a32c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/graphics/environment/terrain/mushroom2.png" +dest_files=["res://.godot/imported/mushroom2.png-608f3e649684b6403ee46b5c51e0a32c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/graphics/pickups/coin.png b/assets/graphics/pickups/coin.png new file mode 100644 index 0000000..01ae33d Binary files /dev/null and b/assets/graphics/pickups/coin.png differ diff --git a/assets/graphics/pickups/coin.png.import b/assets/graphics/pickups/coin.png.import new file mode 100644 index 0000000..ef507a4 --- /dev/null +++ b/assets/graphics/pickups/coin.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://chiso4pse86ou" +path="res://.godot/imported/coin.png-f0b33289d8d72c34d5a0c76da4c0f19c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/graphics/pickups/coin.png" +dest_files=["res://.godot/imported/coin.png-f0b33289d8d72c34d5a0c76da4c0f19c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/project.godot b/project.godot index 7966953..ff2ade3 100644 --- a/project.godot +++ b/project.godot @@ -15,6 +15,10 @@ run/main_scene="uid://c2f5v136bbqod" config/features=PackedStringArray("4.6", "Forward Plus") config/icon="res://icon.svg" +[autoload] + +Gamecontroller="*uid://dxubdt7nh5s1j" + [display] window/size/viewport_width=480 diff --git a/scenes/bullet.tscn b/scenes/bullet.tscn index a0ece6c..7aea2a4 100644 --- a/scenes/bullet.tscn +++ b/scenes/bullet.tscn @@ -6,7 +6,6 @@ [sub_resource type="RectangleShape2D" id="RectangleShape2D_rtl8c"] [node name="Bullet" type="Area2D" unique_id=1567847193] -scale = Vector2(1, 0.5) script = ExtResource("1_mkf8s") [node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=492684522] @@ -15,10 +14,11 @@ debug_color = Color(0.5263991, 0.42294088, 0.98291093, 0.41960785) [node name="bulletGraphic" type="Sprite2D" parent="." unique_id=1977135539] texture_filter = 1 -position = Vector2(0.54708874, -2.4242325) +position = Vector2(1.9999999, -0.9999999) rotation = 3.1390445 -scale = Vector2(0.24526763, 0.4321305) +scale = Vector2(0.25, 0.441) texture = ExtResource("2_y25gk") offset = Vector2(34.748413, 22.20977) +[connection signal="area_entered" from="." to="." method="_on_area_entered"] [connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/scenes/coin.tscn b/scenes/coin.tscn new file mode 100644 index 0000000..8b4316c --- /dev/null +++ b/scenes/coin.tscn @@ -0,0 +1,114 @@ +[gd_scene format=3 uid="uid://dowh0cdyuldlp"] + +[ext_resource type="Script" uid="uid://bojml668gpamd" path="res://scripts/coin.gd" id="1_i64fm"] +[ext_resource type="Texture2D" uid="uid://chiso4pse86ou" path="res://assets/graphics/pickups/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 = 3.1622777 + +[node name="Coin" type="Area2D" unique_id=1558332439] +script = ExtResource("1_i64fm") + +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." unique_id=311224823] +texture_filter = 1 +sprite_frames = SubResource("SpriteFrames_ls27i") +autoplay = "default" +frame_progress = 0.19983049 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1300418811] +shape = SubResource("CircleShape2D_ssuvv") +debug_color = Color(0.2738139, 0.62764406, 0.23142225, 0.41960785) + +[connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/scenes/game.tscn b/scenes/game.tscn index 9c0ad86..7dcbe11 100644 --- a/scenes/game.tscn +++ b/scenes/game.tscn @@ -1,6 +1,5 @@ [gd_scene format=4 uid="uid://c2f5v136bbqod"] -[ext_resource type="Script" uid="uid://dxubdt7nh5s1j" path="res://scripts/gameController.gd" id="1_lnu2h"] [ext_resource type="Script" uid="uid://qa1q5a2swlfc" path="res://scripts/scene_manager.gd" id="2_iywne"] [ext_resource type="PackedScene" uid="uid://b6lw2go5mwk3h" path="res://scenes/crate.tscn" id="2_lbhrr"] [ext_resource type="Texture2D" uid="uid://c54wxruqqye2h" path="res://assets/graphics/environment/terrain/Terrain (32x32).png" id="3_gee14"] @@ -13,6 +12,8 @@ [ext_resource type="Texture2D" uid="uid://buoh8285vq3hr" path="res://assets/graphics/bg/trees.png" id="5_kvuet"] [ext_resource type="PackedScene" uid="uid://cp6dv18imsngd" path="res://scenes/bullet.tscn" id="6_p57ef"] [ext_resource type="PackedScene" uid="uid://bgi18lbutp5ui" path="res://scenes/npc_character.tscn" id="7_u5sy4"] +[ext_resource type="PackedScene" uid="uid://dowh0cdyuldlp" path="res://scenes/coin.tscn" id="13_kvuet"] +[ext_resource type="PackedScene" uid="uid://dkht2dvm4ob7d" path="res://scenes/slime.tscn" id="14_trtic"] [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_0tnpc"] texture = ExtResource("3_gee14") @@ -416,36 +417,37 @@ sources/3 = SubResource("TileSetAtlasSource_kvuet") [sub_resource type="WorldBoundaryShape2D" id="WorldBoundaryShape2D_iywne"] [node name="Game" type="Node2D" unique_id=863075634] -script = ExtResource("1_lnu2h") -[node name="SceneManager" type="Node2D" parent="." unique_id=1880010886] -unique_name_in_owner = true -script = ExtResource("2_iywne") +[node name="Background" type="Node2D" parent="." unique_id=31398946] -[node name="sky" type="Parallax2D" parent="." unique_id=1140695532] +[node name="sky" type="Parallax2D" parent="Background" unique_id=1140695532] repeat_size = Vector2(480, 270) -[node name="Sprite2D" type="Sprite2D" parent="sky" unique_id=1206243069] +[node name="Sprite2D" type="Sprite2D" parent="Background/sky" unique_id=1206243069] texture = ExtResource("3_kvpfn") offset = Vector2(240, 135) -[node name="midground" type="Parallax2D" parent="." unique_id=1551602388] +[node name="midground" type="Parallax2D" parent="Background" unique_id=1551602388] scroll_scale = Vector2(1.2, 1) repeat_size = Vector2(420, 0) -[node name="Sprite2D" type="Sprite2D" parent="midground" unique_id=201876078] +[node name="Sprite2D" type="Sprite2D" parent="Background/midground" unique_id=201876078] position = Vector2(25, -139) texture = ExtResource("4_dinhu") offset = Vector2(240, 400) -[node name="trees" type="Parallax2D" parent="." unique_id=67746282] +[node name="trees" type="Parallax2D" parent="Background" unique_id=67746282] repeat_size = Vector2(290, 0) -[node name="Sprite2D" type="Sprite2D" parent="trees" unique_id=252675994] +[node name="Sprite2D" type="Sprite2D" parent="Background/trees" unique_id=252675994] position = Vector2(-140, -30) texture = ExtResource("5_kvuet") offset = Vector2(480, 270) +[node name="SceneManager" type="Node2D" parent="." unique_id=1880010886] +unique_name_in_owner = true +script = ExtResource("2_iywne") + [node name="TileMapLayer" type="TileMapLayer" parent="." unique_id=1424394379] texture_filter = 1 tile_map_data = PackedByteArray("AAAOAAIAAQAAAAQAAAAPAAIAAQACAAQAAAAQAAIAAQABAAQAAAARAAIAAQACAAQAAAAUAAMAAQAAAAAAAAAUAAQAAQAAAAEAAAAUAAUAAQAAAAEAAAAUAAYAAQAAAAIAAAAVAAMAAQABAAAAAAAVAAQAAQABAAEAAAAVAAUAAQABAAEAAAAVAAYAAQAKAAQAAAAWAAMAAQABAAAAAAAWAAQAAQABAAEAAAAWAAUAAQABAAEAAAAWAAYAAQABAAIAAAAXAAMAAQABAAAAAAAXAAQAAQABAAEAAAAXAAUAAQACAAEAAAAXAAYAAQACAAIAAAAYAAMAAQABAAAAAAAYAAQAAQABAAIAAAAZAAMAAQABAAAAAAAZAAQAAQABAAIAAAAaAAMAAQACAAAAAAAaAAQAAQACAAIAAAD//wEAAQAEAAAAAAD//wIAAQAEAAEAAAD//wMAAQAEAAEAAAD//wQAAQAEAAEAAAD//wUAAQAEAAEAAAD//wYAAQAEAAEAAAD//wcAAQAEAAEAAAD//wgAAQAEAAEAAAD//wkAAQAEAAIAAAAQAAUAAQAEAAQAAAAIAAYAAQAEAAQAAAAJAAYAAQAEAAQAAAAKAAYAAQAEAAQAAAALAAYAAQAEAAQAAAAMAAYAAQAEAAQAAAANAAYAAQAEAAAAAAAMAAUAAwAAAAAAAAAQAAQAAwAAAAAAAAAOAAEAAwAAAAAAAAAPAAEAAwAAAAAAAAAUAAIAAwAAAAAAAAAVAAIAAwAAAAAAAAAWAAIAAwAAAAAAAAAXAAIAAwAAAAAAAAAaAAIAAgAAAAEAAAAaAAEAAgAAAAAAAAA=") @@ -470,15 +472,15 @@ effect = "powerup" [node name="Crates" type="Node2D" parent="." unique_id=670229137] [node name="Crate" parent="Crates" unique_id=289536100 instance=ExtResource("2_lbhrr")] -position = Vector2(526, 120) +position = Vector2(529, 115) scale = Vector2(0.99999994, 0.99999994) [node name="Crate2" parent="Crates" unique_id=1758294520 instance=ExtResource("2_lbhrr")] -position = Vector2(382, 96.999985) +position = Vector2(389, 274) scale = Vector2(0.99999994, 0.99999994) [node name="Crate3" parent="Crates" unique_id=161286893 instance=ExtResource("2_lbhrr")] -position = Vector2(354, 114) +position = Vector2(328, 282) scale = Vector2(0.99999994, 0.99999994) [node name="Level" type="Node2D" parent="." unique_id=2000617151] @@ -496,3 +498,22 @@ position = Vector2(256, 130) [node name="NPCCharacter" parent="." unique_id=832040226 instance=ExtResource("7_u5sy4")] position = Vector2(219, 169) + +[node name="Coins" type="Node2D" parent="." unique_id=847273755] + +[node name="Coin" parent="Coins" unique_id=1558332439 instance=ExtResource("13_kvuet")] +position = Vector2(418, 171) + +[node name="Coin2" parent="Coins" unique_id=1894415990 instance=ExtResource("13_kvuet")] +position = Vector2(478, 375) + +[node name="Coin3" parent="Coins" unique_id=1671838530 instance=ExtResource("13_kvuet")] +position = Vector2(536, 373) + +[node name="Slimes" type="Node2D" parent="." unique_id=2025156789] + +[node name="Slime" parent="Slimes" unique_id=305880172 instance=ExtResource("14_trtic")] +position = Vector2(421, 180) + +[node name="Slime2" parent="Slimes" unique_id=1749452870 instance=ExtResource("14_trtic")] +position = Vector2(528, 143) diff --git a/scenes/level2.tscn b/scenes/level2.tscn new file mode 100644 index 0000000..fee0b97 --- /dev/null +++ b/scenes/level2.tscn @@ -0,0 +1,498 @@ +[gd_scene format=4 uid="uid://b55m034wxs2j0"] + +[ext_resource type="Script" uid="uid://qa1q5a2swlfc" path="res://scripts/scene_manager.gd" id="1_8g4ke"] +[ext_resource type="Texture2D" uid="uid://2ahc27bncin6" path="res://assets/graphics/bg/sky.png" id="2_56gwk"] +[ext_resource type="Texture2D" uid="uid://bew07kdk0d27g" path="res://assets/graphics/bg/mountain.png" id="3_ve5ok"] +[ext_resource type="Texture2D" uid="uid://buoh8285vq3hr" path="res://assets/graphics/bg/trees.png" id="4_cleqw"] +[ext_resource type="Texture2D" uid="uid://c54wxruqqye2h" path="res://assets/graphics/environment/terrain/Terrain (32x32).png" id="5_wvb8j"] +[ext_resource type="Texture2D" uid="uid://ssc8drrfnu72" path="res://assets/graphics/environment/terrain/mushroom_32x64.png" id="6_g8vcy"] +[ext_resource type="Texture2D" uid="uid://6jv2l35y03f" path="res://assets/graphics/environment/terrain/veg_32x32.png" id="7_cqal4"] +[ext_resource type="PackedScene" uid="uid://s0utas3jmhjk" path="res://scenes/player.tscn" id="8_o3sye"] +[ext_resource type="PackedScene" uid="uid://bf50mxdma8wq4" path="res://scenes/trigger.tscn" id="9_24ks5"] +[ext_resource type="PackedScene" uid="uid://b6lw2go5mwk3h" path="res://scenes/crate.tscn" id="10_s4es8"] +[ext_resource type="PackedScene" uid="uid://cp6dv18imsngd" path="res://scenes/bullet.tscn" id="11_63e4f"] +[ext_resource type="PackedScene" uid="uid://bgi18lbutp5ui" path="res://scenes/npc_character.tscn" id="12_y6lc1"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_0tnpc"] +texture = ExtResource("5_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, 0.63726044, -16, 0.31863022, 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/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(0.63726044, -16, 16, -16, 16, 16, 0.31863022, 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, 0.31863022, 16, 0, 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, -1.2745247, -16, -1.2745247, 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(1.2745209, -16, 16, -16, 16, 16, 0.63726044, 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, -4.1422005, -16, -3.8235683) +9:3/0/terrains_peering_bit/right_side = 0 +9:3/0/terrains_peering_bit/bottom_right_corner = 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, -4.1422005, -16, -3.8235683) +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/bottom_left_corner = 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, -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/bottom_right_corner = 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, 13.701122, -13.382492, 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, -1.2745247, -16, -1.2745247, 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(1.2745209, -16, 16, -16, 16, 16, 0.63726044, 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, 1.9117851, 16, 2.2304153, 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 +9:4/0/terrains_peering_bit/top_right_corner = 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, 1.9117851, 16, 2.2304153, 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_left_corner = 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, 16, -13.382492, 13.063862) +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, 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_dinhu"] +texture = ExtResource("6_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_kvuet"] +texture = ExtResource("7_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_vtaks"] +tile_size = Vector2i(32, 32) +physics_layer_0/collision_layer = 1 +terrain_set_0/mode = 0 +terrain_set_0/terrain_0/name = "LeafyDirt" +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/1 = SubResource("TileSetAtlasSource_0tnpc") +sources/2 = SubResource("TileSetAtlasSource_dinhu") +sources/3 = SubResource("TileSetAtlasSource_kvuet") + +[sub_resource type="WorldBoundaryShape2D" id="WorldBoundaryShape2D_iywne"] + +[node name="Game" type="Node2D" unique_id=863075634] + +[node name="Background" type="Node2D" parent="." unique_id=31398946] + +[node name="sky" type="Parallax2D" parent="Background" unique_id=1140695532] +repeat_size = Vector2(480, 270) + +[node name="Sprite2D" type="Sprite2D" parent="Background/sky" unique_id=1206243069] +texture = ExtResource("2_56gwk") +offset = Vector2(240, 135) + +[node name="midground" type="Parallax2D" parent="Background" unique_id=1551602388] +scroll_scale = Vector2(1.2, 1) +repeat_size = Vector2(420, 0) + +[node name="Sprite2D" type="Sprite2D" parent="Background/midground" unique_id=201876078] +position = Vector2(25, -139) +texture = ExtResource("3_ve5ok") +offset = Vector2(240, 400) + +[node name="trees" type="Parallax2D" parent="Background" unique_id=67746282] +repeat_size = Vector2(290, 0) + +[node name="Sprite2D" type="Sprite2D" parent="Background/trees" unique_id=252675994] +position = Vector2(-140, -30) +texture = ExtResource("4_cleqw") +offset = Vector2(480, 270) + +[node name="SceneManager" type="Node2D" parent="." unique_id=1880010886] +unique_name_in_owner = true +script = ExtResource("1_8g4ke") + +[node name="TileMapLayer" type="TileMapLayer" parent="." unique_id=1424394379] +texture_filter = 1 +tile_map_data = PackedByteArray("AAAOAAIAAQAAAAQAAAAPAAIAAQACAAQAAAAQAAIAAQABAAQAAAARAAIAAQACAAQAAAAUAAMAAQAAAAAAAAAUAAQAAQAAAAEAAAAUAAUAAQAAAAEAAAAUAAYAAQAAAAIAAAAVAAMAAQABAAAAAAAVAAQAAQABAAEAAAAVAAUAAQABAAEAAAAVAAYAAQAKAAQAAAAWAAMAAQABAAAAAAAWAAQAAQABAAEAAAAWAAUAAQABAAEAAAAWAAYAAQABAAIAAAAXAAMAAQABAAAAAAAXAAQAAQABAAEAAAAXAAUAAQACAAEAAAAXAAYAAQACAAIAAAAYAAMAAQABAAAAAAAYAAQAAQABAAIAAAAZAAMAAQABAAAAAAAZAAQAAQABAAIAAAAaAAMAAQACAAAAAAAaAAQAAQACAAIAAAD//wEAAQAEAAAAAAD//wIAAQAEAAEAAAD//wMAAQAEAAEAAAD//wQAAQAEAAEAAAD//wUAAQAEAAEAAAD//wYAAQAEAAEAAAD//wcAAQAEAAEAAAD//wgAAQAEAAEAAAD//wkAAQAEAAIAAAAQAAUAAQAEAAQAAAAIAAYAAQAEAAQAAAAJAAYAAQAEAAQAAAAKAAYAAQAEAAQAAAALAAYAAQAEAAQAAAAMAAYAAQAEAAQAAAANAAYAAQAEAAAAAAAMAAUAAwAAAAAAAAAQAAQAAwAAAAAAAAAOAAEAAwAAAAAAAAAPAAEAAwAAAAAAAAAUAAIAAwAAAAAAAAAVAAIAAwAAAAAAAAAWAAIAAwAAAAAAAAAXAAIAAwAAAAAAAAAaAAIAAgAAAAEAAAAaAAEAAgAAAAAAAAAZAAIAAgAAAAEAAAAZAAEAAgAAAAAAAAA=") +tile_set = SubResource("TileSet_vtaks") + +[node name="Player" parent="." unique_id=1109630338 instance=ExtResource("8_o3sye")] +position = Vector2(326, 174) + +[node name="Triggers" type="Node2D" parent="." unique_id=824433282] + +[node name="Trigger" parent="Triggers" unique_id=1432397495 instance=ExtResource("9_24ks5")] +position = Vector2(500, 295) + +[node name="Trigger2" parent="Triggers" unique_id=528038205 instance=ExtResource("9_24ks5")] +position = Vector2(196, 297) +effect = "teleport" + +[node name="Trigger3" parent="Triggers" unique_id=516097243 instance=ExtResource("9_24ks5")] +position = Vector2(287, 54) +effect = "powerup" + +[node name="Crates" type="Node2D" parent="." unique_id=670229137] + +[node name="Crate" parent="Crates" unique_id=289536100 instance=ExtResource("10_s4es8")] +position = Vector2(526, 120) +scale = Vector2(0.99999994, 0.99999994) + +[node name="Crate2" parent="Crates" unique_id=1758294520 instance=ExtResource("10_s4es8")] +position = Vector2(382, 96.999985) +scale = Vector2(0.99999994, 0.99999994) + +[node name="Crate3" parent="Crates" unique_id=161286893 instance=ExtResource("10_s4es8")] +position = Vector2(354, 114) +scale = Vector2(0.99999994, 0.99999994) + +[node name="Level" type="Node2D" parent="." unique_id=2000617151] + +[node name="StaticBody2D2" type="StaticBody2D" parent="Level" unique_id=531572601] +position = Vector2(363, 399) +scale = Vector2(1.4, 2.2) +metadata/_edit_group_ = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Level/StaticBody2D2" unique_id=237256227] +shape = SubResource("WorldBoundaryShape2D_iywne") + +[node name="Bullet" parent="." unique_id=1567847193 instance=ExtResource("11_63e4f")] +position = Vector2(256, 130) + +[node name="NPCCharacter" parent="." unique_id=832040226 instance=ExtResource("12_y6lc1")] +position = Vector2(219, 169) diff --git a/scenes/level3.tscn b/scenes/level3.tscn new file mode 100644 index 0000000..88d7734 --- /dev/null +++ b/scenes/level3.tscn @@ -0,0 +1,498 @@ +[gd_scene format=4 uid="uid://cjbgll66453s"] + +[ext_resource type="Script" uid="uid://qa1q5a2swlfc" path="res://scripts/scene_manager.gd" id="1_qewby"] +[ext_resource type="Texture2D" uid="uid://2ahc27bncin6" path="res://assets/graphics/bg/sky.png" id="2_bradm"] +[ext_resource type="Texture2D" uid="uid://bew07kdk0d27g" path="res://assets/graphics/bg/mountain.png" id="3_got4s"] +[ext_resource type="Texture2D" uid="uid://buoh8285vq3hr" path="res://assets/graphics/bg/trees.png" id="4_e40mx"] +[ext_resource type="Texture2D" uid="uid://c54wxruqqye2h" path="res://assets/graphics/environment/terrain/Terrain (32x32).png" id="5_a114e"] +[ext_resource type="Texture2D" uid="uid://ssc8drrfnu72" path="res://assets/graphics/environment/terrain/mushroom_32x64.png" id="6_y1e0c"] +[ext_resource type="Texture2D" uid="uid://6jv2l35y03f" path="res://assets/graphics/environment/terrain/veg_32x32.png" id="7_s4dsi"] +[ext_resource type="PackedScene" uid="uid://s0utas3jmhjk" path="res://scenes/player.tscn" id="8_07lh1"] +[ext_resource type="PackedScene" uid="uid://bf50mxdma8wq4" path="res://scenes/trigger.tscn" id="9_6uuvf"] +[ext_resource type="PackedScene" uid="uid://b6lw2go5mwk3h" path="res://scenes/crate.tscn" id="10_x008a"] +[ext_resource type="PackedScene" uid="uid://cp6dv18imsngd" path="res://scenes/bullet.tscn" id="11_atr84"] +[ext_resource type="PackedScene" uid="uid://bgi18lbutp5ui" path="res://scenes/npc_character.tscn" id="12_qyu38"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_0tnpc"] +texture = ExtResource("5_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, 0.63726044, -16, 0.31863022, 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/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(0.63726044, -16, 16, -16, 16, 16, 0.31863022, 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, 0.31863022, 16, 0, 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, -1.2745247, -16, -1.2745247, 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(1.2745209, -16, 16, -16, 16, 16, 0.63726044, 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, -4.1422005, -16, -3.8235683) +9:3/0/terrains_peering_bit/right_side = 0 +9:3/0/terrains_peering_bit/bottom_right_corner = 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, -4.1422005, -16, -3.8235683) +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/bottom_left_corner = 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, -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/bottom_right_corner = 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, 13.701122, -13.382492, 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, -1.2745247, -16, -1.2745247, 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(1.2745209, -16, 16, -16, 16, 16, 0.63726044, 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, 1.9117851, 16, 2.2304153, 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 +9:4/0/terrains_peering_bit/top_right_corner = 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, 1.9117851, 16, 2.2304153, 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_left_corner = 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, 16, -13.382492, 13.063862) +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, 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_dinhu"] +texture = ExtResource("6_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_kvuet"] +texture = ExtResource("7_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_vtaks"] +tile_size = Vector2i(32, 32) +physics_layer_0/collision_layer = 1 +terrain_set_0/mode = 0 +terrain_set_0/terrain_0/name = "LeafyDirt" +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/1 = SubResource("TileSetAtlasSource_0tnpc") +sources/2 = SubResource("TileSetAtlasSource_dinhu") +sources/3 = SubResource("TileSetAtlasSource_kvuet") + +[sub_resource type="WorldBoundaryShape2D" id="WorldBoundaryShape2D_iywne"] + +[node name="Game" type="Node2D" unique_id=863075634] + +[node name="Background" type="Node2D" parent="." unique_id=31398946] + +[node name="sky" type="Parallax2D" parent="Background" unique_id=1140695532] +repeat_size = Vector2(480, 270) + +[node name="Sprite2D" type="Sprite2D" parent="Background/sky" unique_id=1206243069] +texture = ExtResource("2_bradm") +offset = Vector2(240, 135) + +[node name="midground" type="Parallax2D" parent="Background" unique_id=1551602388] +scroll_scale = Vector2(1.2, 1) +repeat_size = Vector2(420, 0) + +[node name="Sprite2D" type="Sprite2D" parent="Background/midground" unique_id=201876078] +position = Vector2(25, -139) +texture = ExtResource("3_got4s") +offset = Vector2(240, 400) + +[node name="trees" type="Parallax2D" parent="Background" unique_id=67746282] +repeat_size = Vector2(290, 0) + +[node name="Sprite2D" type="Sprite2D" parent="Background/trees" unique_id=252675994] +position = Vector2(-140, -30) +texture = ExtResource("4_e40mx") +offset = Vector2(480, 270) + +[node name="SceneManager" type="Node2D" parent="." unique_id=1880010886] +unique_name_in_owner = true +script = ExtResource("1_qewby") + +[node name="TileMapLayer" type="TileMapLayer" parent="." unique_id=1424394379] +texture_filter = 1 +tile_map_data = PackedByteArray("AAAOAAIAAQAAAAQAAAAPAAIAAQACAAQAAAAQAAIAAQABAAQAAAARAAIAAQACAAQAAAAUAAMAAQAAAAAAAAAUAAQAAQAAAAEAAAAUAAUAAQAAAAEAAAAUAAYAAQAAAAIAAAAVAAMAAQABAAAAAAAVAAQAAQABAAEAAAAVAAUAAQABAAEAAAAVAAYAAQAKAAQAAAAWAAMAAQABAAAAAAAWAAQAAQABAAEAAAAWAAUAAQABAAEAAAAWAAYAAQABAAIAAAAXAAMAAQABAAAAAAAXAAQAAQABAAEAAAAXAAUAAQACAAEAAAAXAAYAAQACAAIAAAAYAAMAAQABAAAAAAAYAAQAAQABAAIAAAAZAAMAAQABAAAAAAAZAAQAAQABAAIAAAAaAAMAAQACAAAAAAAaAAQAAQACAAIAAAD//wEAAQAEAAAAAAD//wIAAQAEAAEAAAD//wMAAQAEAAEAAAD//wQAAQAEAAEAAAD//wUAAQAEAAEAAAD//wYAAQAEAAEAAAD//wcAAQAEAAEAAAD//wgAAQAEAAEAAAD//wkAAQAEAAIAAAAQAAUAAQAEAAQAAAAIAAYAAQAEAAQAAAAJAAYAAQAEAAQAAAAKAAYAAQAEAAQAAAALAAYAAQAEAAQAAAAMAAYAAQAEAAQAAAANAAYAAQAEAAAAAAAMAAUAAwAAAAAAAAAQAAQAAwAAAAAAAAAOAAEAAwAAAAAAAAAPAAEAAwAAAAAAAAAUAAIAAwAAAAAAAAAVAAIAAwAAAAAAAAAWAAIAAwAAAAAAAAAXAAIAAwAAAAAAAAAaAAIAAgAAAAEAAAAaAAEAAgAAAAAAAAAZAAIAAgAAAAEAAAAZAAEAAgAAAAAAAAAYAAIAAgAAAAEAAAAYAAEAAgAAAAAAAAA=") +tile_set = SubResource("TileSet_vtaks") + +[node name="Player" parent="." unique_id=1109630338 instance=ExtResource("8_07lh1")] +position = Vector2(326, 174) + +[node name="Triggers" type="Node2D" parent="." unique_id=824433282] + +[node name="Trigger" parent="Triggers" unique_id=1432397495 instance=ExtResource("9_6uuvf")] +position = Vector2(500, 295) + +[node name="Trigger2" parent="Triggers" unique_id=528038205 instance=ExtResource("9_6uuvf")] +position = Vector2(196, 297) +effect = "teleport" + +[node name="Trigger3" parent="Triggers" unique_id=516097243 instance=ExtResource("9_6uuvf")] +position = Vector2(287, 54) +effect = "powerup" + +[node name="Crates" type="Node2D" parent="." unique_id=670229137] + +[node name="Crate" parent="Crates" unique_id=289536100 instance=ExtResource("10_x008a")] +position = Vector2(526, 120) +scale = Vector2(0.99999994, 0.99999994) + +[node name="Crate2" parent="Crates" unique_id=1758294520 instance=ExtResource("10_x008a")] +position = Vector2(382, 96.999985) +scale = Vector2(0.99999994, 0.99999994) + +[node name="Crate3" parent="Crates" unique_id=161286893 instance=ExtResource("10_x008a")] +position = Vector2(354, 114) +scale = Vector2(0.99999994, 0.99999994) + +[node name="Level" type="Node2D" parent="." unique_id=2000617151] + +[node name="StaticBody2D2" type="StaticBody2D" parent="Level" unique_id=531572601] +position = Vector2(363, 399) +scale = Vector2(1.4, 2.2) +metadata/_edit_group_ = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Level/StaticBody2D2" unique_id=237256227] +shape = SubResource("WorldBoundaryShape2D_iywne") + +[node name="Bullet" parent="." unique_id=1567847193 instance=ExtResource("11_atr84")] +position = Vector2(256, 130) + +[node name="NPCCharacter" parent="." unique_id=832040226 instance=ExtResource("12_qyu38")] +position = Vector2(219, 169) diff --git a/scenes/player.tscn b/scenes/player.tscn index a9bafda..1c82ade 100644 --- a/scenes/player.tscn +++ b/scenes/player.tscn @@ -200,5 +200,6 @@ animation = &"jumping" autoplay = "idle" [node name="Camera2D" type="Camera2D" parent="." unique_id=796536564] +zoom = Vector2(0.6, 0.6) [connection signal="animation_finished" from="PlayerGraphic" to="." method="_on_animation_finished"] diff --git a/scenes/slime.tscn b/scenes/slime.tscn new file mode 100644 index 0000000..cdcea83 --- /dev/null +++ b/scenes/slime.tscn @@ -0,0 +1,78 @@ +[gd_scene format=3 uid="uid://dkht2dvm4ob7d"] + +[ext_resource type="Texture2D" uid="uid://c00c0x1qv83o1" path="res://assets/graphics/enemies/slime_green.png" id="1_371uh"] +[ext_resource type="Script" uid="uid://8iya0pgh6sfe" path="res://scripts/slime.gd" id="1_p2gj0"] + +[sub_resource type="CircleShape2D" id="CircleShape2D_p2gj0"] +radius = 4.8021874 + +[sub_resource type="AtlasTexture" id="AtlasTexture_n6pvg"] +atlas = ExtResource("1_371uh") +region = Rect2(0, 24, 24, 24) + +[sub_resource type="AtlasTexture" id="AtlasTexture_pjw23"] +atlas = ExtResource("1_371uh") +region = Rect2(24, 24, 24, 24) + +[sub_resource type="AtlasTexture" id="AtlasTexture_2npkn"] +atlas = ExtResource("1_371uh") +region = Rect2(48, 24, 24, 24) + +[sub_resource type="AtlasTexture" id="AtlasTexture_fd6lc"] +atlas = ExtResource("1_371uh") +region = Rect2(72, 24, 24, 24) + +[sub_resource type="SpriteFrames" id="SpriteFrames_gstla"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_n6pvg") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_pjw23") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_2npkn") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_fd6lc") +}], +"loop": true, +"name": &"default", +"speed": 12.0 +}] + +[node name="Slime" type="Area2D" unique_id=305880172] +script = ExtResource("1_p2gj0") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=647585054] +position = Vector2(0, 3) +scale = Vector2(1.0655605, -0.97931033) +shape = SubResource("CircleShape2D_p2gj0") + +[node name="SlimeGraphic" type="AnimatedSprite2D" parent="." unique_id=1679150105] +texture_filter = 1 +position = Vector2(-1, -1) +sprite_frames = SubResource("SpriteFrames_gstla") +autoplay = "default" +frame_progress = 0.7351196 + +[node name="RightCast" type="RayCast2D" parent="." unique_id=575609518] +visible = false +target_position = Vector2(14, 0) + +[node name="LeftCast" type="RayCast2D" parent="." unique_id=821553577] +visible = false +target_position = Vector2(-15, 1) + +[node name="RightDownCast" type="RayCast2D" parent="." unique_id=673145016] +visible = false +position = Vector2(6, 1) +target_position = Vector2(0, 11) + +[node name="LeftDownCast" type="RayCast2D" parent="." unique_id=1253465642] +visible = false +position = Vector2(-8, 0) +target_position = Vector2(0, 12) + +[connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/scripts/bullet.gd b/scripts/bullet.gd index b470f89..787c3bc 100644 --- a/scripts/bullet.gd +++ b/scripts/bullet.gd @@ -24,3 +24,7 @@ func _process(delta: float) -> void: func _on_body_entered(body: Node2D) -> void: bulletDamageSignal.emit(body,self) + + +func _on_area_entered(area: Area2D) -> void: + bulletDamageSignal.emit(area,self) diff --git a/scripts/coin.gd b/scripts/coin.gd new file mode 100644 index 0000000..806174e --- /dev/null +++ b/scripts/coin.gd @@ -0,0 +1,12 @@ +class_name Coin extends Area2D + +signal coinCollectedSignal(body, coin) + + + +func _on_body_entered(body: Node2D) -> void: + if body is Player: + coinCollectedSignal.emit(body,self) + + + diff --git a/scripts/coin.gd.uid b/scripts/coin.gd.uid new file mode 100644 index 0000000..0962263 --- /dev/null +++ b/scripts/coin.gd.uid @@ -0,0 +1 @@ +uid://bojml668gpamd diff --git a/scripts/gameController.gd b/scripts/gameController.gd index 3d542e4..32825f1 100644 --- a/scripts/gameController.gd +++ b/scripts/gameController.gd @@ -8,6 +8,18 @@ var currentScene:String="res://scenes/game.tscn" var timer := Timer.new() var timeAvailable := 10 +var levels=["res://scenes/game.tscn","res://scenes/level2.tscn","res://scenes/level3.tscn"] +var timers =[15, 10, 8] +var currentLevel=0 +var coinsCollected=0 + +var playerHealth=100 +var playerStartingHealth =100 + +var enemiesDict={} + + + # Called when the node enters the scene tree for the first time. func _ready() -> void: @@ -17,12 +29,16 @@ func _ready() -> void: timer.one_shot=false timer.connect("timeout", secondCounter) timer.start() + +func reset() -> void: + timeAvailable =timers[currentLevel] + playerHealth=playerStartingHealth func secondCounter()-> void: timeAvailable -=1 if timeAvailable <=0: print("YOU LOSE!!") - levelChangeSignal.emit(currentScene) + levelChangeSignal.emit(levels[currentLevel]) @@ -59,19 +75,53 @@ func crateUpdate(cratesAmount) ->void: print("GC updated crates: " +str(crateTotal)) if crateTotal <=0: print("you win") - levelChangeSignal.emit(currentScene) + currentLevel +=1 + if currentLevel >= levels.size(): + currentLevel=0 + levelChangeSignal.emit(levels[currentLevel]) func bulletDamage(body:Node2D,bullet:Bullet) -> void: if body is Crate: # destroy Crate destroySignal.emit(body) destroySignal.emit(bullet) + if body is Slime: + enemiesDict[body]["health"] -=10 + if enemiesDict[body]["health"] <=0: + destroySignal.emit(body) + destroySignal.emit(bullet) - - - - - + +func _on_coin_collected(body:Node2D, coin:Coin) -> void: + print("GC knows coin collected") + coinsCollected +=1 + destroySignal.emit(coin) + + +func totalCoins(value) -> void: + print("GC knows coin remaining " + str(value)) + if value <=0: + # no coins left in level + levelChangeSignal.emit(levels[currentLevel]) + +func _on_slime_damage(body:Node2D, slime:Slime) -> void: + playerHealth -=enemiesDict[slime]["damage"] + print("GC knows damage "+str(enemiesDict[slime]["damage"])) + print("GC knows slime damage to player "+ str(playerHealth)) + if playerHealth <=0: + print("You are dead") + levelChangeSignal.emit(levels[currentLevel]) + + +func addEnemyToLevel(slime:Slime)-> void: + var randDamage:int=randi()%10 + var enemyStat ={ + "health": 50, + "damage": randDamage + } + + #put it in dictionary + enemiesDict[slime]=enemyStat diff --git a/scripts/scene_manager.gd b/scripts/scene_manager.gd index d2588a0..d5e9d19 100644 --- a/scripts/scene_manager.gd +++ b/scripts/scene_manager.gd @@ -2,7 +2,9 @@ class_name SceneManager extends Node2D @onready var triggers: Node2D = $"../Triggers" @onready var level: Node2D = $"../Level" @onready var crates: Node2D = $"../Crates" -@onready var game: GameController = $".." +@onready var coins: Node2D = $"../Coins" +@onready var slimes: Node2D = $"../Slimes" + # has the recepies var bullet = preload("res://scenes/bullet.tscn") var bulletArray:Array[Bullet] = [] @@ -11,6 +13,9 @@ var totalAllowedBullets:int=7 # Called when the node enters the scene tree for the first time. func _ready() -> void: + # resets the timer + # player health + Gamecontroller.reset() buildLevel() @@ -23,18 +28,51 @@ func buildLevel() -> void: print("building level") updatesCrates() updateTriggers() + updateCoins() + updateEnemies() #wire up signals from gamecontrollerd - game.destroySignal.connect(destroy) - game.teleportSignal.connect(teleport) - game.levelChangeSignal.connect(loadLevel) + Gamecontroller.destroySignal.connect(destroy) + Gamecontroller.teleportSignal.connect(teleport) + Gamecontroller.levelChangeSignal.connect(loadLevel) + +func updateEnemies() -> void: + if slimes: + var totalSlimes =0 + for obj in slimes.get_children(): + if obj is Slime: + totalSlimes +=1 + Gamecontroller.addEnemyToLevel(obj) + #hook up to game controller + if not obj.slimeDamageSignal.is_connected(Gamecontroller._on_slime_damage): + obj.slimeDamageSignal.connect(Gamecontroller._on_slime_damage) + + +func updateCoins() -> void: + if coins: + var totalCoins=0 + for obj in coins.get_children(): + if obj is Coin: + totalCoins +=1 + # hook up coin to gamecontrollerd + if not obj.coinCollectedSignal.is_connected(Gamecontroller._on_coin_collected): + obj.coinCollectedSignal.connect(Gamecontroller._on_coin_collected) + # any time coin destroyed update game controller + if not obj.tree_exited.is_connected(updateCoins): + obj.tree_exited.connect(updateCoins) + + # tell game controller! + Gamecontroller.totalCoins(totalCoins) + + + func updateTriggers()->void: if triggers: for obj in triggers.get_children(): if obj is Trigger: - if not obj.AreaTrigger.is_connected(game._on_trigger): - obj.AreaTrigger.connect(game._on_trigger) + if not obj.AreaTrigger.is_connected(Gamecontroller._on_trigger): + obj.AreaTrigger.connect(Gamecontroller._on_trigger) func updatesCrates() -> void: @@ -47,7 +85,7 @@ func updatesCrates() -> void: obj.tree_exited.connect(updatesCrates) totalCrates+=1 print("Total crates: "+str(totalCrates)) - game.crateUpdate(totalCrates) + Gamecontroller.crateUpdate(totalCrates) func destroy(body)->void: @@ -79,10 +117,9 @@ func bulletFactory()-> Bullet: # how many bullets have been made? if bulletArray.size() <=totalAllowedBullets: myBullet=bullet.instantiate() - if not myBullet.bulletDamageSignal.is_connected(game.bulletDamage): - myBullet.bulletDamageSignal.connect(game.bulletDamage) - - game.add_child(myBullet) + if not myBullet.bulletDamageSignal.is_connected(Gamecontroller.bulletDamage): + myBullet.bulletDamageSignal.connect(Gamecontroller.bulletDamage) + add_sibling(myBullet) else: myBullet=bulletArray.pop_back() bulletArray.push_front(myBullet) @@ -97,7 +134,3 @@ func makebullet(targetPosition,speed) -> void: myBullet.setSpeed(speed) myBullet.set_process(true) - - - - diff --git a/scripts/slime.gd b/scripts/slime.gd new file mode 100644 index 0000000..2745b5a --- /dev/null +++ b/scripts/slime.gd @@ -0,0 +1,34 @@ +class_name Slime 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 +@onready var slime_graphic: AnimatedSprite2D = $SlimeGraphic + + + +var speed:int=100 +var direction =1 +signal slimeDamageSignal(body,slime) + +#animation code +func _process(delta: float) -> void: + if not right_down_cast.is_colliding(): + direction =-1 + slime_graphic.flip_h=true + if not left_down_cast.is_colliding(): + direction =1 + slime_graphic.flip_h=true + if right_cast.is_colliding() && not right_cast.get_collider() is Player: + direction =-1 + slime_graphic.flip_h=true + if left_cast.is_colliding() && not left_cast.get_collider() is Player: + direction =1 + slime_graphic.flip_h=false + position.x += direction*speed*delta + + + +func _on_body_entered(body: Node2D) -> void: + if body is Player: + slimeDamageSignal.emit(body,self) diff --git a/scripts/slime.gd.uid b/scripts/slime.gd.uid new file mode 100644 index 0000000..7488ff5 --- /dev/null +++ b/scripts/slime.gd.uid @@ -0,0 +1 @@ +uid://8iya0pgh6sfe