diff --git a/assets/graphics/collectibles/coin.png b/assets/graphics/collectibles/coin.png new file mode 100644 index 0000000..01ae33d Binary files /dev/null and b/assets/graphics/collectibles/coin.png differ diff --git a/assets/graphics/collectibles/coin.png.import b/assets/graphics/collectibles/coin.png.import new file mode 100644 index 0000000..56587be --- /dev/null +++ b/assets/graphics/collectibles/coin.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b3y3el5roo4i8" +path="res://.godot/imported/coin.png-20c0ec177f21de2ef8f2f0e70fa6fe8a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/graphics/collectibles/coin.png" +dest_files=["res://.godot/imported/coin.png-20c0ec177f21de2ef8f2f0e70fa6fe8a.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/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..f26ea32 --- /dev/null +++ b/assets/graphics/enemies/slime_green.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cn1jvyyvb3g3c" +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 a01456d..404d073 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..7de1d68 --- /dev/null +++ b/scenes/coin.tscn @@ -0,0 +1,114 @@ +[gd_scene load_steps=17 format=3 uid="uid://dn4tjgue768y1"] + +[ext_resource type="Script" uid="uid://cwfj4njnlumvy" path="res://scripts/coin.gd" id="1_i64fm"] +[ext_resource type="Texture2D" uid="uid://b3y3el5roo4i8" 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_rwqht"] +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" +frame = 8 +frame_progress = 0.53278 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("CircleShape2D_rwqht") + +[connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/scenes/game.tscn b/scenes/game.tscn index f9113db..a7ab20b 100644 --- a/scenes/game.tscn +++ b/scenes/game.tscn @@ -1,6 +1,5 @@ [gd_scene load_steps=18 format=4 uid="uid://bvs868ncmeoj5"] -[ext_resource type="Script" uid="uid://dtod1rsvbxyti" path="res://gamecontroller.gd" id="1_lnu2h"] [ext_resource type="Script" uid="uid://bijvpac45v6s1" path="res://scripts/scene_manager.gd" id="2_lbhrr"] [ext_resource type="PackedScene" uid="uid://c5a5u2c250g6" path="res://scenes/player.tscn" id="2_lnu2h"] [ext_resource type="Texture2D" uid="uid://bsw50wv55u4rt" path="res://assets/graphics/terrain/vegetation/mushroom_32x64.png" id="3_0tnpc"] @@ -10,8 +9,9 @@ [ext_resource type="Texture2D" uid="uid://cksofegwut4ew" path="res://assets/graphics/backgrounds/forestbackground_mid.png" id="4_kvpfn"] [ext_resource type="Texture2D" uid="uid://dryfguqeab0p8" path="res://assets/graphics/terrain/vegetation/veg_32x32.png" id="4_vtaks"] [ext_resource type="Texture2D" uid="uid://c3uh4ikl0sd3c" path="res://assets/graphics/backgrounds/forestbackground_front.png" id="5_dinhu"] -[ext_resource type="PackedScene" uid="uid://cy02yf4v8q5v6" path="res://scenes/bullet.tscn" id="6_p57ef"] [ext_resource type="Texture2D" uid="uid://qp10yhvkchdb" path="res://assets/graphics/terrain/Terrain (32x32).png" id="7_u5sy4"] +[ext_resource type="PackedScene" uid="uid://dn4tjgue768y1" path="res://scenes/coin.tscn" id="11_kvpfn"] +[ext_resource type="PackedScene" uid="uid://b2lq6rp0aht6d" path="res://scenes/slime.tscn" id="12_dinhu"] [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_gee14"] texture = ExtResource("7_u5sy4") @@ -385,7 +385,6 @@ sources/2 = SubResource("TileSetAtlasSource_dinhu") [sub_resource type="WorldBoundaryShape2D" id="WorldBoundaryShape2D_uwrxv"] [node name="Game" type="Node2D"] -script = ExtResource("1_lnu2h") [node name="SceneManager" type="Node" parent="."] unique_name_in_owner = true @@ -408,6 +407,7 @@ texture = ExtResource("4_kvpfn") [node name="Parallax2D3" type="Parallax2D" parent="."] scroll_scale = Vector2(0.5, 0.5) +scroll_offset = Vector2(-159, -35) repeat_size = Vector2(320, 0) [node name="Sprite2D" type="Sprite2D" parent="Parallax2D3"] @@ -416,13 +416,18 @@ texture = ExtResource("5_dinhu") [node name="TileMapLayer" type="TileMapLayer" parent="."] texture_filter = 1 -tile_map_data = PackedByteArray("AAAPAAMAAAAEAAQAAAACAAEAAAAEAAAAAAACAAIAAAAEAAEAAAACAAMAAAAEAAEAAAACAAQAAAAEAAEAAAACAAUAAAAEAAEAAAACAAYAAAAEAAEAAAACAAcAAAAEAAEAAAACAAgAAAAEAAEAAAACAAkAAAAEAAIAAAAeAAYAAAAAAAQAAAAfAAYAAAABAAQAAAAgAAYAAAABAAQAAAAhAAYAAAABAAQAAAAiAAYAAAABAAQAAAAjAAYAAAABAAQAAAAkAAYAAAABAAQAAAAlAAYAAAABAAQAAAAmAAYAAAACAAQAAAAFABAAAAAGAAEAAAAFAA8AAAACAAEAAAAFAA4AAAACAAEAAAAFAA0AAAACAAEAAAAFAAwAAAACAAEAAAAFAAsAAAACAAAAAAAEABAAAAAGAAAAAAAEAA8AAAAGAAAAAAAEAA4AAAAGAAAAAAAEAA0AAAAGAAAAAAAEAAwAAAAGAAAAAAAEAAsAAAABAAAAAAADABAAAAAGAAAAAAADAA8AAAAHAAAAAAADAA4AAAAGAAAAAAADAA0AAAAGAAAAAAADAAwAAAAGAAAAAAADAAsAAAABAAAAAAACABAAAAAGAAAAAAACAA8AAAAGAAAAAAACAA4AAAAGAAAAAAACAA0AAAAGAAAAAAACAAwAAAAGAAAAAAACAAsAAAABAAAAAAABABAAAAAHAAEAAAABAA8AAAAAAAEAAAABAA4AAAAAAAEAAAABAA0AAAAAAAEAAAABAAwAAAAAAAEAAAABAAsAAAAAAAAAAAAjAAsAAAACAAIAAAAjAAoAAAACAAEAAAAjAAkAAAACAAAAAAAiAAsAAAABAAIAAAAiAAoAAAAGAAAAAAAiAAkAAAABAAAAAAAhAAsAAAAAAAIAAAAhAAoAAAAAAAEAAAAhAAkAAAAAAAAAAAAiAAIAAAACAAIAAAAiAAEAAAACAAAAAAAhAAIAAAAAAAIAAAAhAAEAAAAAAAAAAAABAAoAAgAAAAAAAAADAAoAAgAAAAAAAAAFAAoAAgAAAAAAAAACAAAAAgAAAAAAAAAeAAUAAgAAAAAAAAAfAAUAAgAAAAAAAAAgAAUAAgAAAAAAAAAhAAUAAgAAAAAAAAAUAA8AAgAAAAAAAAAVAA8AAgAAAAAAAAAWAA8AAgAAAAAAAAAXAA8AAgAAAAAAAAAYAA8AAgAAAAAAAAAZAA8AAgAAAAAAAAAMAA8AAgAAAAAAAAAOAA8AAQAAAAEAAAAOAA4AAQAAAAAAAAANAA8AAgAAAAAAAAAKAA8AAQAAAAEAAAAKAA4AAQAAAAAAAAAhAAgAAgAAAAAAAAAiAAgAAQAAAAEAAAAiAAcAAQAAAAAAAAAGABAAAAABAAAAAAAHABAAAAABAAAAAAAIABAAAAABAAAAAAAJABAAAAABAAAAAAAKABAAAAABAAAAAAALABAAAAABAAAAAAAMABAAAAABAAAAAAANABAAAAABAAAAAAAOABAAAAABAAAAAAAPABAAAAABAAAAAAAQABAAAAABAAAAAAARABAAAAABAAAAAAASABAAAAABAAAAAAATABAAAAABAAAAAAAUABAAAAABAAAAAAAVABAAAAABAAAAAAAWABAAAAABAAAAAAAXABAAAAABAAAAAAAYABAAAAABAAAAAAAZABAAAAABAAAAAAAaABAAAAABAAAAAAAbABAAAAABAAAAAAAcABAAAAABAAAAAAAdABAAAAABAAAAAAAeABAAAAABAAAAAAAfABAAAAABAAAAAAAgABAAAAABAAAAAAAhABAAAAABAAAAAAAiABAAAAABAAAAAAAjABAAAAABAAAAAAAkABAAAAABAAAAAAAlABAAAAABAAAAAAAmABAAAAABAAAAAAAnABAAAAABAAAAAAAoABAAAAABAAAAAAD//xAAAAAAAAQAAAAAABAAAAAKAAMAAAAqABAAAAABAAQAAAApABAAAAAJAAMAAAArABAAAAACAAQAAAAAABEAAAAAAAIAAAABABEAAAABAAIAAAACABEAAAABAAIAAAADABEAAAABAAIAAAAEABEAAAABAAIAAAAFABEAAAABAAIAAAAGABEAAAABAAIAAAAHABEAAAABAAIAAAAIABEAAAABAAIAAAAJABEAAAABAAIAAAAKABEAAAABAAIAAAALABEAAAABAAIAAAAMABEAAAABAAIAAAANABEAAAABAAIAAAAOABEAAAABAAIAAAAPABEAAAABAAIAAAAQABEAAAABAAIAAAARABEAAAABAAIAAAASABEAAAABAAIAAAATABEAAAABAAIAAAAUABEAAAABAAIAAAAVABEAAAABAAIAAAAWABEAAAABAAIAAAAXABEAAAABAAIAAAAYABEAAAABAAIAAAAZABEAAAABAAIAAAAaABEAAAABAAIAAAAbABEAAAABAAIAAAAcABEAAAABAAIAAAAdABEAAAABAAIAAAAeABEAAAABAAIAAAAfABEAAAABAAIAAAAgABEAAAABAAIAAAAhABEAAAABAAIAAAAiABEAAAABAAIAAAAjABEAAAABAAIAAAAkABEAAAABAAIAAAAlABEAAAABAAIAAAAmABEAAAABAAIAAAAnABEAAAABAAIAAAAoABEAAAABAAIAAAApABEAAAACAAIAAAA=") +position = Vector2(12, 26) +tile_map_data = PackedByteArray("AAAPAAMAAAABAAQAAAACAAEAAAAEAAAAAAACAAIAAAAEAAEAAAACAAMAAAAEAAEAAAACAAQAAAAEAAEAAAACAAUAAAAEAAEAAAACAAYAAAAEAAEAAAACAAcAAAAEAAEAAAACAAgAAAAEAAEAAAACAAkAAAAEAAIAAAAeAAYAAAAAAAQAAAAfAAYAAAABAAQAAAAgAAYAAAABAAQAAAAhAAYAAAABAAQAAAAiAAYAAAABAAQAAAAjAAYAAAABAAQAAAAkAAYAAAABAAQAAAAlAAYAAAABAAQAAAAmAAYAAAACAAQAAAAFABAAAAAGAAEAAAAFAA8AAAACAAEAAAAFAA4AAAACAAEAAAAFAA0AAAACAAEAAAAFAAwAAAACAAEAAAAFAAsAAAACAAAAAAAEABAAAAAGAAAAAAAEAA8AAAAGAAAAAAAEAA4AAAAGAAAAAAAEAA0AAAAGAAAAAAAEAAwAAAAGAAAAAAAEAAsAAAABAAAAAAADABAAAAAGAAAAAAADAA8AAAAHAAAAAAADAA4AAAAGAAAAAAADAA0AAAAGAAAAAAADAAwAAAAGAAAAAAADAAsAAAABAAAAAAACABAAAAAGAAAAAAACAA8AAAAGAAAAAAACAA4AAAAGAAAAAAACAA0AAAAGAAAAAAACAAwAAAAGAAAAAAACAAsAAAABAAAAAAABABAAAAAHAAEAAAABAA8AAAAAAAEAAAABAA4AAAAAAAEAAAABAA0AAAAAAAEAAAABAAwAAAAAAAEAAAABAAsAAAAAAAAAAAAjAAsAAAACAAIAAAAjAAoAAAACAAEAAAAjAAkAAAACAAAAAAAiAAsAAAABAAIAAAAiAAoAAAAGAAAAAAAiAAkAAAABAAAAAAAhAAsAAAAAAAIAAAAhAAoAAAAAAAEAAAAhAAkAAAAAAAAAAAAiAAIAAAACAAIAAAAiAAEAAAACAAAAAAAhAAIAAAAAAAIAAAAhAAEAAAAAAAAAAAABAAoAAgAAAAAAAAADAAoAAgAAAAAAAAAFAAoAAgAAAAAAAAACAAAAAgAAAAAAAAAeAAUAAgAAAAAAAAAfAAUAAgAAAAAAAAAgAAUAAgAAAAAAAAAhAAUAAgAAAAAAAAAUAA8AAgAAAAAAAAAVAA8AAgAAAAAAAAAWAA8AAgAAAAAAAAAXAA8AAgAAAAAAAAAYAA8AAgAAAAAAAAAZAA8AAgAAAAAAAAAMAA8AAgAAAAAAAAAOAA8AAQAAAAEAAAAOAA4AAQAAAAAAAAANAA8AAgAAAAAAAAAKAA8AAQAAAAEAAAAKAA4AAQAAAAAAAAAhAAgAAgAAAAAAAAAiAAgAAQAAAAEAAAAiAAcAAQAAAAAAAAAGABAAAAABAAAAAAAHABAAAAABAAAAAAAIABAAAAABAAAAAAAJABAAAAABAAAAAAAKABAAAAABAAAAAAALABAAAAABAAAAAAAMABAAAAABAAAAAAANABAAAAABAAAAAAAOABAAAAABAAAAAAAPABAAAAABAAAAAAAQABAAAAABAAAAAAARABAAAAABAAAAAAASABAAAAABAAAAAAATABAAAAABAAAAAAAUABAAAAABAAAAAAAVABAAAAABAAAAAAAWABAAAAABAAAAAAAXABAAAAABAAAAAAAYABAAAAABAAAAAAAZABAAAAABAAAAAAAaABAAAAABAAAAAAAbABAAAAABAAAAAAAcABAAAAABAAAAAAAdABAAAAABAAAAAAAeABAAAAABAAAAAAAfABAAAAABAAAAAAAgABAAAAABAAAAAAAhABAAAAABAAAAAAAiABAAAAABAAAAAAAjABAAAAABAAAAAAAkABAAAAABAAAAAAAlABAAAAABAAAAAAAmABAAAAABAAAAAAAnABAAAAABAAAAAAAoABAAAAABAAAAAAD//xAAAAAAAAQAAAAAABAAAAAKAAMAAAAqABAAAAABAAQAAAApABAAAAAJAAMAAAArABAAAAACAAQAAAAAABEAAAAAAAIAAAABABEAAAABAAIAAAACABEAAAABAAIAAAADABEAAAABAAIAAAAEABEAAAABAAIAAAAFABEAAAABAAIAAAAGABEAAAABAAIAAAAHABEAAAABAAIAAAAIABEAAAABAAIAAAAJABEAAAABAAIAAAAKABEAAAABAAIAAAALABEAAAABAAIAAAAMABEAAAABAAIAAAANABEAAAABAAIAAAAOABEAAAABAAIAAAAPABEAAAABAAIAAAAQABEAAAABAAIAAAARABEAAAABAAIAAAASABEAAAABAAIAAAATABEAAAABAAIAAAAUABEAAAABAAIAAAAVABEAAAABAAIAAAAWABEAAAABAAIAAAAXABEAAAABAAIAAAAYABEAAAABAAIAAAAZABEAAAABAAIAAAAaABEAAAABAAIAAAAbABEAAAABAAIAAAAcABEAAAABAAIAAAAdABEAAAABAAIAAAAeABEAAAABAAIAAAAfABEAAAABAAIAAAAgABEAAAABAAIAAAAhABEAAAABAAIAAAAiABEAAAABAAIAAAAjABEAAAABAAIAAAAkABEAAAABAAIAAAAlABEAAAABAAIAAAAmABEAAAABAAIAAAAnABEAAAABAAIAAAAoABEAAAABAAIAAAApABEAAAACAAIAAAANAAMAAAAAAAQAAAAOAAMAAAAMAAQAAAAQAAMAAAABAAQAAAARAAMAAAACAAQAAAATAAMAAAAAAAQAAAAUAAMAAAANAAQAAAAUAAIAAAAEAAAAAAAUAAQAAAAEAAEAAAAUAAUAAAAEAAEAAAAUAAYAAAAEAAEAAAAUAAcAAAAMAAQAAAATAAcAAAAAAAQAAAAVAAcAAAACAAQAAAAOAAIAAAAEAAAAAAA=") tile_set = SubResource("TileSet_0tnpc") [node name="CharacterBody2D" parent="." instance=ExtResource("2_lnu2h")] position = Vector2(489, 45) bump_power = 50.0 +[node name="DirectionalLight2D" type="DirectionalLight2D" parent="."] +energy = 0.24 +blend_mode = 1 + [node name="Level" type="Node2D" parent="."] [node name="Floor" type="StaticBody2D" parent="Level"] @@ -435,35 +440,44 @@ shape = SubResource("WorldBoundaryShape2D_uwrxv") [node name="Crates" type="Node2D" parent="."] [node name="Crate 0" parent="Crates" instance=ExtResource("4_iywne")] -position = Vector2(580, 158) +position = Vector2(747, 344) [node name="Crate 1" parent="Crates" instance=ExtResource("4_iywne")] -position = Vector2(256, 226) +position = Vector2(790, 252) rotation = -0.544367 [node name="Crate 2" parent="Crates" instance=ExtResource("4_iywne")] -position = Vector2(792, 60) +position = Vector2(479, 408) rotation = -0.536401 [node name="Triggers" type="Node2D" parent="."] [node name="Trigger" parent="Triggers" instance=ExtResource("3_lnu2h")] -position = Vector2(254, 406) +position = Vector2(304, 408) [node name="Trigger2" parent="Triggers" instance=ExtResource("3_lnu2h")] -position = Vector2(790, 190) +position = Vector2(648, 412) effect = "destroy" [node name="Trigger3" parent="Triggers" instance=ExtResource("3_lnu2h")] -position = Vector2(582, 414) +position = Vector2(333, 223) effect = "elaborate" -[node name="Area2D" parent="." instance=ExtResource("6_p57ef")] -position = Vector2(887.175, 161.841) +[node name="Coins" type="Node2D" parent="."] -[node name="DirectionalLight2D" type="DirectionalLight2D" parent="."] -energy = 0.24 -blend_mode = 1 +[node name="c0" parent="Coins" instance=ExtResource("11_kvpfn")] +position = Vector2(390, 71) + +[node name="c1" parent="Coins" instance=ExtResource("11_kvpfn")] +position = Vector2(391, 92) + +[node name="Enemies" type="Node2D" parent="."] + +[node name="e1" parent="Enemies" instance=ExtResource("12_dinhu")] +position = Vector2(376, 525) + +[node name="e2" parent="Enemies" instance=ExtResource("12_dinhu")] +position = Vector2(536, 110) [connection signal="triggerFired" from="Triggers/Trigger" to="." method="_on_trigger_trigger_fired"] [connection signal="triggerFired" from="Triggers/Trigger2" to="." method="_on_trigger_trigger_fired"] diff --git a/scenes/level2.tscn b/scenes/level2.tscn new file mode 100644 index 0000000..8887376 --- /dev/null +++ b/scenes/level2.tscn @@ -0,0 +1,477 @@ +[gd_scene load_steps=18 format=4 uid="uid://dbm4jt4pwlufy"] + +[ext_resource type="Script" uid="uid://bijvpac45v6s1" path="res://scripts/scene_manager.gd" id="1_76toy"] +[ext_resource type="Texture2D" uid="uid://7vhrmqf5wt1t" path="res://assets/graphics/backgrounds/sky.png" id="2_8g4ke"] +[ext_resource type="Texture2D" uid="uid://cksofegwut4ew" path="res://assets/graphics/backgrounds/forestbackground_mid.png" id="3_56gwk"] +[ext_resource type="Texture2D" uid="uid://c3uh4ikl0sd3c" path="res://assets/graphics/backgrounds/forestbackground_front.png" id="4_ve5ok"] +[ext_resource type="Texture2D" uid="uid://qp10yhvkchdb" path="res://assets/graphics/terrain/Terrain (32x32).png" id="5_cleqw"] +[ext_resource type="Texture2D" uid="uid://bsw50wv55u4rt" path="res://assets/graphics/terrain/vegetation/mushroom_32x64.png" id="6_wvb8j"] +[ext_resource type="Texture2D" uid="uid://dryfguqeab0p8" path="res://assets/graphics/terrain/vegetation/veg_32x32.png" id="7_g8vcy"] +[ext_resource type="PackedScene" uid="uid://c5a5u2c250g6" path="res://scenes/player.tscn" id="8_cqal4"] +[ext_resource type="PackedScene" uid="uid://ch3ncwkrhv38n" path="res://scenes/crate.tscn" id="9_o3sye"] +[ext_resource type="PackedScene" uid="uid://dgbqoys4mm8j" path="res://scenes/trigger.tscn" id="10_24ks5"] +[ext_resource type="PackedScene" uid="uid://dn4tjgue768y1" path="res://scenes/coin.tscn" id="11_8g4ke"] +[ext_resource type="PackedScene" uid="uid://cy02yf4v8q5v6" path="res://scenes/bullet.tscn" id="11_s4es8"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_gee14"] +texture = ExtResource("5_cleqw") +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 +1:1/0/terrain_set = 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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/terrains_peering_bit/left_side = 0 +16:4/0/terrains_peering_bit/top_side = 0 + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_kvpfn"] +texture = ExtResource("6_wvb8j") +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("7_g8vcy") +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 0" +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="WorldBoundaryShape2D" id="WorldBoundaryShape2D_uwrxv"] + +[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"] +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"] +position = Vector2(160, 410) +texture = ExtResource("3_56gwk") + +[node name="Parallax2D3" type="Parallax2D" parent="."] +scroll_scale = Vector2(0.5, 0.5) +repeat_size = Vector2(320, 0) + +[node name="Sprite2D" type="Sprite2D" parent="Parallax2D3"] +position = Vector2(160, 325) +texture = ExtResource("4_ve5ok") + +[node name="TileMapLayer" type="TileMapLayer" parent="."] +texture_filter = 1 +tile_map_data = PackedByteArray("AAAPAAMAAAAEAAQAAAACAAEAAAAEAAAAAAACAAIAAAAEAAEAAAACAAMAAAAEAAEAAAACAAQAAAAEAAEAAAACAAUAAAAEAAEAAAACAAYAAAAEAAEAAAACAAcAAAAEAAEAAAACAAgAAAAEAAEAAAACAAkAAAAEAAIAAAAeAAYAAAAAAAQAAAAfAAYAAAABAAQAAAAgAAYAAAABAAQAAAAhAAYAAAABAAQAAAAiAAYAAAABAAQAAAAjAAYAAAABAAQAAAAkAAYAAAABAAQAAAAlAAYAAAABAAQAAAAmAAYAAAACAAQAAAAFABAAAAAGAAEAAAAFAA8AAAACAAEAAAAFAA4AAAACAAEAAAAFAA0AAAACAAEAAAAFAAwAAAACAAEAAAAFAAsAAAACAAAAAAAEABAAAAAGAAAAAAAEAA8AAAAGAAAAAAAEAA4AAAAGAAAAAAAEAA0AAAAGAAAAAAAEAAwAAAAGAAAAAAAEAAsAAAABAAAAAAADABAAAAAGAAAAAAADAA8AAAAHAAAAAAADAA4AAAAGAAAAAAADAA0AAAAGAAAAAAADAAwAAAAGAAAAAAADAAsAAAABAAAAAAACABAAAAAGAAAAAAACAA8AAAAGAAAAAAACAA4AAAAGAAAAAAACAA0AAAAGAAAAAAACAAwAAAAGAAAAAAACAAsAAAABAAAAAAABABAAAAAHAAEAAAABAA8AAAAAAAEAAAABAA4AAAAAAAEAAAABAA0AAAAAAAEAAAABAAwAAAAAAAEAAAABAAsAAAAAAAAAAAAjAAsAAAACAAIAAAAjAAoAAAACAAEAAAAjAAkAAAACAAAAAAAiAAsAAAABAAIAAAAiAAoAAAAGAAAAAAAiAAkAAAABAAAAAAAhAAsAAAAAAAIAAAAhAAoAAAAAAAEAAAAhAAkAAAAAAAAAAAAiAAIAAAACAAIAAAAiAAEAAAACAAAAAAAhAAIAAAAAAAIAAAAhAAEAAAAAAAAAAAABAAoAAgAAAAAAAAADAAoAAgAAAAAAAAAFAAoAAgAAAAAAAAACAAAAAgAAAAAAAAAeAAUAAgAAAAAAAAAfAAUAAgAAAAAAAAAgAAUAAgAAAAAAAAAhAAUAAgAAAAAAAAAUAA8AAgAAAAAAAAAVAA8AAgAAAAAAAAAWAA8AAgAAAAAAAAAXAA8AAgAAAAAAAAAYAA8AAgAAAAAAAAAZAA8AAgAAAAAAAAAMAA8AAgAAAAAAAAAOAA8AAQAAAAEAAAAOAA4AAQAAAAAAAAANAA8AAgAAAAAAAAAKAA8AAQAAAAEAAAAKAA4AAQAAAAAAAAAhAAgAAgAAAAAAAAAiAAgAAQAAAAEAAAAiAAcAAQAAAAAAAAAGABAAAAABAAAAAAAHABAAAAABAAAAAAAIABAAAAABAAAAAAAJABAAAAABAAAAAAAKABAAAAABAAAAAAALABAAAAABAAAAAAAMABAAAAABAAAAAAANABAAAAABAAAAAAAOABAAAAABAAAAAAAPABAAAAABAAAAAAAQABAAAAABAAAAAAARABAAAAABAAAAAAASABAAAAABAAAAAAATABAAAAABAAAAAAAUABAAAAABAAAAAAAVABAAAAABAAAAAAAWABAAAAABAAAAAAAXABAAAAABAAAAAAAYABAAAAABAAAAAAAZABAAAAABAAAAAAAaABAAAAABAAAAAAAbABAAAAABAAAAAAAcABAAAAABAAAAAAAdABAAAAABAAAAAAAeABAAAAABAAAAAAAfABAAAAABAAAAAAAgABAAAAABAAAAAAAhABAAAAABAAAAAAAiABAAAAABAAAAAAAjABAAAAABAAAAAAAkABAAAAABAAAAAAAlABAAAAABAAAAAAAmABAAAAABAAAAAAAnABAAAAABAAAAAAAoABAAAAABAAAAAAD//xAAAAAAAAQAAAAAABAAAAAKAAMAAAAqABAAAAABAAQAAAApABAAAAAJAAMAAAArABAAAAACAAQAAAAAABEAAAAAAAIAAAABABEAAAABAAIAAAACABEAAAABAAIAAAADABEAAAABAAIAAAAEABEAAAABAAIAAAAFABEAAAABAAIAAAAGABEAAAABAAIAAAAHABEAAAABAAIAAAAIABEAAAABAAIAAAAJABEAAAABAAIAAAAKABEAAAABAAIAAAALABEAAAABAAIAAAAMABEAAAABAAIAAAANABEAAAABAAIAAAAOABEAAAABAAIAAAAPABEAAAABAAIAAAAQABEAAAABAAIAAAARABEAAAABAAIAAAASABEAAAABAAIAAAATABEAAAABAAIAAAAUABEAAAABAAIAAAAVABEAAAABAAIAAAAWABEAAAABAAIAAAAXABEAAAABAAIAAAAYABEAAAABAAIAAAAZABEAAAABAAIAAAAaABEAAAABAAIAAAAbABEAAAABAAIAAAAcABEAAAABAAIAAAAdABEAAAABAAIAAAAeABEAAAABAAIAAAAfABEAAAABAAIAAAAgABEAAAABAAIAAAAhABEAAAABAAIAAAAiABEAAAABAAIAAAAjABEAAAABAAIAAAAkABEAAAABAAIAAAAlABEAAAABAAIAAAAmABEAAAABAAIAAAAnABEAAAABAAIAAAAoABEAAAABAAIAAAApABEAAAACAAIAAAASAP//AAAAAAQAAAATAP//AAABAAQAAAAUAP//AAAQAAMAAAAUAAAAAAAEAAEAAAAUAAEAAAAQAAQAAAATAAEAAAABAAQAAAASAAEAAAAPAAMAAAASAAIAAAAEAAEAAAASAAMAAAAPAAQAAAATAAMAAAABAAQAAAAUAAMAAAACAAQAAAA=") +tile_set = SubResource("TileSet_0tnpc") + +[node name="CharacterBody2D" parent="." instance=ExtResource("8_cqal4")] +position = Vector2(489, 45) +bump_power = 50.0 + +[node name="Level" type="Node2D" parent="."] + +[node name="Floor" type="StaticBody2D" parent="Level"] +position = Vector2(564, 515) +metadata/_edit_group_ = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Level/Floor"] +shape = SubResource("WorldBoundaryShape2D_uwrxv") + +[node name="Crates" type="Node2D" parent="."] + +[node name="Crate 0" parent="Crates" instance=ExtResource("9_o3sye")] +position = Vector2(580, 158) + +[node name="Crate 1" parent="Crates" instance=ExtResource("9_o3sye")] +position = Vector2(256, 226) +rotation = -0.544367 + +[node name="Crate 2" parent="Crates" instance=ExtResource("9_o3sye")] +position = Vector2(792, 60) +rotation = -0.536401 + +[node name="Triggers" type="Node2D" parent="."] + +[node name="Trigger" parent="Triggers" instance=ExtResource("10_24ks5")] +position = Vector2(254, 406) + +[node name="Trigger2" parent="Triggers" instance=ExtResource("10_24ks5")] +position = Vector2(790, 190) +effect = "destroy" + +[node name="Trigger3" parent="Triggers" instance=ExtResource("10_24ks5")] +position = Vector2(582, 414) +effect = "elaborate" + +[node name="Coins" type="Node2D" parent="."] + +[node name="c0" parent="Coins" instance=ExtResource("11_8g4ke")] +position = Vector2(390, 71) + +[node name="c1" parent="Coins" instance=ExtResource("11_8g4ke")] +position = Vector2(391, 92) + +[node name="Area2D" parent="." instance=ExtResource("11_s4es8")] +position = Vector2(887.175, 161.841) + +[node name="DirectionalLight2D" type="DirectionalLight2D" parent="."] +energy = 0.24 +blend_mode = 1 + +[connection signal="triggerFired" from="Triggers/Trigger" to="." method="_on_trigger_trigger_fired"] +[connection signal="triggerFired" from="Triggers/Trigger2" to="." method="_on_trigger_trigger_fired"] +[connection signal="triggerFired" from="Triggers/Trigger3" to="." method="_on_trigger_trigger_fired"] diff --git a/scenes/level3.tscn b/scenes/level3.tscn new file mode 100644 index 0000000..4f298d1 --- /dev/null +++ b/scenes/level3.tscn @@ -0,0 +1,489 @@ +[gd_scene load_steps=18 format=4 uid="uid://ddikbueco8a32"] + +[ext_resource type="Script" uid="uid://bijvpac45v6s1" path="res://scripts/scene_manager.gd" id="1_fh4ka"] +[ext_resource type="Texture2D" uid="uid://7vhrmqf5wt1t" path="res://assets/graphics/backgrounds/sky.png" id="2_qewby"] +[ext_resource type="Texture2D" uid="uid://cksofegwut4ew" path="res://assets/graphics/backgrounds/forestbackground_mid.png" id="3_bradm"] +[ext_resource type="Texture2D" uid="uid://c3uh4ikl0sd3c" path="res://assets/graphics/backgrounds/forestbackground_front.png" id="4_got4s"] +[ext_resource type="Texture2D" uid="uid://qp10yhvkchdb" path="res://assets/graphics/terrain/Terrain (32x32).png" id="5_e40mx"] +[ext_resource type="Texture2D" uid="uid://bsw50wv55u4rt" path="res://assets/graphics/terrain/vegetation/mushroom_32x64.png" id="6_a114e"] +[ext_resource type="Texture2D" uid="uid://dryfguqeab0p8" path="res://assets/graphics/terrain/vegetation/veg_32x32.png" id="7_y1e0c"] +[ext_resource type="PackedScene" uid="uid://c5a5u2c250g6" path="res://scenes/player.tscn" id="8_s4dsi"] +[ext_resource type="PackedScene" uid="uid://ch3ncwkrhv38n" path="res://scenes/crate.tscn" id="9_07lh1"] +[ext_resource type="PackedScene" uid="uid://dgbqoys4mm8j" path="res://scenes/trigger.tscn" id="10_6uuvf"] +[ext_resource type="PackedScene" uid="uid://dn4tjgue768y1" path="res://scenes/coin.tscn" id="11_qewby"] +[ext_resource type="PackedScene" uid="uid://cy02yf4v8q5v6" path="res://scenes/bullet.tscn" id="11_x008a"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_gee14"] +texture = ExtResource("5_e40mx") +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 +1:1/0/terrain_set = 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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/terrains_peering_bit/left_side = 0 +16:4/0/terrains_peering_bit/top_side = 0 + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_kvpfn"] +texture = ExtResource("6_a114e") +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("7_y1e0c") +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 0" +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="WorldBoundaryShape2D" id="WorldBoundaryShape2D_uwrxv"] + +[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"] +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"] +position = Vector2(160, 410) +texture = ExtResource("3_bradm") + +[node name="Parallax2D3" type="Parallax2D" parent="."] +scroll_scale = Vector2(0.5, 0.5) +repeat_size = Vector2(320, 0) + +[node name="Sprite2D" type="Sprite2D" parent="Parallax2D3"] +position = Vector2(160, 325) +texture = ExtResource("4_got4s") + +[node name="TileMapLayer" type="TileMapLayer" parent="."] +texture_filter = 1 +tile_map_data = PackedByteArray("AAAPAAMAAAAEAAQAAAACAAEAAAAEAAAAAAACAAIAAAAEAAEAAAACAAMAAAAEAAEAAAACAAQAAAAEAAEAAAACAAUAAAAEAAEAAAACAAYAAAAEAAEAAAACAAcAAAAEAAEAAAACAAgAAAAEAAEAAAACAAkAAAAEAAIAAAAeAAYAAAAAAAQAAAAfAAYAAAABAAQAAAAgAAYAAAABAAQAAAAhAAYAAAABAAQAAAAiAAYAAAABAAQAAAAjAAYAAAABAAQAAAAkAAYAAAABAAQAAAAlAAYAAAABAAQAAAAmAAYAAAACAAQAAAAFABAAAAAGAAEAAAAFAA8AAAACAAEAAAAFAA4AAAACAAEAAAAFAA0AAAACAAEAAAAFAAwAAAACAAEAAAAFAAsAAAACAAAAAAAEABAAAAAGAAAAAAAEAA8AAAAGAAAAAAAEAA4AAAAGAAAAAAAEAA0AAAAGAAAAAAAEAAwAAAAGAAAAAAAEAAsAAAABAAAAAAADABAAAAAGAAAAAAADAA8AAAAHAAAAAAADAA4AAAAGAAAAAAADAA0AAAAGAAAAAAADAAwAAAAGAAAAAAADAAsAAAABAAAAAAACABAAAAAGAAAAAAACAA8AAAAGAAAAAAACAA4AAAAGAAAAAAACAA0AAAAGAAAAAAACAAwAAAAGAAAAAAACAAsAAAABAAAAAAABABAAAAAHAAEAAAABAA8AAAAAAAEAAAABAA4AAAAAAAEAAAABAA0AAAAAAAEAAAABAAwAAAAAAAEAAAABAAsAAAAAAAAAAAAjAAsAAAACAAIAAAAjAAoAAAACAAEAAAAjAAkAAAACAAAAAAAiAAsAAAABAAIAAAAiAAoAAAAGAAAAAAAiAAkAAAABAAAAAAAhAAsAAAAAAAIAAAAhAAoAAAAAAAEAAAAhAAkAAAAAAAAAAAAiAAIAAAACAAIAAAAiAAEAAAACAAAAAAAhAAIAAAAAAAIAAAAhAAEAAAAAAAAAAAABAAoAAgAAAAAAAAADAAoAAgAAAAAAAAAFAAoAAgAAAAAAAAACAAAAAgAAAAAAAAAeAAUAAgAAAAAAAAAfAAUAAgAAAAAAAAAgAAUAAgAAAAAAAAAhAAUAAgAAAAAAAAAUAA8AAgAAAAAAAAAVAA8AAgAAAAAAAAAWAA8AAgAAAAAAAAAXAA8AAgAAAAAAAAAYAA8AAgAAAAAAAAAZAA8AAgAAAAAAAAAMAA8AAgAAAAAAAAAOAA8AAQAAAAEAAAAOAA4AAQAAAAAAAAANAA8AAgAAAAAAAAAKAA8AAQAAAAEAAAAKAA4AAQAAAAAAAAAhAAgAAgAAAAAAAAAiAAgAAQAAAAEAAAAiAAcAAQAAAAAAAAAGABAAAAABAAAAAAAHABAAAAABAAAAAAAIABAAAAABAAAAAAAJABAAAAABAAAAAAAKABAAAAABAAAAAAALABAAAAABAAAAAAAMABAAAAABAAAAAAANABAAAAABAAAAAAAOABAAAAABAAAAAAAPABAAAAABAAAAAAAQABAAAAABAAAAAAARABAAAAABAAAAAAASABAAAAABAAAAAAATABAAAAABAAAAAAAUABAAAAABAAAAAAAVABAAAAABAAAAAAAWABAAAAABAAAAAAAXABAAAAABAAAAAAAYABAAAAABAAAAAAAZABAAAAABAAAAAAAaABAAAAABAAAAAAAbABAAAAABAAAAAAAcABAAAAABAAAAAAAdABAAAAABAAAAAAAeABAAAAABAAAAAAAfABAAAAABAAAAAAAgABAAAAABAAAAAAAhABAAAAABAAAAAAAiABAAAAABAAAAAAAjABAAAAABAAAAAAAkABAAAAABAAAAAAAlABAAAAABAAAAAAAmABAAAAABAAAAAAAnABAAAAABAAAAAAAoABAAAAABAAAAAAD//xAAAAAAAAQAAAAAABAAAAAKAAMAAAAqABAAAAABAAQAAAApABAAAAAJAAMAAAArABAAAAACAAQAAAAAABEAAAAAAAIAAAABABEAAAABAAIAAAACABEAAAABAAIAAAADABEAAAABAAIAAAAEABEAAAABAAIAAAAFABEAAAABAAIAAAAGABEAAAABAAIAAAAHABEAAAABAAIAAAAIABEAAAABAAIAAAAJABEAAAABAAIAAAAKABEAAAABAAIAAAALABEAAAABAAIAAAAMABEAAAABAAIAAAANABEAAAABAAIAAAAOABEAAAABAAIAAAAPABEAAAABAAIAAAAQABEAAAABAAIAAAARABEAAAABAAIAAAASABEAAAABAAIAAAATABEAAAABAAIAAAAUABEAAAABAAIAAAAVABEAAAABAAIAAAAWABEAAAABAAIAAAAXABEAAAABAAIAAAAYABEAAAABAAIAAAAZABEAAAABAAIAAAAaABEAAAABAAIAAAAbABEAAAABAAIAAAAcABEAAAABAAIAAAAdABEAAAABAAIAAAAeABEAAAABAAIAAAAfABEAAAABAAIAAAAgABEAAAABAAIAAAAhABEAAAABAAIAAAAiABEAAAABAAIAAAAjABEAAAABAAIAAAAkABEAAAABAAIAAAAlABEAAAABAAIAAAAmABEAAAABAAIAAAAnABEAAAABAAIAAAAoABEAAAABAAIAAAApABEAAAACAAIAAAASAP7/AAAAAAQAAAATAP7/AAABAAQAAAAUAP7/AAAQAAMAAAAUAP//AAAEAAEAAAAUAAAAAAANAAQAAAATAAAAAAABAAQAAAASAAAAAAAAAAQAAAAUAAEAAAAEAAEAAAAUAAIAAAAEAAEAAAAUAAMAAAAQAAQAAAATAAMAAAABAAQAAAASAAMAAAAAAAQAAAA=") +tile_set = SubResource("TileSet_0tnpc") + +[node name="CharacterBody2D" parent="." instance=ExtResource("8_s4dsi")] +position = Vector2(489, 45) +bump_power = 50.0 + +[node name="Level" type="Node2D" parent="."] + +[node name="Floor" type="StaticBody2D" parent="Level"] +position = Vector2(564, 515) +metadata/_edit_group_ = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Level/Floor"] +shape = SubResource("WorldBoundaryShape2D_uwrxv") + +[node name="Crates" type="Node2D" parent="."] + +[node name="Crate 0" parent="Crates" instance=ExtResource("9_07lh1")] +position = Vector2(580, 158) + +[node name="Crate 1" parent="Crates" instance=ExtResource("9_07lh1")] +position = Vector2(256, 226) +rotation = -0.544367 + +[node name="Crate 2" parent="Crates" instance=ExtResource("9_07lh1")] +position = Vector2(792, 60) +rotation = -0.536401 + +[node name="Triggers" type="Node2D" parent="."] + +[node name="Trigger" parent="Triggers" instance=ExtResource("10_6uuvf")] +position = Vector2(254, 406) + +[node name="Trigger2" parent="Triggers" instance=ExtResource("10_6uuvf")] +position = Vector2(790, 190) +effect = "destroy" + +[node name="Trigger3" parent="Triggers" instance=ExtResource("10_6uuvf")] +position = Vector2(582, 414) +effect = "elaborate" + +[node name="Coins" type="Node2D" parent="."] + +[node name="c0" parent="Coins" instance=ExtResource("11_qewby")] +position = Vector2(382, 58) + +[node name="c1" parent="Coins" instance=ExtResource("11_qewby")] +position = Vector2(409, 101) + +[node name="c2" parent="Coins" instance=ExtResource("11_qewby")] +position = Vector2(359, 100) + +[node name="c3" parent="Coins" instance=ExtResource("11_qewby")] +position = Vector2(383, 111) + +[node name="c4" parent="Coins" instance=ExtResource("11_qewby")] +position = Vector2(358, 72) + +[node name="c5" parent="Coins" instance=ExtResource("11_qewby")] +position = Vector2(406, 72) + +[node name="Area2D" parent="." instance=ExtResource("11_x008a")] +position = Vector2(887.175, 161.841) + +[node name="DirectionalLight2D" type="DirectionalLight2D" parent="."] +energy = 0.24 +blend_mode = 1 + +[connection signal="triggerFired" from="Triggers/Trigger" to="." method="_on_trigger_trigger_fired"] +[connection signal="triggerFired" from="Triggers/Trigger2" to="." method="_on_trigger_trigger_fired"] +[connection signal="triggerFired" from="Triggers/Trigger3" to="." method="_on_trigger_trigger_fired"] diff --git a/scenes/slime.tscn b/scenes/slime.tscn new file mode 100644 index 0000000..348c64f --- /dev/null +++ b/scenes/slime.tscn @@ -0,0 +1,75 @@ +[gd_scene load_steps=9 format=3 uid="uid://b2lq6rp0aht6d"] + +[ext_resource type="Texture2D" uid="uid://cn1jvyyvb3g3c" path="res://assets/graphics/enemies/slime_green.png" id="1_371uh"] +[ext_resource type="Script" uid="uid://bsmcx4pr1imsq" path="res://scripts/slime.gd" id="1_p2gj0"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_p2gj0"] +atlas = ExtResource("1_371uh") +region = Rect2(0, 24, 24, 24) + +[sub_resource type="AtlasTexture" id="AtlasTexture_n6pvg"] +atlas = ExtResource("1_371uh") +region = Rect2(24, 24, 24, 24) + +[sub_resource type="AtlasTexture" id="AtlasTexture_pjw23"] +atlas = ExtResource("1_371uh") +region = Rect2(48, 24, 24, 24) + +[sub_resource type="AtlasTexture" id="AtlasTexture_2npkn"] +atlas = ExtResource("1_371uh") +region = Rect2(72, 24, 24, 24) + +[sub_resource type="SpriteFrames" id="SpriteFrames_fd6lc"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_p2gj0") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_n6pvg") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_pjw23") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_2npkn") +}], +"loop": true, +"name": &"run", +"speed": 12.0 +}] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_371uh"] +size = Vector2(16, 16) + +[node name="Area2D" type="Area2D"] +script = ExtResource("1_p2gj0") + +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] +texture_filter = 1 +sprite_frames = SubResource("SpriteFrames_fd6lc") +animation = &"run" +autoplay = "run" +frame_progress = 0.256611 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2(0, 4) +shape = SubResource("RectangleShape2D_371uh") + +[node name="RightSideCast" type="RayCast2D" parent="."] +position = Vector2(0, -1) +target_position = Vector2(14, 0) + +[node name="LeftSideCast" type="RayCast2D" parent="."] +position = Vector2(0, -1) +target_position = Vector2(-14, 0) + +[node name="RightDownCast" type="RayCast2D" parent="."] +position = Vector2(6, -3) +target_position = Vector2(0, 19) + +[node name="LeftDownCast" type="RayCast2D" parent="."] +position = Vector2(-6, -3) +target_position = Vector2(0, 19) + +[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..58bc5f4 --- /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..b14fd7d --- /dev/null +++ b/scripts/coin.gd.uid @@ -0,0 +1 @@ +uid://cwfj4njnlumvy diff --git a/scripts/gamecontroller.gd b/scripts/gamecontroller.gd new file mode 100644 index 0000000..8772f68 --- /dev/null +++ b/scripts/gamecontroller.gd @@ -0,0 +1,81 @@ +class_name GameController extends Node2D + +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 = [30, 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) + timer.wait_time = 1 + timer.one_shot = false + timer.connect("timeout", secondCounter) + timer.start() + +func secondCounter(): + print("tick "+str(timeLimit)) + timeLimit -= 1 + if timeLimit <= 0: + print("YOU LOSE...") + levelCompleteSignal.emit(levels[currentLevel]) + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + 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("GameController know about trigger " + effect) + if effect == "destroy": + 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:int)->void: + totalCrates = value + +func bulletDamage(body, bullet): + if body is Crate: + print("Crates remaining: " + str(totalCrates)) + destroySignal.emit(body) + +func reset(): + timeLimit = timers[currentLevel] + playerHealth = 100 + +func death(): + print("player death animation complete") + diff --git a/scripts/gamecontroller.gd.uid b/scripts/gamecontroller.gd.uid new file mode 100644 index 0000000..7d45009 --- /dev/null +++ b/scripts/gamecontroller.gd.uid @@ -0,0 +1 @@ +uid://dtod1rsvbxyti diff --git a/scripts/player.gd b/scripts/player.gd index 318f6c9..544f2bf 100644 --- a/scripts/player.gd +++ b/scripts/player.gd @@ -30,6 +30,14 @@ var pushTarget: RigidBody2D var pushEnable: 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: # Add the gravity. if current_state == State.JUMP: @@ -137,21 +145,21 @@ func handle_collisions() -> void: for i in get_slide_collision_count(): var c = get_slide_collision(i) if c.get_collider() is RigidBody2D: - c.get_collider().apply_central_impulse(-c.get_normal() * bump_power) + c.get_collider().apply_central_impulse(-c.get_normal() * bump_power) if right_cast.is_colliding() and facing == FaceDirection.RIGHT: - print("Right raycast hitting something") + #print("Right raycast hitting something") var collider = right_cast.get_collider() if collider is Node and collider is RigidBody2D: - print("I think it's a crate") + #print("I think it's a crate") pushTarget = collider pushEnable = true if left_cast.is_colliding() and facing == FaceDirection.LEFT: - print("Left raycast hitting something") + #print("Left raycast hitting something") var collider = left_cast.get_collider() if collider is Node and collider is RigidBody2D: - print("I think it's a crate") + #print("I think it's a crate") pushTarget = collider pushEnable = true diff --git a/scripts/scene_manager.gd b/scripts/scene_manager.gd index be0c193..d9db10f 100644 --- a/scripts/scene_manager.gd +++ b/scripts/scene_manager.gd @@ -1,7 +1,10 @@ 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 = [] @@ -18,21 +21,48 @@ func _process(delta: float) -> void: func buildLevel() -> void: + # Reset controller timer + Gamecontroller.reset() + # tell the game controller + Gamecontroller.numberOfCrates(countCrates()) + # 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) + + # Connect trigger signals + if triggers: + for obj in triggers.get_children(): + if obj is Trigger: + obj.triggerFired.connect(Gamecontroller._on_trigger_fired) + # Connect coin signals + if coins: + for obj in coins.get_children(): + if obj is Coin: + obj.coinCollectedSignal.connect(Gamecontroller._on_coin_collected) + # Connect enemy signals + if enemies: + for obj in enemies.get_children(): + if obj is Slime: + obj.playerDamageSignal.connect(Gamecontroller._on_player_damage) + +func countCrates()->int: # count crates 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 bulletFactory(): var mybullet 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 @@ -46,3 +76,11 @@ 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..3b72d35 --- /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 left_side_cast: RayCast2D = $LeftSideCast +@onready var right_down_cast: RayCast2D = $RightDownCast +@onready var left_down_cast: RayCast2D = $LeftDownCast +@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..bc8cc83 --- /dev/null +++ b/scripts/slime.gd.uid @@ -0,0 +1 @@ +uid://bsmcx4pr1imsq diff --git a/scripts/trigger.gd b/scripts/trigger.gd index 036e383..6299573 100644 --- a/scripts/trigger.gd +++ b/scripts/trigger.gd @@ -1,4 +1,4 @@ -extends Area2D +class_name Trigger extends Area2D @export var effect = "destroy"