diff --git a/assets/graphics/player/death/Player Death 64x64.png b/assets/graphics/player/death/Player Death 64x64.png new file mode 100644 index 0000000..2e6a1ae Binary files /dev/null and b/assets/graphics/player/death/Player Death 64x64.png differ diff --git a/assets/graphics/player/death/Player Death 64x64.png.import b/assets/graphics/player/death/Player Death 64x64.png.import new file mode 100644 index 0000000..b118302 --- /dev/null +++ b/assets/graphics/player/death/Player Death 64x64.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dht4cd2u7dkrb" +path="res://.godot/imported/Player Death 64x64.png-0c6ff54e7d9aad74b66dce47376541f8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/graphics/player/death/Player Death 64x64.png" +dest_files=["res://.godot/imported/Player Death 64x64.png-0c6ff54e7d9aad74b66dce47376541f8.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/player/hurt/Player Hurt 48x48.png b/assets/graphics/player/hurt/Player Hurt 48x48.png new file mode 100644 index 0000000..57d8783 Binary files /dev/null and b/assets/graphics/player/hurt/Player Hurt 48x48.png differ diff --git a/assets/graphics/player/hurt/Player Hurt 48x48.png.import b/assets/graphics/player/hurt/Player Hurt 48x48.png.import new file mode 100644 index 0000000..2f20f91 --- /dev/null +++ b/assets/graphics/player/hurt/Player Hurt 48x48.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://37of41hhcw7h" +path="res://.godot/imported/Player Hurt 48x48.png-a720e51cb19103e76b22ab6c1b81302d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/graphics/player/hurt/Player Hurt 48x48.png" +dest_files=["res://.godot/imported/Player Hurt 48x48.png-a720e51cb19103e76b22ab6c1b81302d.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 157913e..d9c9b79 100644 --- a/project.godot +++ b/project.godot @@ -15,6 +15,10 @@ run/main_scene="uid://cxa67u8cwsn6x" config/features=PackedStringArray("4.7", "Forward Plus") config/icon="res://icon.svg" +[autoload] + +Gamecontroller="*uid://ct51411gsine2" + [display] window/size/viewport_width=400 diff --git a/scenes/bullet.tscn b/scenes/bullet.tscn index 15d087f..cc0ba2c 100644 --- a/scenes/bullet.tscn +++ b/scenes/bullet.tscn @@ -21,4 +21,5 @@ rotation = 3.1415927 scale = Vector2(0.11, 0.11) texture = ExtResource("2_y25gk") +[connection signal="area_entered" from="." to="." method="_on_area_entered"] [connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/scenes/game.tscn b/scenes/game.tscn index f719ddb..bf34736 100644 --- a/scenes/game.tscn +++ b/scenes/game.tscn @@ -1,6 +1,5 @@ [gd_scene format=4 uid="uid://cxa67u8cwsn6x"] -[ext_resource type="Script" uid="uid://ct51411gsine2" path="res://scripts/gamecontroller.gd" id="1_lnu2h"] [ext_resource type="Script" uid="uid://dv2q4p6jb8h4s" path="res://scripts/scene_manager.gd" id="2_lbhrr"] [ext_resource type="PackedScene" uid="uid://b22qsgmtr231s" path="res://scenes/trigger.tscn" id="2_lnu2h"] [ext_resource type="Texture2D" uid="uid://cjkp5fjucdfoi" path="res://assets/graphics/environment/sky.png" id="3_0tnpc"] @@ -405,7 +404,6 @@ size = Vector2(66, 20) [sub_resource type="WorldBoundaryShape2D" id="WorldBoundaryShape2D_mvphy"] [node name="Game" type="Node2D" unique_id=989312165] -script = ExtResource("1_lnu2h") [node name="Parallax2D" type="Parallax2D" parent="." unique_id=1222718260] repeat_size = Vector2(400, 225) @@ -504,4 +502,7 @@ position = Vector2(518, 435) [node name="Slime" parent="Enemies" unique_id=1316034960 instance=ExtResource("14_trtic")] position = Vector2(719, 409) +[node name="Slime2" parent="Enemies" unique_id=495693402 instance=ExtResource("14_trtic")] +position = Vector2(750, 409) + [connection signal="areaTriggered" from="Triggers/Trigger" to="." method="_on_trigger"] diff --git a/scenes/level2.tscn b/scenes/level2.tscn new file mode 100644 index 0000000..ca81d41 --- /dev/null +++ b/scenes/level2.tscn @@ -0,0 +1,508 @@ +[gd_scene format=4 uid="uid://doiepicbi0ruw"] + +[ext_resource type="Texture2D" uid="uid://cjkp5fjucdfoi" path="res://assets/graphics/environment/sky.png" id="1_56gwk"] +[ext_resource type="Texture2D" uid="uid://2kn5xekesvey" path="res://assets/graphics/environment/farbackground.png" id="2_ve5ok"] +[ext_resource type="Texture2D" uid="uid://dd47jvi0xusna" path="res://assets/graphics/environment/midground.png" id="3_cleqw"] +[ext_resource type="Script" uid="uid://dv2q4p6jb8h4s" path="res://scripts/scene_manager.gd" id="4_wvb8j"] +[ext_resource type="Texture2D" uid="uid://kyooaow1jeaa" path="res://assets/graphics/terrains/Terrain (32x32).png" id="5_g8vcy"] +[ext_resource type="Texture2D" uid="uid://c8jhlduxe8p77" path="res://assets/graphics/terrains/veg_32x32.png" id="6_cqal4"] +[ext_resource type="Texture2D" uid="uid://bu8oc3yypgigw" path="res://assets/graphics/terrains/mushroom_32x64.png" id="7_o3sye"] +[ext_resource type="PackedScene" uid="uid://dtegcgc8xcxfg" path="res://scenes/player.tscn" id="8_24ks5"] +[ext_resource type="PackedScene" uid="uid://b22qsgmtr231s" path="res://scenes/trigger.tscn" id="9_s4es8"] +[ext_resource type="Texture2D" uid="uid://dsywyyr0yb4cg" path="res://assets/graphics/environment/foreground.png" id="10_63e4f"] +[ext_resource type="PackedScene" uid="uid://5xgx7qarkj3o" path="res://scenes/crate.tscn" id="11_y6lc1"] +[ext_resource type="PackedScene" uid="uid://b4811uinm8qcu" path="res://scenes/coin.tscn" id="12_ekhvm"] +[ext_resource type="PackedScene" uid="uid://6d5378om23b8" path="res://scenes/slime.tscn" id="13_nflru"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_u5sy4"] +texture = ExtResource("5_g8vcy") +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(0.9330139, -16, -16, -16, -16, 16, 1.8660278, 16) +0:1/0/terrains_peering_bit/right_side = 0 +0:1/0/terrains_peering_bit/bottom_right_corner = 0 +0:1/0/terrains_peering_bit/bottom_side = 0 +0:1/0/terrains_peering_bit/top_side = 0 +0:1/0/terrains_peering_bit/top_right_corner = 0 +1:1/0 = 0 +2:1/0 = 0 +2:1/0/terrain_set = 0 +2:1/0/terrain = 0 +2:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -1.2440224, -16, -0.31100464, 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, -8.086128, 16, -16, 6.842106) +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.31100464, -16, -0.9330139, -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, 2.488037, -16, 2.1770325, 16, -16, 16) +6:3/0/terrains_peering_bit/right_side = 0 +6:3/0/terrains_peering_bit/bottom_side = 0 +6:3/0/terrains_peering_bit/top_side = 0 +6:3/0/terrains_peering_bit/top_right_corner = 0 +7:3/0 = 0 +7:3/0/terrain_set = 0 +7:3/0/terrain = 0 +7:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, 2.488037, -16, 2.1770325, 16, 16, 16) +7:3/0/terrains_peering_bit/bottom_side = 0 +7:3/0/terrains_peering_bit/left_side = 0 +7:3/0/terrains_peering_bit/top_left_corner = 0 +7:3/0/terrains_peering_bit/top_side = 0 +9:3/0 = 0 +9:3/0/terrain_set = 0 +9:3/0/terrain = 0 +9:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 0, 16, -0.6220093) +9:3/0/terrains_peering_bit/right_side = 0 +9:3/0/terrains_peering_bit/bottom_side = 0 +9:3/0/terrains_peering_bit/bottom_left_corner = 0 +9:3/0/terrains_peering_bit/left_side = 0 +10:3/0 = 0 +10:3/0/terrain_set = 0 +10:3/0/terrain = 0 +10:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 0, 16, -0.6220093) +10:3/0/terrains_peering_bit/right_side = 0 +10:3/0/terrains_peering_bit/bottom_right_corner = 0 +10:3/0/terrains_peering_bit/bottom_side = 0 +10:3/0/terrains_peering_bit/left_side = 0 +12:3/0 = 0 +12:3/0/terrain_set = 0 +12:3/0/terrain = 0 +12:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 16, 16, 16) +12:3/0/terrains_peering_bit/right_side = 0 +12:3/0/terrains_peering_bit/bottom_side = 0 +12:3/0/terrains_peering_bit/top_side = 0 +13:3/0 = 0 +13:3/0/terrain_set = 0 +13:3/0/terrain = 0 +13:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 16, 16, 16) +13:3/0/terrains_peering_bit/right_side = 0 +13:3/0/terrains_peering_bit/bottom_side = 0 +13:3/0/terrains_peering_bit/left_side = 0 +15:3/0 = 0 +15:3/0/terrain_set = 0 +15:3/0/terrain = 0 +15:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 16, 16, 16) +15:3/0/terrains_peering_bit/right_side = 0 +15:3/0/terrains_peering_bit/bottom_side = 0 +16:3/0 = 0 +16:3/0/terrain_set = 0 +16:3/0/terrain = 0 +16:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 16, 16, 16) +16:3/0/terrains_peering_bit/bottom_side = 0 +16:3/0/terrains_peering_bit/left_side = 0 +0:4/0 = 0 +0:4/0/terrain_set = 0 +0:4/0/terrain = 0 +0:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:4/0/terrains_peering_bit/right_side = 0 +1:4/0 = 0 +1:4/0/terrain_set = 0 +1:4/0/terrain = 0 +1:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +1:4/0/terrains_peering_bit/right_side = 0 +1:4/0/terrains_peering_bit/left_side = 0 +2:4/0 = 0 +2:4/0/terrain_set = 0 +2:4/0/terrain = 0 +2:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +2:4/0/terrains_peering_bit/left_side = 0 +4:4/0 = 0 +4:4/0/terrain_set = 0 +4:4/0/terrain = 0 +4:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +6:4/0 = 0 +6:4/0/terrain_set = 0 +6:4/0/terrain = 0 +6:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 2.488037, -16, 2.1770325, 16, -16, 16) +6:4/0/terrains_peering_bit/right_side = 0 +6:4/0/terrains_peering_bit/bottom_right_corner = 0 +6:4/0/terrains_peering_bit/bottom_side = 0 +6:4/0/terrains_peering_bit/top_side = 0 +7:4/0 = 0 +7:4/0/terrain_set = 0 +7:4/0/terrain = 0 +7:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, 2.488037, -16, 2.1770325, 16, 16, 16) +7:4/0/terrains_peering_bit/bottom_side = 0 +7:4/0/terrains_peering_bit/bottom_left_corner = 0 +7:4/0/terrains_peering_bit/left_side = 0 +7:4/0/terrains_peering_bit/top_side = 0 +9:4/0 = 0 +9:4/0/terrain_set = 0 +9:4/0/terrain = 0 +9:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, 0.9330139, -16, 0.9330139, -16, 16, 16, 16) +9:4/0/terrains_peering_bit/right_side = 0 +9:4/0/terrains_peering_bit/left_side = 0 +9:4/0/terrains_peering_bit/top_left_corner = 0 +9:4/0/terrains_peering_bit/top_side = 0 +10:4/0 = 0 +10:4/0/terrain_set = 0 +10:4/0/terrain = 0 +10:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, 0.9330139, -16, 0.9330139, -16, 16, 16, 16) +10:4/0/terrains_peering_bit/right_side = 0 +10:4/0/terrains_peering_bit/left_side = 0 +10:4/0/terrains_peering_bit/top_side = 0 +10:4/0/terrains_peering_bit/top_right_corner = 0 +12:4/0 = 0 +12:4/0/terrain_set = 0 +12:4/0/terrain = 0 +12:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 16, 16, 16) +12:4/0/terrains_peering_bit/right_side = 0 +12:4/0/terrains_peering_bit/left_side = 0 +12:4/0/terrains_peering_bit/top_side = 0 +13:4/0 = 0 +13:4/0/terrain_set = 0 +13:4/0/terrain = 0 +13:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 16, 16, 16) +13:4/0/terrains_peering_bit/bottom_side = 0 +13:4/0/terrains_peering_bit/left_side = 0 +13:4/0/terrains_peering_bit/top_side = 0 +15:4/0 = 0 +15:4/0/terrain_set = 0 +15:4/0/terrain = 0 +15:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 16, 16, 16) +15:4/0/terrains_peering_bit/right_side = 0 +15:4/0/terrains_peering_bit/top_side = 0 +16:4/0 = 0 +16:4/0/terrain_set = 0 +16:4/0/terrain = 0 +16:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 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_vtaks"] +texture = ExtResource("6_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="TileSetAtlasSource" id="TileSetAtlasSource_kvpfn"] +texture = ExtResource("7_o3sye") +texture_region_size = Vector2i(32, 32) +0:0/0 = 0 +0:0/0/terrain_set = 0 +0:0/0/terrains_peering_bit/bottom_side = 1 +0:1/0 = 0 +0:1/0/terrain_set = 0 +0:1/0/terrain = 1 +0:1/0/terrains_peering_bit/top_side = 1 + +[sub_resource type="TileSet" id="TileSet_mvphy"] +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/0 = SubResource("TileSetAtlasSource_u5sy4") +sources/1 = SubResource("TileSetAtlasSource_vtaks") +sources/2 = SubResource("TileSetAtlasSource_kvpfn") + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_mvphy"] +size = Vector2(66, 20) + +[sub_resource type="WorldBoundaryShape2D" id="WorldBoundaryShape2D_mvphy"] + +[node name="Game" type="Node2D" unique_id=989312165] + +[node name="Parallax2D" type="Parallax2D" parent="." unique_id=1222718260] +repeat_size = Vector2(400, 225) + +[node name="Sprite2D" type="Sprite2D" parent="Parallax2D" unique_id=136019890] +texture = ExtResource("1_56gwk") +offset = Vector2(200, 112) + +[node name="farbg" type="Parallax2D" parent="." unique_id=415159613] +repeat_size = Vector2(400, 0) + +[node name="Sprite2D" type="Sprite2D" parent="farbg" unique_id=2117193867] +texture_filter = 1 +texture = ExtResource("2_ve5ok") +offset = Vector2(200, 350) + +[node name="midground" type="Parallax2D" parent="." unique_id=2019512975] +scroll_scale = Vector2(1.2, 1) +repeat_size = Vector2(400, 0) + +[node name="Sprite2D" type="Sprite2D" parent="midground" unique_id=2080878610] +texture_filter = 1 +texture = ExtResource("3_cleqw") +offset = Vector2(200, 350) + +[node name="SceneManager" type="Node2D" parent="." unique_id=1778809182] +script = ExtResource("4_wvb8j") + +[node name="TileMapLayer" type="TileMapLayer" parent="." unique_id=374407051] +texture_filter = 1 +tile_map_data = PackedByteArray("AAASAA0AAAAEAAAAAAAVAA0AAAAAAAAAAAAWAA0AAAABAAAAAAAXAA0AAAABAAAAAAAYAA0AAAAHAAQAAAAYAAwAAAAGAAMAAAAYAAsAAAAAAAAAAAAZAAsAAAABAAAAAAAZAAwAAAABAAIAAAAaAAwAAAACAAIAAAAaAAsAAAACAAAAAAAWAAkAAAACAAQAAAAVAAkAAAAAAAQAAAANABIAAAABAAAAAAAOABIAAAABAAAAAAAPABIAAAABAAAAAAAQABIAAAABAAAAAAARABIAAAABAAAAAAASABIAAAABAAAAAAATABIAAAABAAAAAAAUABIAAAABAAAAAAAVABIAAAABAAAAAAAWABIAAAABAAAAAAAXABIAAAABAAAAAAAYABIAAAABAAAAAAAZABIAAAABAAAAAAAaABIAAAABAAAAAAAbABIAAAAHAAEAAAAbABEAAAAAAAAAAAAcABEAAAAHAAEAAAANABMAAAAHAAAAAAAOABMAAAAGAAEAAAAPABMAAAAHAAEAAAAQABMAAAAHAAAAAAAQABQAAAAKAAQAAAAPABQAAAAJAAQAAAAOABQAAAABAAIAAAANABQAAAAAAAIAAAARABMAAAAGAAAAAAASABMAAAAGAAAAAAATABMAAAAHAAAAAAASABQAAAAJAAQAAAARABQAAAAJAAQAAAAYABMAAAAGAAAAAAAZABMAAAAGAAAAAAAaABMAAAAGAAAAAAAaABQAAAABAAIAAAAbABMAAAAGAAAAAAAcABMAAAACAAIAAAAbABQAAAACAAIAAAAYABQAAAABAAIAAAAXABMAAAAHAAAAAAAWABMAAAAGAAAAAAAVABMAAAAGAAAAAAAVABQAAAABAAIAAAAUABMAAAAGAAAAAAAUABQAAAAJAAQAAAATABQAAAAKAAQAAAAWABQAAAABAAIAAAAXABQAAAABAAIAAAAZABQAAAABAAIAAAALABMAAAABAAIAAAAMABMAAAABAAIAAAAMABIAAAABAAAAAAALABIAAAABAAAAAAAKABIAAAABAAAAAAAKABMAAAABAAIAAAAJABMAAAAAAAIAAAAJABIAAAAQAAEAAAAIABIAAAAAAAIAAAAIABEAAAAAAAEAAAAJABEAAAACAAEAAAAIABAAAAAAAAEAAAAIAA8AAAAHAAAAAAAJAA8AAAACAAEAAAAJABAAAAACAAEAAAAIAA4AAAABAAAAAAAHAA8AAAAAAAIAAAAHAA4AAAAGAAQAAAAHAA0AAAAQAAMAAAAGAA0AAAAPAAQAAAAGAAwAAAAEAAEAAAAGAAsAAAAMAAMAAAAHAAsAAAABAAQAAAAIAAsAAAABAAQAAAAJAAsAAAAKAAQAAAAKAAsAAAACAAIAAAAKAAoAAAACAAAAAAAJAAoAAAAAAAAAAAANABAAAAACAAQAAAAMABAAAAABAAQAAAALABAAAAAAAAQAAAAVAAwAAQAAAAAAAAAYAAoAAQAAAAAAAAAZAAoAAQAAAAAAAAAIAA0AAQAAAAAAAAAJAAkAAQAAAAAAAAAWAAwAAgAAAAEAAAAWAAsAAgAAAAAAAAAbABAAAgAAAAEAAAAbAA8AAgAAAAAAAAAaABEAAQAAAAAAAAAYAA4AAAACAAIAAAAXAA4AAAABAAIAAAAWAA4AAAABAAIAAAAVAA4AAAAKAAQAAAAUAA4AAAABAAQAAAATAA4AAAABAAQAAAASAA4AAAAMAAQAAAARAA4AAAABAAQAAAAQAA4AAAABAAQAAAAPAA4AAAABAAQAAAAOAA4AAAABAAQAAAANAA4AAAABAAQAAAAMAA4AAAABAAQAAAALAA4AAAABAAQAAAAKAA4AAAABAAQAAAAJAA4AAAAJAAMAAAAcABIAAAAGAAAAAAAcABAAAAAAAAEAAAAcAA8AAAAAAAAAAAAdAA8AAAAHAAEAAAAdABAAAAAGAAAAAAAdABEAAAACAAEAAAAdABIAAAACAAIAAAAeAA8AAAAGAAEAAAAfAA8AAAABAAAAAAAgAA8AAAABAAAAAAAhAA8AAAABAAAAAAAiAA8AAAAHAAQAAAAiABAAAAACAAIAAAAhABAAAAABAAIAAAAgABAAAAABAAIAAAAfABAAAAABAAIAAAAeABAAAAABAAIAAAAgAA4AAQAAAAAAAAAhAA4AAgAAAAEAAAAhAA0AAgAAAAAAAAAdAA4AAAAAAAEAAAAdAA0AAAAAAAAAAAAeAA0AAAACAAAAAAAeAA4AAAACAAEAAAAiAA4AAAAEAAEAAAAiAA0AAAAEAAEAAAAiAAwAAAAEAAEAAAAiAAsAAAAEAAEAAAAiAAoAAAAEAAEAAAAiAAkAAAAEAAEAAAAiAAgAAAAEAAEAAAAiAAcAAAAEAAEAAAAiAAYAAAAEAAEAAAAGAAoAAAAEAAEAAAAGAAkAAAAEAAEAAAAGAAgAAAAEAAEAAAAGAAcAAAAEAAEAAAAGAAYAAAAEAAEAAAAGAAUAAAAEAAEAAAAGAAQAAAAEAAEAAAAGAAMAAAAEAAAAAAAiAAUAAAAEAAEAAAAiAAQAAAAEAAEAAAAiAAMAAAAEAAAAAAA=") +tile_set = SubResource("TileSet_mvphy") + +[node name="StaticBody2D" type="StaticBody2D" parent="." unique_id=1148293182] +position = Vector2(713, 631) +metadata/_edit_group_ = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D" unique_id=1634682333] +shape = SubResource("RectangleShape2D_mvphy") + +[node name="Player" parent="." unique_id=735255374 instance=ExtResource("8_24ks5")] +position = Vector2(473, 509) + +[node name="StaticBody2D2" type="StaticBody2D" parent="." unique_id=958110307] +position = Vector2(538, 582) +metadata/_edit_group_ = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D2" unique_id=1123970436] +shape = SubResource("WorldBoundaryShape2D_mvphy") + +[node name="Triggers" type="Node2D" parent="." unique_id=1308561168] + +[node name="Trigger" parent="Triggers" unique_id=1346685745 instance=ExtResource("9_s4es8")] +position = Vector2(390, 541) + +[node name="Trigger2" parent="Triggers" unique_id=110247025 instance=ExtResource("9_s4es8")] +position = Vector2(514, 502) +effect = "teleport" + +[node name="foreground" type="Parallax2D" parent="." unique_id=246559660] +scroll_scale = Vector2(1.3, 1) +repeat_size = Vector2(400, 0) + +[node name="Sprite2D" type="Sprite2D" parent="foreground" unique_id=1690720392] +texture = ExtResource("10_63e4f") +offset = Vector2(200, 340) + +[node name="Crates" type="Node2D" parent="." unique_id=104104750] + +[node name="Crate" parent="Crates" unique_id=1367266345 instance=ExtResource("11_y6lc1")] +position = Vector2(322, 307) + +[node name="Crate2" parent="Crates" unique_id=1110392418 instance=ExtResource("11_y6lc1")] +position = Vector2(600, 496) + +[node name="RigidBody2D" parent="Crates" unique_id=721458511 instance=ExtResource("11_y6lc1")] +position = Vector2(423, 425) + +[node name="Crate3" parent="Crates" unique_id=201497032 instance=ExtResource("11_y6lc1")] +position = Vector2(681, 364) +rotation = 0.79584646 + +[node name="Coins" type="Node2D" parent="." unique_id=1387422217] + +[node name="Coin" parent="Coins" unique_id=613946937 instance=ExtResource("12_ekhvm")] +position = Vector2(623, 436) + +[node name="Coin2" parent="Coins" unique_id=1750219177 instance=ExtResource("12_ekhvm")] +position = Vector2(738, 404) + +[node name="Coin3" parent="Coins" unique_id=2129884856 instance=ExtResource("12_ekhvm")] +position = Vector2(518, 435) + +[node name="Enemies" type="Node2D" parent="." unique_id=81054696] + +[node name="Slime" parent="Enemies" unique_id=1316034960 instance=ExtResource("13_nflru")] +position = Vector2(719, 409) + +[node name="Slime2" parent="Enemies" unique_id=495693402 instance=ExtResource("13_nflru")] +position = Vector2(750, 409) + +[connection signal="areaTriggered" from="Triggers/Trigger" to="." method="_on_trigger"] diff --git a/scenes/level3.tscn b/scenes/level3.tscn new file mode 100644 index 0000000..b765616 --- /dev/null +++ b/scenes/level3.tscn @@ -0,0 +1,508 @@ +[gd_scene format=4 uid="uid://qy6oju7r4gjk"] + +[ext_resource type="Texture2D" uid="uid://cjkp5fjucdfoi" path="res://assets/graphics/environment/sky.png" id="1_bradm"] +[ext_resource type="Texture2D" uid="uid://2kn5xekesvey" path="res://assets/graphics/environment/farbackground.png" id="2_got4s"] +[ext_resource type="Texture2D" uid="uid://dd47jvi0xusna" path="res://assets/graphics/environment/midground.png" id="3_e40mx"] +[ext_resource type="Script" uid="uid://dv2q4p6jb8h4s" path="res://scripts/scene_manager.gd" id="4_a114e"] +[ext_resource type="Texture2D" uid="uid://kyooaow1jeaa" path="res://assets/graphics/terrains/Terrain (32x32).png" id="5_y1e0c"] +[ext_resource type="Texture2D" uid="uid://c8jhlduxe8p77" path="res://assets/graphics/terrains/veg_32x32.png" id="6_s4dsi"] +[ext_resource type="Texture2D" uid="uid://bu8oc3yypgigw" path="res://assets/graphics/terrains/mushroom_32x64.png" id="7_07lh1"] +[ext_resource type="PackedScene" uid="uid://dtegcgc8xcxfg" path="res://scenes/player.tscn" id="8_6uuvf"] +[ext_resource type="PackedScene" uid="uid://b22qsgmtr231s" path="res://scenes/trigger.tscn" id="9_x008a"] +[ext_resource type="Texture2D" uid="uid://dsywyyr0yb4cg" path="res://assets/graphics/environment/foreground.png" id="10_atr84"] +[ext_resource type="PackedScene" uid="uid://5xgx7qarkj3o" path="res://scenes/crate.tscn" id="11_qyu38"] +[ext_resource type="PackedScene" uid="uid://b4811uinm8qcu" path="res://scenes/coin.tscn" id="12_8vbrh"] +[ext_resource type="PackedScene" uid="uid://6d5378om23b8" path="res://scenes/slime.tscn" id="13_d5gix"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_u5sy4"] +texture = ExtResource("5_y1e0c") +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(0.9330139, -16, -16, -16, -16, 16, 1.8660278, 16) +0:1/0/terrains_peering_bit/right_side = 0 +0:1/0/terrains_peering_bit/bottom_right_corner = 0 +0:1/0/terrains_peering_bit/bottom_side = 0 +0:1/0/terrains_peering_bit/top_side = 0 +0:1/0/terrains_peering_bit/top_right_corner = 0 +1:1/0 = 0 +2:1/0 = 0 +2:1/0/terrain_set = 0 +2:1/0/terrain = 0 +2:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -1.2440224, -16, -0.31100464, 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, -8.086128, 16, -16, 6.842106) +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.31100464, -16, -0.9330139, -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, 2.488037, -16, 2.1770325, 16, -16, 16) +6:3/0/terrains_peering_bit/right_side = 0 +6:3/0/terrains_peering_bit/bottom_side = 0 +6:3/0/terrains_peering_bit/top_side = 0 +6:3/0/terrains_peering_bit/top_right_corner = 0 +7:3/0 = 0 +7:3/0/terrain_set = 0 +7:3/0/terrain = 0 +7:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, 2.488037, -16, 2.1770325, 16, 16, 16) +7:3/0/terrains_peering_bit/bottom_side = 0 +7:3/0/terrains_peering_bit/left_side = 0 +7:3/0/terrains_peering_bit/top_left_corner = 0 +7:3/0/terrains_peering_bit/top_side = 0 +9:3/0 = 0 +9:3/0/terrain_set = 0 +9:3/0/terrain = 0 +9:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 0, 16, -0.6220093) +9:3/0/terrains_peering_bit/right_side = 0 +9:3/0/terrains_peering_bit/bottom_side = 0 +9:3/0/terrains_peering_bit/bottom_left_corner = 0 +9:3/0/terrains_peering_bit/left_side = 0 +10:3/0 = 0 +10:3/0/terrain_set = 0 +10:3/0/terrain = 0 +10:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 0, 16, -0.6220093) +10:3/0/terrains_peering_bit/right_side = 0 +10:3/0/terrains_peering_bit/bottom_right_corner = 0 +10:3/0/terrains_peering_bit/bottom_side = 0 +10:3/0/terrains_peering_bit/left_side = 0 +12:3/0 = 0 +12:3/0/terrain_set = 0 +12:3/0/terrain = 0 +12:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 16, 16, 16) +12:3/0/terrains_peering_bit/right_side = 0 +12:3/0/terrains_peering_bit/bottom_side = 0 +12:3/0/terrains_peering_bit/top_side = 0 +13:3/0 = 0 +13:3/0/terrain_set = 0 +13:3/0/terrain = 0 +13:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 16, 16, 16) +13:3/0/terrains_peering_bit/right_side = 0 +13:3/0/terrains_peering_bit/bottom_side = 0 +13:3/0/terrains_peering_bit/left_side = 0 +15:3/0 = 0 +15:3/0/terrain_set = 0 +15:3/0/terrain = 0 +15:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 16, 16, 16) +15:3/0/terrains_peering_bit/right_side = 0 +15:3/0/terrains_peering_bit/bottom_side = 0 +16:3/0 = 0 +16:3/0/terrain_set = 0 +16:3/0/terrain = 0 +16:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 16, 16, 16) +16:3/0/terrains_peering_bit/bottom_side = 0 +16:3/0/terrains_peering_bit/left_side = 0 +0:4/0 = 0 +0:4/0/terrain_set = 0 +0:4/0/terrain = 0 +0:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +0:4/0/terrains_peering_bit/right_side = 0 +1:4/0 = 0 +1:4/0/terrain_set = 0 +1:4/0/terrain = 0 +1:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +1:4/0/terrains_peering_bit/right_side = 0 +1:4/0/terrains_peering_bit/left_side = 0 +2:4/0 = 0 +2:4/0/terrain_set = 0 +2:4/0/terrain = 0 +2:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +2:4/0/terrains_peering_bit/left_side = 0 +4:4/0 = 0 +4:4/0/terrain_set = 0 +4:4/0/terrain = 0 +4:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +6:4/0 = 0 +6:4/0/terrain_set = 0 +6:4/0/terrain = 0 +6:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 2.488037, -16, 2.1770325, 16, -16, 16) +6:4/0/terrains_peering_bit/right_side = 0 +6:4/0/terrains_peering_bit/bottom_right_corner = 0 +6:4/0/terrains_peering_bit/bottom_side = 0 +6:4/0/terrains_peering_bit/top_side = 0 +7:4/0 = 0 +7:4/0/terrain_set = 0 +7:4/0/terrain = 0 +7:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, 2.488037, -16, 2.1770325, 16, 16, 16) +7:4/0/terrains_peering_bit/bottom_side = 0 +7:4/0/terrains_peering_bit/bottom_left_corner = 0 +7:4/0/terrains_peering_bit/left_side = 0 +7:4/0/terrains_peering_bit/top_side = 0 +9:4/0 = 0 +9:4/0/terrain_set = 0 +9:4/0/terrain = 0 +9:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, 0.9330139, -16, 0.9330139, -16, 16, 16, 16) +9:4/0/terrains_peering_bit/right_side = 0 +9:4/0/terrains_peering_bit/left_side = 0 +9:4/0/terrains_peering_bit/top_left_corner = 0 +9:4/0/terrains_peering_bit/top_side = 0 +10:4/0 = 0 +10:4/0/terrain_set = 0 +10:4/0/terrain = 0 +10:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, 0.9330139, -16, 0.9330139, -16, 16, 16, 16) +10:4/0/terrains_peering_bit/right_side = 0 +10:4/0/terrains_peering_bit/left_side = 0 +10:4/0/terrains_peering_bit/top_side = 0 +10:4/0/terrains_peering_bit/top_right_corner = 0 +12:4/0 = 0 +12:4/0/terrain_set = 0 +12:4/0/terrain = 0 +12:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 16, 16, 16) +12:4/0/terrains_peering_bit/right_side = 0 +12:4/0/terrains_peering_bit/left_side = 0 +12:4/0/terrains_peering_bit/top_side = 0 +13:4/0 = 0 +13:4/0/terrain_set = 0 +13:4/0/terrain = 0 +13:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 16, 16, 16) +13:4/0/terrains_peering_bit/bottom_side = 0 +13:4/0/terrains_peering_bit/left_side = 0 +13:4/0/terrains_peering_bit/top_side = 0 +15:4/0 = 0 +15:4/0/terrain_set = 0 +15:4/0/terrain = 0 +15:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 16, 16, 16) +15:4/0/terrains_peering_bit/right_side = 0 +15:4/0/terrains_peering_bit/top_side = 0 +16:4/0 = 0 +16:4/0/terrain_set = 0 +16:4/0/terrain = 0 +16:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, -16, -16, -16, 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_vtaks"] +texture = ExtResource("6_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="TileSetAtlasSource" id="TileSetAtlasSource_kvpfn"] +texture = ExtResource("7_07lh1") +texture_region_size = Vector2i(32, 32) +0:0/0 = 0 +0:0/0/terrain_set = 0 +0:0/0/terrains_peering_bit/bottom_side = 1 +0:1/0 = 0 +0:1/0/terrain_set = 0 +0:1/0/terrain = 1 +0:1/0/terrains_peering_bit/top_side = 1 + +[sub_resource type="TileSet" id="TileSet_mvphy"] +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/0 = SubResource("TileSetAtlasSource_u5sy4") +sources/1 = SubResource("TileSetAtlasSource_vtaks") +sources/2 = SubResource("TileSetAtlasSource_kvpfn") + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_mvphy"] +size = Vector2(66, 20) + +[sub_resource type="WorldBoundaryShape2D" id="WorldBoundaryShape2D_mvphy"] + +[node name="Game" type="Node2D" unique_id=989312165] + +[node name="Parallax2D" type="Parallax2D" parent="." unique_id=1222718260] +repeat_size = Vector2(400, 225) + +[node name="Sprite2D" type="Sprite2D" parent="Parallax2D" unique_id=136019890] +texture = ExtResource("1_bradm") +offset = Vector2(200, 112) + +[node name="farbg" type="Parallax2D" parent="." unique_id=415159613] +repeat_size = Vector2(400, 0) + +[node name="Sprite2D" type="Sprite2D" parent="farbg" unique_id=2117193867] +texture_filter = 1 +texture = ExtResource("2_got4s") +offset = Vector2(200, 350) + +[node name="midground" type="Parallax2D" parent="." unique_id=2019512975] +scroll_scale = Vector2(1.2, 1) +repeat_size = Vector2(400, 0) + +[node name="Sprite2D" type="Sprite2D" parent="midground" unique_id=2080878610] +texture_filter = 1 +texture = ExtResource("3_e40mx") +offset = Vector2(200, 350) + +[node name="SceneManager" type="Node2D" parent="." unique_id=1778809182] +script = ExtResource("4_a114e") + +[node name="TileMapLayer" type="TileMapLayer" parent="." unique_id=374407051] +texture_filter = 1 +tile_map_data = PackedByteArray("AAASAA0AAAAEAAAAAAAVAA0AAAAAAAAAAAAWAA0AAAABAAAAAAAXAA0AAAABAAAAAAAYAA0AAAAHAAQAAAAYAAwAAAAGAAMAAAAYAAsAAAAAAAAAAAAZAAsAAAABAAAAAAAZAAwAAAABAAIAAAAaAAwAAAACAAIAAAAaAAsAAAACAAAAAAAWAAkAAAACAAQAAAAVAAkAAAAAAAQAAAANABIAAAABAAAAAAAOABIAAAABAAAAAAAPABIAAAABAAAAAAAQABIAAAABAAAAAAARABIAAAABAAAAAAASABIAAAABAAAAAAATABIAAAABAAAAAAAUABIAAAABAAAAAAAVABIAAAABAAAAAAAWABIAAAABAAAAAAAXABIAAAABAAAAAAAYABIAAAABAAAAAAAZABIAAAABAAAAAAAaABIAAAABAAAAAAAbABIAAAAHAAEAAAAbABEAAAAAAAAAAAAcABEAAAACAAAAAAAcABIAAAACAAEAAAANABMAAAAHAAAAAAAOABMAAAAGAAEAAAAPABMAAAAHAAEAAAAQABMAAAAHAAAAAAAQABQAAAAKAAQAAAAPABQAAAAJAAQAAAAOABQAAAABAAIAAAANABQAAAAAAAIAAAARABMAAAAGAAAAAAASABMAAAAGAAAAAAATABMAAAAHAAAAAAASABQAAAAJAAQAAAARABQAAAAJAAQAAAAYABMAAAAGAAAAAAAZABMAAAAGAAAAAAAaABMAAAAGAAAAAAAaABQAAAABAAIAAAAbABMAAAAGAAAAAAAcABMAAAACAAIAAAAbABQAAAACAAIAAAAYABQAAAABAAIAAAAXABMAAAAHAAAAAAAWABMAAAAGAAAAAAAVABMAAAAGAAAAAAAVABQAAAABAAIAAAAUABMAAAAGAAAAAAAUABQAAAAJAAQAAAATABQAAAAKAAQAAAAWABQAAAABAAIAAAAXABQAAAABAAIAAAAZABQAAAABAAIAAAALABMAAAABAAIAAAAMABMAAAABAAIAAAAMABIAAAABAAAAAAALABIAAAABAAAAAAAKABIAAAABAAAAAAAKABMAAAABAAIAAAAJABMAAAAAAAIAAAAJABIAAAAQAAEAAAAIABIAAAAAAAIAAAAIABEAAAAAAAEAAAAJABEAAAACAAEAAAAIABAAAAAAAAEAAAAIAA8AAAAHAAAAAAAJAA8AAAACAAEAAAAJABAAAAACAAEAAAAIAA4AAAABAAAAAAAHAA8AAAAAAAIAAAAHAA4AAAAGAAQAAAAHAA0AAAAQAAMAAAAGAA0AAAAPAAQAAAAGAAwAAAAEAAEAAAAGAAsAAAAPAAMAAAAHAAsAAAABAAQAAAAIAAsAAAABAAQAAAAJAAsAAAAKAAQAAAAKAAsAAAACAAIAAAAKAAoAAAACAAAAAAAJAAoAAAAAAAAAAAANABAAAAACAAQAAAAMABAAAAABAAQAAAALABAAAAAAAAQAAAAVAAwAAQAAAAAAAAAYAAoAAQAAAAAAAAAZAAoAAQAAAAAAAAAIAA0AAQAAAAAAAAAJAAkAAQAAAAAAAAAWAAwAAgAAAAEAAAAWAAsAAgAAAAAAAAAbABAAAgAAAAEAAAAbAA8AAgAAAAAAAAAaABEAAQAAAAAAAAAYAA4AAAACAAIAAAAXAA4AAAABAAIAAAAWAA4AAAABAAIAAAAVAA4AAAAKAAQAAAAUAA4AAAABAAQAAAATAA4AAAABAAQAAAASAA4AAAAMAAQAAAARAA4AAAABAAQAAAAQAA4AAAABAAQAAAAPAA4AAAABAAQAAAAOAA4AAAABAAQAAAANAA4AAAABAAQAAAAMAA4AAAABAAQAAAALAA4AAAABAAQAAAAKAA4AAAABAAQAAAAJAA4AAAAJAAMAAAA=") +tile_set = SubResource("TileSet_mvphy") + +[node name="StaticBody2D" type="StaticBody2D" parent="." unique_id=1148293182] +position = Vector2(713, 631) +metadata/_edit_group_ = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D" unique_id=1634682333] +shape = SubResource("RectangleShape2D_mvphy") + +[node name="Player" parent="." unique_id=735255374 instance=ExtResource("8_6uuvf")] +position = Vector2(594, 390) + +[node name="StaticBody2D2" type="StaticBody2D" parent="." unique_id=958110307] +position = Vector2(538, 582) +metadata/_edit_group_ = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D2" unique_id=1123970436] +shape = SubResource("WorldBoundaryShape2D_mvphy") + +[node name="Triggers" type="Node2D" parent="." unique_id=1308561168] + +[node name="Trigger" parent="Triggers" unique_id=1346685745 instance=ExtResource("9_x008a")] +position = Vector2(390, 541) + +[node name="Trigger2" parent="Triggers" unique_id=110247025 instance=ExtResource("9_x008a")] +position = Vector2(514, 502) +effect = "teleport" + +[node name="foreground" type="Parallax2D" parent="." unique_id=246559660] +scroll_scale = Vector2(1.3, 1) +repeat_size = Vector2(400, 0) + +[node name="Sprite2D" type="Sprite2D" parent="foreground" unique_id=1690720392] +texture = ExtResource("10_atr84") +offset = Vector2(200, 340) + +[node name="Crates" type="Node2D" parent="." unique_id=104104750] + +[node name="Crate" parent="Crates" unique_id=1367266345 instance=ExtResource("11_qyu38")] +position = Vector2(365, 431) + +[node name="Crate2" parent="Crates" unique_id=1110392418 instance=ExtResource("11_qyu38")] +position = Vector2(480, 430) + +[node name="RigidBody2D" parent="Crates" unique_id=721458511 instance=ExtResource("11_qyu38")] +position = Vector2(423, 425) + +[node name="Crate3" parent="Crates" unique_id=201497032 instance=ExtResource("11_qyu38")] +position = Vector2(681, 364) +rotation = 0.79584646 + +[node name="Coins" type="Node2D" parent="." unique_id=1387422217] + +[node name="Coin" parent="Coins" unique_id=613946937 instance=ExtResource("12_8vbrh")] +position = Vector2(623, 436) + +[node name="Coin2" parent="Coins" unique_id=1750219177 instance=ExtResource("12_8vbrh")] +position = Vector2(738, 404) + +[node name="Coin3" parent="Coins" unique_id=2129884856 instance=ExtResource("12_8vbrh")] +position = Vector2(518, 435) + +[node name="Enemies" type="Node2D" parent="." unique_id=81054696] + +[node name="Slime" parent="Enemies" unique_id=1316034960 instance=ExtResource("13_d5gix")] +position = Vector2(719, 409) + +[node name="Slime2" parent="Enemies" unique_id=495693402 instance=ExtResource("13_d5gix")] +position = Vector2(750, 409) + +[connection signal="areaTriggered" from="Triggers/Trigger" to="." method="_on_trigger"] diff --git a/scenes/player.tscn b/scenes/player.tscn index 3314295..da31947 100644 --- a/scenes/player.tscn +++ b/scenes/player.tscn @@ -3,14 +3,72 @@ [ext_resource type="Script" uid="uid://ct34rf6jscqmo" path="res://scripts/player.gd" id="1_3vyb7"] [ext_resource type="Texture2D" uid="uid://dq1io4uxs544h" path="res://assets/graphics/player/jump_fall/player jump 48x48.png" id="2_dqkch"] [ext_resource type="Texture2D" uid="uid://cv1an7bix4lg4" path="res://assets/graphics/player/idle/Player Idle 48x48.png" id="2_g2els"] +[ext_resource type="Texture2D" uid="uid://dht4cd2u7dkrb" path="res://assets/graphics/player/death/Player Death 64x64.png" id="2_tuyoq"] [ext_resource type="Texture2D" uid="uid://rdkrvqncrci5" path="res://assets/graphics/player/run/player run 48x48.png" id="3_qhqgy"] +[ext_resource type="Texture2D" uid="uid://37of41hhcw7h" path="res://assets/graphics/player/hurt/Player Hurt 48x48.png" id="4_fjrip"] [sub_resource type="CircleShape2D" id="CircleShape2D_o7s7a"] +[sub_resource type="AtlasTexture" id="AtlasTexture_l71n6"] +atlas = ExtResource("2_tuyoq") +region = Rect2(0, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ke2ow"] +atlas = ExtResource("2_tuyoq") +region = Rect2(48, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ujl30"] +atlas = ExtResource("2_tuyoq") +region = Rect2(96, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_31cv2"] +atlas = ExtResource("2_tuyoq") +region = Rect2(144, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_pf23h"] +atlas = ExtResource("2_tuyoq") +region = Rect2(192, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_dt7fs"] +atlas = ExtResource("2_tuyoq") +region = Rect2(240, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_wqfne"] +atlas = ExtResource("2_tuyoq") +region = Rect2(288, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_wnwbv"] +atlas = ExtResource("2_tuyoq") +region = Rect2(336, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_gl8cc"] +atlas = ExtResource("2_tuyoq") +region = Rect2(384, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_487ah"] +atlas = ExtResource("2_tuyoq") +region = Rect2(432, 0, 48, 48) + [sub_resource type="AtlasTexture" id="AtlasTexture_i4ail"] atlas = ExtResource("2_dqkch") region = Rect2(96, 0, 48, 48) +[sub_resource type="AtlasTexture" id="AtlasTexture_md1ol"] +atlas = ExtResource("4_fjrip") +region = Rect2(0, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_bj30b"] +atlas = ExtResource("4_fjrip") +region = Rect2(48, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_jc3p3"] +atlas = ExtResource("4_fjrip") +region = Rect2(96, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_hax0n"] +atlas = ExtResource("4_fjrip") +region = Rect2(144, 0, 48, 48) + [sub_resource type="AtlasTexture" id="AtlasTexture_qhqgy"] atlas = ExtResource("2_g2els") region = Rect2(0, 0, 48, 48) @@ -95,6 +153,41 @@ region = Rect2(336, 0, 48, 48) animations = [{ "frames": [{ "duration": 1.0, +"texture": SubResource("AtlasTexture_l71n6") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ke2ow") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ujl30") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_31cv2") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_pf23h") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_dt7fs") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_wqfne") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_wnwbv") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_gl8cc") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_487ah") +}], +"loop": 0, +"name": &"death", +"speed": 6.0 +}, { +"frames": [{ +"duration": 1.0, "texture": SubResource("AtlasTexture_i4ail") }], "loop": 2, @@ -103,6 +196,23 @@ animations = [{ }, { "frames": [{ "duration": 1.0, +"texture": SubResource("AtlasTexture_md1ol") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_bj30b") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_jc3p3") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_hax0n") +}], +"loop": 1, +"name": &"hurt", +"speed": 12.0 +}, { +"frames": [{ +"duration": 1.0, "texture": SubResource("AtlasTexture_qhqgy") }, { "duration": 1.0, @@ -178,6 +288,7 @@ animations = [{ }] [node name="Player" type="CharacterBody2D" unique_id=735255374] +position = Vector2(0, -1) script = ExtResource("1_3vyb7") metadata/_edit_group_ = true @@ -192,16 +303,16 @@ target_position = Vector2(16, 0) target_position = Vector2(-16, 0) [node name="RightSpawn" type="Marker2D" parent="." unique_id=1276129807] -position = Vector2(14, -6) +position = Vector2(14, -1) [node name="LeftSpawn" type="Marker2D" parent="." unique_id=522145742] -position = Vector2(-15, -6) +position = Vector2(-15, -1) [node name="PlayerGraphic" type="AnimatedSprite2D" parent="." unique_id=1106134562] texture_filter = 1 position = Vector2(0, -6) sprite_frames = SubResource("SpriteFrames_mvphy") -animation = &"fall" +animation = &"death" autoplay = "idle" [node name="Camera2D" type="Camera2D" parent="." unique_id=2099904623] diff --git a/scripts/bullet.gd b/scripts/bullet.gd index 796fd93..e1b55fa 100644 --- a/scripts/bullet.gd +++ b/scripts/bullet.gd @@ -19,3 +19,7 @@ func _on_body_entered(body: Node2D) -> void: func setSpeed(value)->void: speed = value + + +func _on_area_entered(area: Area2D) -> void: + bulletDamageSignal.emit(area, self) diff --git a/scripts/gamecontroller.gd b/scripts/gamecontroller.gd index 4b455dc..0133dd2 100644 --- a/scripts/gamecontroller.gd +++ b/scripts/gamecontroller.gd @@ -2,16 +2,38 @@ class_name GameController extends Node2D signal teleportSignal(body:RigidBody2D) signal destroySignal(body) +signal damageSignal(body) var numberOfCrates = 2 var totalCoins = 0 var coinsRemaining = 0 var coinsCollected = 0 +var enemy:CharacterStats +var player:CharacterStats + +var enemiesDict={} + +var playerStats={} + + + +# level information +var levelArray = ["res://scenes/game.tscn", "res://scenes/level2.tscn", "res://scenes/level3.tscn"] +var currentLevel = 0 # Called when the node enters the scene tree for the first time. func _ready() -> void: get_window().grab_focus() + enemy = load("res://scripts/rscs/slimeStats.tres") + player = load("res://scripts/rscs/playerStats.tres") +func reset()->void: + playerStats={ + "health":player.currentHealth, + "meleeAttack":player.meleeDamage, + "rangeAttack":player.rangeDamage + } + coinsCollected = 0 # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta: float) -> void: @@ -30,16 +52,34 @@ func _on_trigger(effect: Variant, Object: Variant) -> void: teleportSignal.emit(Object) func _on_bullet_hit(body, bullet) -> void: - print("GC knows bullet hit") + #print("GC knows bullet hit") if body is Crate: destroySignal.emit(body) destroySignal.emit(bullet) + if body is Slime: + enemiesDict[body]["health"] -= playerStats.rangeAttack + if enemiesDict[body]["health"] <= 0: + print("Enemy is dead") + destroySignal.emit(body) + destroySignal.emit(bullet) + removeEnemyFromLevel(body) + else: + print("Enemy takes damage") + destroySignal.emit(bullet) + damageSignal.emit(body) + func crateTotal(amount)->void: numberOfCrates = amount if numberOfCrates<=0: print("YOU WON!!!") + if currentLevelvoid: if totalCoins == 0: totalCoins = amount @@ -50,3 +90,26 @@ func coinCollected(body, coin)->void: #give them a coin coinsCollected +=1 destroySignal.emit(coin) +func slimeAttack(body, slime)->void: + print("GC knows slime attacking") + playerStats.health -= enemiesDict[slime].meleeDamage + if playerStats.health >0: + print("player takes damage") + damageSignal.emit(body) + else: + print("player is dead!!") + destroySignal.emit(body) + +func addEnemyToLevel(slime)->void: + print("Adding enemy to level") + var stat={ + "health":enemy.currentHealth + randi_range(0,10), + "meleeDamage":enemy.meleeDamage+ randi_range(0,10) + } + enemiesDict[slime]=stat +func removeEnemyFromLevel(enemy)->void: + print("removeEnemyFromLevel") + enemiesDict.erase(enemy) + +func levelChange()-> void: + get_tree().change_scene_to_file(levelArray[currentLevel]) diff --git a/scripts/player.gd b/scripts/player.gd index 01d4963..c28ef9c 100644 --- a/scripts/player.gd +++ b/scripts/player.gd @@ -11,10 +11,11 @@ class_name Player extends CharacterBody2D var direction signal bulletSignal(pos, speed) +signal deathCompleteSignal enum FaceDirection {LEFT,RIGHT} var facing:FaceDirection = FaceDirection.RIGHT -enum PlayerStates {IDLE,RUNNING,JUMPING,FALLING} +enum PlayerStates {IDLE,RUNNING,JUMPING,FALLING,HURT,DEATH} var current_player_state:PlayerStates = PlayerStates.IDLE var upJump:bool = false @@ -31,8 +32,9 @@ func _physics_process(delta: float) -> void: # Add the gravity. if not is_on_floor(): velocity += get_gravity() * delta - - handle_input() + + if not current_player_state == PlayerStates.DEATH: + handle_input() handle_movement() handle_states() handle_animations() @@ -133,9 +135,25 @@ func handle_animations()->void: player_graphic.play("jump") PlayerStates.FALLING: player_graphic.play("fall") + PlayerStates.HURT: + player_graphic.play("hurt") + PlayerStates.DEATH: + player_graphic.play("death") func _animation_finished() -> void: match current_player_state: PlayerStates.JUMPING: upJump = false + PlayerStates.HURT: + current_player_state = PlayerStates.IDLE + PlayerStates.DEATH: + deathCompleteSignal.emit() + +func takeDamage()->void: + print("player taking damage") + current_player_state = PlayerStates.HURT + +func kill()->void: + print("kill the player") + current_player_state = PlayerStates.DEATH diff --git a/scripts/rscs/characterstats.gd b/scripts/rscs/characterstats.gd new file mode 100644 index 0000000..28c02f9 --- /dev/null +++ b/scripts/rscs/characterstats.gd @@ -0,0 +1,9 @@ +class_name CharacterStats extends Resource + +@export var currentHealth := 100 +@export var maxHealth := 150 +@export var startingHealth := 100 + +#damage +@export var meleeDamage := 20 +@export var rangeDamage := 15 diff --git a/scripts/rscs/characterstats.gd.uid b/scripts/rscs/characterstats.gd.uid new file mode 100644 index 0000000..97639f4 --- /dev/null +++ b/scripts/rscs/characterstats.gd.uid @@ -0,0 +1 @@ +uid://bjb5jd6442ta7 diff --git a/scripts/rscs/playerStats.tres b/scripts/rscs/playerStats.tres new file mode 100644 index 0000000..edd4836 --- /dev/null +++ b/scripts/rscs/playerStats.tres @@ -0,0 +1,11 @@ +[gd_resource type="Resource" script_class="CharacterStats" format=3 uid="uid://6ijgoaamy7w1"] + +[ext_resource type="Script" uid="uid://bjb5jd6442ta7" path="res://scripts/rscs/characterstats.gd" id="1_sqkfu"] + +[resource] +script = ExtResource("1_sqkfu") +currentHealth = 150 +startingHealth = 150 +meleeDamage = 0 +rangeDamage = 30 +metadata/_custom_type_script = "uid://bjb5jd6442ta7" diff --git a/scripts/rscs/slimeStats.tres b/scripts/rscs/slimeStats.tres new file mode 100644 index 0000000..9696d24 --- /dev/null +++ b/scripts/rscs/slimeStats.tres @@ -0,0 +1,11 @@ +[gd_resource type="Resource" script_class="CharacterStats" format=3 uid="uid://5bqgu1h1cmaa"] + +[ext_resource type="Script" uid="uid://bjb5jd6442ta7" path="res://scripts/rscs/characterstats.gd" id="1_ppipo"] + +[resource] +script = ExtResource("1_ppipo") +currentHealth = 80 +maxHealth = 90 +startingHealth = 80 +rangeDamage = 0 +metadata/_custom_type_script = "uid://bjb5jd6442ta7" diff --git a/scripts/scene_manager.gd b/scripts/scene_manager.gd index 993ef1b..7df3fb9 100644 --- a/scripts/scene_manager.gd +++ b/scripts/scene_manager.gd @@ -1,10 +1,10 @@ class_name SceneManager extends Node2D @onready var triggers: Node2D = $"../Triggers" -@onready var game: GameController = $".." @onready var player: Player = $"../Player" @onready var crates: Node2D = $"../Crates" @onready var coins: Node2D = $"../Coins" +@onready var enemies: Node2D = $"../Enemies" #recipe for bullets var bullet = preload("res://scenes/bullet.tscn") @@ -14,12 +14,16 @@ var bulletArray:Array[Bullet] = [] # Called when the node enters the scene tree for the first time. func _ready() -> void: + Gamecontroller.reset() buildLevel() - game.teleportSignal.connect(teleport) - game.destroySignal.connect(destroy) + Gamecontroller.teleportSignal.connect(teleport) + Gamecontroller.destroySignal.connect(destroy) + Gamecontroller.damageSignal.connect(damage) player.bulletSignal.connect(makeBullet) + player.deathCompleteSignal.connect(Gamecontroller.levelChange) updateCrates() updateCoins() + updateEnemies() # Called every frame. 'delta' is the elapsed time since the previous frame. @@ -36,7 +40,7 @@ func updateCrates()->void: obj.tree_exited.connect(updateCrates) totalCrates +=1 # tell the gamecontroller how many crates - game.crateTotal(totalCrates) + Gamecontroller.crateTotal(totalCrates) func updateCoins()->void: var totalCoins = 0 @@ -45,17 +49,27 @@ func updateCoins()->void: if obj is Coin: if not obj.tree_exited.is_connected(updateCoins): obj.tree_exited.connect(updateCoins) - if not obj.coinCollisionSignal.is_connected(game.coinCollected): - obj.coinCollisionSignal.connect(game.coinCollected) + if not obj.coinCollisionSignal.is_connected(Gamecontroller.coinCollected): + obj.coinCollisionSignal.connect(Gamecontroller.coinCollected) totalCoins +=1 - game.coinTotal(totalCoins) + Gamecontroller.coinTotal(totalCoins) + +func updateEnemies()->void: + if enemies: + for obj in enemies.get_children(): + var enemy = obj as Slime + if enemy: + Gamecontroller.addEnemyToLevel(enemy) + if not enemy.enemyAttackSignal.is_connected(Gamecontroller.slimeAttack): + enemy.enemyAttackSignal.connect(Gamecontroller.slimeAttack) + func buildLevel()->void: if triggers: for obj in triggers.get_children(): if obj is Trigger: - if not obj.areaTriggered.is_connected(game._on_trigger): - obj.areaTriggered.connect(game._on_trigger) + if not obj.areaTriggered.is_connected(Gamecontroller._on_trigger): + obj.areaTriggered.connect(Gamecontroller._on_trigger) func teleport(body, _bodyposition=null)->void: if body is Crate: @@ -80,8 +94,8 @@ func bulletFactory()->Bullet: myBullet = bullet.instantiate() add_sibling(myBullet) #wire up a signal to the game controller - if not myBullet.bulletDamageSignal.is_connected(game._on_bullet_hit): - myBullet.bulletDamageSignal.connect(game._on_bullet_hit) + if not myBullet.bulletDamageSignal.is_connected(Gamecontroller._on_bullet_hit): + myBullet.bulletDamageSignal.connect(Gamecontroller._on_bullet_hit) else: #recycle bullet myBullet = bulletArray.pop_back() @@ -97,6 +111,16 @@ func destroy(target)->void: target.queue_free() if target is Coin: target.queue_free() + if target is Slime: + target.queue_free() + if target is Player: + target.kill() + +func damage(target)->void: + if target is Slime: + target.takeDamage() + if target is Player: + target.takeDamage() func stash(target:Bullet)->void: print("stash a bullet") diff --git a/scripts/slime.gd b/scripts/slime.gd index 6896a91..430330f 100644 --- a/scripts/slime.gd +++ b/scripts/slime.gd @@ -14,7 +14,7 @@ var facing:FaceDirection = FaceDirection.RIGHT #direction 1 move to right, 0 no movement, -1 to the left var direction = 1 -enum EnemyStates {RUN, ATTACK, SPAWN} +enum EnemyStates {RUN, ATTACK, SPAWN, HURT} var currentEnemyState:EnemyStates = EnemyStates.SPAWN @@ -51,6 +51,8 @@ func handleAnimation()->void: slime_graphic.play("run") EnemyStates.ATTACK: slime_graphic.play("attack") + EnemyStates.HURT: + slime_graphic.play("attack") func handleCollisions()->void: if not right_down_cast.is_colliding(): @@ -84,3 +86,9 @@ func _on_animation_finished() -> void: EnemyStates.ATTACK: currentEnemyState = EnemyStates.RUN direction = (randi() % 2) *2 -1 + EnemyStates.HURT: + currentEnemyState = EnemyStates.RUN + +func takeDamage()->void: + print("Slime taking damage!!") + currentEnemyState = EnemyStates.HURT