From c20da225e69a4b93ee61ce189bd8603805bb1336 Mon Sep 17 00:00:00 2001 From: Fusselkater Date: Mon, 18 Jul 2022 12:58:38 +0200 Subject: [PATCH] level 1 --- common/global_state.gd | 10 + common/tiles/assets/grasland.svg | 339 +++++++++++++++++- common/tiles/grasland.tres | 170 ++++++++- objects/characters/player.gd | 8 +- objects/characters/player.tscn | 4 +- objects/coin/coin.gd | 2 +- objects/door/assets/door1.svg | 60 ++++ objects/door/assets/door1.svg.import | 35 ++ objects/door/assets/door2.svg | 102 ++++++ objects/door/assets/door2.svg.import | 35 ++ objects/door/assets/door3.svg | 102 ++++++ objects/door/assets/door3.svg.import | 35 ++ objects/door/assets/door4.svg | 102 ++++++ objects/door/assets/door4.svg.import | 35 ++ objects/door/assets/door5.svg | 95 +++++ objects/door/assets/door5.svg.import | 35 ++ objects/door/assets/locked.ogg | Bin 0 -> 8500 bytes objects/door/assets/locked.ogg.import | 15 + objects/door/assets/open.ogg | Bin 0 -> 20947 bytes objects/door/assets/open.ogg.import | 15 + objects/door/door.gd | 21 ++ objects/door/door.tscn | 57 +++ objects/key/assets/key.wav | Bin 0 -> 9570 bytes objects/key/assets/key.wav.import | 21 ++ objects/key/assets/yellow.svg | 82 +++++ objects/key/assets/yellow.svg.import | 35 ++ objects/key/key.gd | 14 + objects/key/key.tscn | 52 +++ project.godot | 4 + scenes/hud/assets/key_yellow.svg | 82 +++++ scenes/hud/assets/key_yellow.svg.import | 35 ++ scenes/{ => hud}/hud.gd | 7 +- scenes/{ => hud}/hud.tscn | 16 +- scenes/levels/01/CollidingMountain.tscn | 19 + scenes/levels/01/assets/mountain_01.svg | 66 ++++ .../levels/01/assets/mountain_01.svg.import | 35 ++ scenes/levels/01/interlude_01.tscn | 2 +- scenes/levels/01/level_01.tscn | 64 +++- scenes/levels/level.gd | 4 + scenes/main.gd | 8 - scenes/main.tscn | 4 +- 41 files changed, 1789 insertions(+), 38 deletions(-) create mode 100644 common/global_state.gd create mode 100644 objects/door/assets/door1.svg create mode 100644 objects/door/assets/door1.svg.import create mode 100644 objects/door/assets/door2.svg create mode 100644 objects/door/assets/door2.svg.import create mode 100644 objects/door/assets/door3.svg create mode 100644 objects/door/assets/door3.svg.import create mode 100644 objects/door/assets/door4.svg create mode 100644 objects/door/assets/door4.svg.import create mode 100644 objects/door/assets/door5.svg create mode 100644 objects/door/assets/door5.svg.import create mode 100644 objects/door/assets/locked.ogg create mode 100644 objects/door/assets/locked.ogg.import create mode 100644 objects/door/assets/open.ogg create mode 100644 objects/door/assets/open.ogg.import create mode 100644 objects/door/door.gd create mode 100644 objects/door/door.tscn create mode 100644 objects/key/assets/key.wav create mode 100644 objects/key/assets/key.wav.import create mode 100644 objects/key/assets/yellow.svg create mode 100644 objects/key/assets/yellow.svg.import create mode 100644 objects/key/key.gd create mode 100644 objects/key/key.tscn create mode 100644 scenes/hud/assets/key_yellow.svg create mode 100644 scenes/hud/assets/key_yellow.svg.import rename scenes/{ => hud}/hud.gd (80%) rename scenes/{ => hud}/hud.tscn (77%) create mode 100644 scenes/levels/01/CollidingMountain.tscn create mode 100644 scenes/levels/01/assets/mountain_01.svg create mode 100644 scenes/levels/01/assets/mountain_01.svg.import diff --git a/common/global_state.gd b/common/global_state.gd new file mode 100644 index 0000000..330f7ff --- /dev/null +++ b/common/global_state.gd @@ -0,0 +1,10 @@ +extends Node + +var keys = { + 'yellow': false, + 'green': false, + 'blue': false, + 'red': false +} + +var coins = 0 diff --git a/common/tiles/assets/grasland.svg b/common/tiles/assets/grasland.svg index 24a9576..0fa3cfb 100644 --- a/common/tiles/assets/grasland.svg +++ b/common/tiles/assets/grasland.svg @@ -2,9 +2,9 @@ @@ -854,5 +854,332 @@ d="m 892.05,390 15.75,-7.3 5.45,-10 -0.5,-1.05 -5.2,-10.55 10.45,-16.1 1,11.15 10.95,16.5 0.05,0.05 -0.6,11.15 -0.1,1.95 9.65,4.2 H 939 892.05" id="path871" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/common/tiles/grasland.tres b/common/tiles/grasland.tres index fa9458b..f49cd49 100644 --- a/common/tiles/grasland.tres +++ b/common/tiles/grasland.tres @@ -1,4 +1,4 @@ -[gd_resource type="TileSet" load_steps=39 format=2] +[gd_resource type="TileSet" load_steps=46 format=2] [ext_resource path="res://common/tiles/assets/grasland.svg" type="Texture" id=1] [ext_resource path="res://common/tiles/assets/liquid.svg" type="Texture" id=2] @@ -73,6 +73,9 @@ points = PoolVector2Array( 0, 0, 70, 0, 70, 40, 0, 40 ) [sub_resource type="ConvexPolygonShape2D" id=35] points = PoolVector2Array( 0, 35, 70, 35, 70, 70, 0, 70 ) +[sub_resource type="ConvexPolygonShape2D" id=36] +points = PoolVector2Array( 0, 0, 70, 0, 70, 70, 0, 70 ) + [sub_resource type="ConvexPolygonShape2D" id=11] points = PoolVector2Array( -10, 0, -10, 0, -10, 70, -10, 70 ) @@ -88,6 +91,24 @@ points = PoolVector2Array( 0, 0, 70, 0, 70, 70, 0, 70 ) [sub_resource type="ConvexPolygonShape2D" id=15] points = PoolVector2Array( 0, 0, 70, 0, 70, 70, 0, 70 ) +[sub_resource type="ConvexPolygonShape2D" id=37] +points = PoolVector2Array( 0, 0, 70, 0, 70, 70, 0, 70 ) + +[sub_resource type="ConvexPolygonShape2D" id=38] +points = PoolVector2Array( 0, 0, 70, 0, 70, 70, 0, 70 ) + +[sub_resource type="ConvexPolygonShape2D" id=39] +points = PoolVector2Array( 0, 0, 70, 0, 70, 70, 0, 70 ) + +[sub_resource type="ConvexPolygonShape2D" id=40] +points = PoolVector2Array( 0, 0, 70, 0, 70, 70, 0, 70 ) + +[sub_resource type="ConvexPolygonShape2D" id=41] +points = PoolVector2Array( 0, 0, 70, 0, 70, 70, 0, 70 ) + +[sub_resource type="ConvexPolygonShape2D" id=42] +points = PoolVector2Array( 0, 0, 70, 0, 70, 70, 0, 70 ) + [sub_resource type="ConvexPolygonShape2D" id=16] points = PoolVector2Array( 0, 0, 70, 0, 70, 70, 0, 70 ) @@ -800,3 +821,150 @@ points = PoolVector2Array( 0, 70, 70, 0, 70, 70, 0, 70 ) 28/shape_one_way_margin = 0.0 28/shapes = [ ] 28/z_index = 0 +29/name = "Grass 16" +29/texture = ExtResource( 1 ) +29/tex_offset = Vector2( 0, 0 ) +29/modulate = Color( 1, 1, 1, 1 ) +29/region = Rect2( 0, 640, 70, 70 ) +29/tile_mode = 0 +29/occluder_offset = Vector2( 0, 0 ) +29/navigation_offset = Vector2( 0, 0 ) +29/shape_offset = Vector2( 0, 0 ) +29/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +29/shape = SubResource( 36 ) +29/shape_one_way = false +29/shape_one_way_margin = 1.0 +29/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 36 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +29/z_index = 0 +30/name = "Grass 17" +30/texture = ExtResource( 1 ) +30/tex_offset = Vector2( 0, 0 ) +30/modulate = Color( 1, 1, 1, 1 ) +30/region = Rect2( 80, 640, 70, 70 ) +30/tile_mode = 0 +30/occluder_offset = Vector2( 0, 0 ) +30/navigation_offset = Vector2( 0, 0 ) +30/shape_offset = Vector2( 0, 0 ) +30/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +30/shape = SubResource( 37 ) +30/shape_one_way = false +30/shape_one_way_margin = 1.0 +30/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 37 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +30/z_index = 0 +31/name = "Grass 18" +31/texture = ExtResource( 1 ) +31/tex_offset = Vector2( 0, 0 ) +31/modulate = Color( 1, 1, 1, 1 ) +31/region = Rect2( 160, 640, 70, 70 ) +31/tile_mode = 0 +31/occluder_offset = Vector2( 0, 0 ) +31/navigation_offset = Vector2( 0, 0 ) +31/shape_offset = Vector2( 0, 0 ) +31/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +31/shape = SubResource( 38 ) +31/shape_one_way = false +31/shape_one_way_margin = 1.0 +31/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 38 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +31/z_index = 0 +32/name = "Grass 19" +32/texture = ExtResource( 1 ) +32/tex_offset = Vector2( 0, 0 ) +32/modulate = Color( 1, 1, 1, 1 ) +32/region = Rect2( 320, 0, 70, 70 ) +32/tile_mode = 0 +32/occluder_offset = Vector2( 0, 0 ) +32/navigation_offset = Vector2( 0, 0 ) +32/shape_offset = Vector2( 0, 0 ) +32/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +32/shape = SubResource( 39 ) +32/shape_one_way = false +32/shape_one_way_margin = 1.0 +32/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 39 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +32/z_index = 0 +33/name = "Grass 20" +33/texture = ExtResource( 1 ) +33/tex_offset = Vector2( 0, 0 ) +33/modulate = Color( 1, 1, 1, 1 ) +33/region = Rect2( 400, 0, 70, 70 ) +33/tile_mode = 0 +33/occluder_offset = Vector2( 0, 0 ) +33/navigation_offset = Vector2( 0, 0 ) +33/shape_offset = Vector2( 0, 0 ) +33/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +33/shape = SubResource( 40 ) +33/shape_one_way = false +33/shape_one_way_margin = 1.0 +33/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 40 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +33/z_index = 0 +34/name = "Grass 21" +34/texture = ExtResource( 1 ) +34/tex_offset = Vector2( 0, 0 ) +34/modulate = Color( 1, 1, 1, 1 ) +34/region = Rect2( 480, 0, 70, 70 ) +34/tile_mode = 0 +34/occluder_offset = Vector2( 0, 0 ) +34/navigation_offset = Vector2( 0, 0 ) +34/shape_offset = Vector2( 0, 0 ) +34/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +34/shape = SubResource( 41 ) +34/shape_one_way = false +34/shape_one_way_margin = 1.0 +34/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 41 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +34/z_index = 0 +35/name = "Grass 22" +35/texture = ExtResource( 1 ) +35/tex_offset = Vector2( 0, 0 ) +35/modulate = Color( 1, 1, 1, 1 ) +35/region = Rect2( 560, 0, 70, 70 ) +35/tile_mode = 0 +35/occluder_offset = Vector2( 0, 0 ) +35/navigation_offset = Vector2( 0, 0 ) +35/shape_offset = Vector2( 0, 0 ) +35/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +35/shape = SubResource( 42 ) +35/shape_one_way = false +35/shape_one_way_margin = 1.0 +35/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 42 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +35/z_index = 0 diff --git a/objects/characters/player.gd b/objects/characters/player.gd index a7ec011..ede5e2c 100644 --- a/objects/characters/player.gd +++ b/objects/characters/player.gd @@ -27,12 +27,12 @@ const ANIMATIONS = { "jump": { "animation": "jump", "transistion": "jump", - "blocks": ["idle", "run", "fall_start", "fall", "fall_end"] + "blocks": ["idle", "run", "fall_start", "fall", "fall_end", "jump_start"] }, "jump_end": { "animation": "jump_end", "transistion": "idle", - "blocks": ["idle", "run", "fall_start", "fall", "fall_end"] + "blocks": ["idle", "run", "fall_start", "fall", "fall_end", "jump"] }, "fall_start": { "animation": "fall_start", @@ -74,6 +74,10 @@ func _ready(): $Camera2D.add_child(background_scene.instance()) $Sprite.connect("animation_finished", self, "_next_player_state") $Sprite.animation = ANIMATIONS[player_state]['animation'] + $Camera2D.limit_left = level.camera_limit_left + $Camera2D.limit_right = level.camera_limit_right + $Camera2D.limit_top = level.camera_limit_top + $Camera2D.limit_bottom = level.camera_limit_bottom func _physics_process(delta): if velocity.y > 1 and not is_on_floor(): diff --git a/objects/characters/player.tscn b/objects/characters/player.tscn index dfc17be..8c07df2 100644 --- a/objects/characters/player.tscn +++ b/objects/characters/player.tscn @@ -4,7 +4,7 @@ [ext_resource path="res://objects/characters/player.gd" type="Script" id=11] [sub_resource type="CapsuleShape2D" id=4] -radius = 166.75 +radius = 164.75 height = 138.75 [sub_resource type="RectangleShape2D" id=3] @@ -14,12 +14,14 @@ extents = Vector2( 190.5, 100.625 ) radius = 79.0 [node name="Player" type="KinematicBody2D"] +z_index = 10 collision_mask = 4 script = ExtResource( 11 ) [node name="Sprite" type="AnimatedSprite" parent="."] frames = ExtResource( 1 ) animation = "idle" +frame = 5 playing = true __meta__ = { "_edit_lock_": true diff --git a/objects/coin/coin.gd b/objects/coin/coin.gd index f7ecbd2..0201efa 100644 --- a/objects/coin/coin.gd +++ b/objects/coin/coin.gd @@ -21,7 +21,7 @@ func _ready(): func _on_Player_entered(body): if visible: - body.coin_collected(value) + GlobalState.coins += value $SoundCollected.play() hide() diff --git a/objects/door/assets/door1.svg b/objects/door/assets/door1.svg new file mode 100644 index 0000000..887b39c --- /dev/null +++ b/objects/door/assets/door1.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + diff --git a/objects/door/assets/door1.svg.import b/objects/door/assets/door1.svg.import new file mode 100644 index 0000000..a6c466d --- /dev/null +++ b/objects/door/assets/door1.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/door1.svg-7b950b3e71870c053e8c7c058349c1d4.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://objects/door/assets/door1.svg" +dest_files=[ "res://.import/door1.svg-7b950b3e71870c053e8c7c058349c1d4.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/objects/door/assets/door2.svg b/objects/door/assets/door2.svg new file mode 100644 index 0000000..956cbd8 --- /dev/null +++ b/objects/door/assets/door2.svg @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/objects/door/assets/door2.svg.import b/objects/door/assets/door2.svg.import new file mode 100644 index 0000000..dca2b7d --- /dev/null +++ b/objects/door/assets/door2.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/door2.svg-6da9f46e6f5bf0dc7cb4a271da181ce6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://objects/door/assets/door2.svg" +dest_files=[ "res://.import/door2.svg-6da9f46e6f5bf0dc7cb4a271da181ce6.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/objects/door/assets/door3.svg b/objects/door/assets/door3.svg new file mode 100644 index 0000000..7ff89f5 --- /dev/null +++ b/objects/door/assets/door3.svg @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/objects/door/assets/door3.svg.import b/objects/door/assets/door3.svg.import new file mode 100644 index 0000000..d9e6192 --- /dev/null +++ b/objects/door/assets/door3.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/door3.svg-03cf9b8a2c92f74709b97c4670a65cd7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://objects/door/assets/door3.svg" +dest_files=[ "res://.import/door3.svg-03cf9b8a2c92f74709b97c4670a65cd7.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/objects/door/assets/door4.svg b/objects/door/assets/door4.svg new file mode 100644 index 0000000..8201413 --- /dev/null +++ b/objects/door/assets/door4.svg @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/objects/door/assets/door4.svg.import b/objects/door/assets/door4.svg.import new file mode 100644 index 0000000..4c6b00b --- /dev/null +++ b/objects/door/assets/door4.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/door4.svg-183a3f0fd353dbddb85bdc8a8cce994f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://objects/door/assets/door4.svg" +dest_files=[ "res://.import/door4.svg-183a3f0fd353dbddb85bdc8a8cce994f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/objects/door/assets/door5.svg b/objects/door/assets/door5.svg new file mode 100644 index 0000000..397cdac --- /dev/null +++ b/objects/door/assets/door5.svg @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/objects/door/assets/door5.svg.import b/objects/door/assets/door5.svg.import new file mode 100644 index 0000000..74581c9 --- /dev/null +++ b/objects/door/assets/door5.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/door5.svg-08ad82c41d697371ba81d476edf11f11.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://objects/door/assets/door5.svg" +dest_files=[ "res://.import/door5.svg-08ad82c41d697371ba81d476edf11f11.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/objects/door/assets/locked.ogg b/objects/door/assets/locked.ogg new file mode 100644 index 0000000000000000000000000000000000000000..5970e434be09f90030dbe4832429af35b2a0a0f7 GIT binary patch literal 8500 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 CthEFH literal 0 HcmV?d00001 diff --git a/objects/door/assets/locked.ogg.import b/objects/door/assets/locked.ogg.import new file mode 100644 index 0000000..e7957ad --- /dev/null +++ b/objects/door/assets/locked.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/locked.ogg-6600d8abf71ee93d9e6beebe511c5004.oggstr" + +[deps] + +source_file="res://objects/door/assets/locked.ogg" +dest_files=[ "res://.import/locked.ogg-6600d8abf71ee93d9e6beebe511c5004.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/objects/door/assets/open.ogg b/objects/door/assets/open.ogg new file mode 100644 index 0000000000000000000000000000000000000000..6bc1ab6a6d2ec2719be560f99c57f8dea3a86d8d GIT binary patch literal 20947 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 + + + + + + + + + + + + + + + + + + diff --git a/objects/key/assets/yellow.svg.import b/objects/key/assets/yellow.svg.import new file mode 100644 index 0000000..a51726f --- /dev/null +++ b/objects/key/assets/yellow.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/yellow.svg-8fcc8ed0aa1a775183202b241e6753c7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://objects/key/assets/yellow.svg" +dest_files=[ "res://.import/yellow.svg-8fcc8ed0aa1a775183202b241e6753c7.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/objects/key/key.gd b/objects/key/key.gd new file mode 100644 index 0000000..dc34c20 --- /dev/null +++ b/objects/key/key.gd @@ -0,0 +1,14 @@ +extends StaticBody2D + +func _ready(): + $Sprite/AnimationPlayer.play("default") + +func _on_PlayerCollision(body): + if visible: + GlobalState.keys['yellow'] = true + $SoundCollected.play() + hide() + +func _on_SoundCollected_finished(): + queue_free() + get_parent().remove_child(self) diff --git a/objects/key/key.tscn b/objects/key/key.tscn new file mode 100644 index 0000000..6d7a475 --- /dev/null +++ b/objects/key/key.tscn @@ -0,0 +1,52 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://objects/key/assets/yellow.svg" type="Texture" id=1] +[ext_resource path="res://objects/key/key.gd" type="Script" id=2] +[ext_resource path="res://objects/key/assets/key.wav" type="AudioStream" id=3] + +[sub_resource type="Animation" id=1] +resource_name = "default" +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath(".:offset") +tracks/0/interp = 1 +tracks/0/loop_wrap = false +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 0.5, 0.5, 0 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 0, -10 ), Vector2( 0, 0 ) ] +} + +[sub_resource type="CircleShape2D" id=2] +radius = 35.0 + +[node name="Key" type="StaticBody2D"] +z_index = -10 +collision_layer = 8 +collision_mask = 0 +script = ExtResource( 2 ) + +[node name="Sprite" type="Sprite" parent="."] +texture = ExtResource( 1 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Sprite"] +anims/default = SubResource( 1 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource( 2 ) + +[node name="PlayerCollision" type="Area2D" parent="."] +collision_layer = 8 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="PlayerCollision"] +shape = SubResource( 2 ) + +[node name="SoundCollected" type="AudioStreamPlayer2D" parent="."] +stream = ExtResource( 3 ) +volume_db = -12.0 + +[connection signal="body_entered" from="PlayerCollision" to="." method="_on_PlayerCollision"] +[connection signal="finished" from="SoundCollected" to="." method="_on_SoundCollected_finished"] diff --git a/project.godot b/project.godot index 56c5a92..0619817 100644 --- a/project.godot +++ b/project.godot @@ -14,6 +14,10 @@ config/name="Flopsy the Dog" run/main_scene="res://scenes/main.tscn" config/icon="res://common/player_head.png" +[autoload] + +GlobalState="*res://common/global_state.gd" + [display] window/size/width=1920 diff --git a/scenes/hud/assets/key_yellow.svg b/scenes/hud/assets/key_yellow.svg new file mode 100644 index 0000000..f383f24 --- /dev/null +++ b/scenes/hud/assets/key_yellow.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + diff --git a/scenes/hud/assets/key_yellow.svg.import b/scenes/hud/assets/key_yellow.svg.import new file mode 100644 index 0000000..a9b3c05 --- /dev/null +++ b/scenes/hud/assets/key_yellow.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/key_yellow.svg-baabc1c5d33c1c7d4dd1114d21d40e4d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/hud/assets/key_yellow.svg" +dest_files=[ "res://.import/key_yellow.svg-baabc1c5d33c1c7d4dd1114d21d40e4d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/scenes/hud.gd b/scenes/hud/hud.gd similarity index 80% rename from scenes/hud.gd rename to scenes/hud/hud.gd index fa5e92c..c5f5efd 100644 --- a/scenes/hud.gd +++ b/scenes/hud/hud.gd @@ -6,12 +6,13 @@ export var font_color : Color = Color(0, 0, 0) func _ready(): set_font_color(font_color) +func _process(delta): + $HUD_Items/ScoreLabel.text = str(GlobalState.coins) + $HUD_Items/PlayerItems/Key_Yellow.visible = GlobalState.keys['yellow'] + func set_font_color(color: Color): font_color = color $HUD_Items/ScoreLabel.add_color_override("font_color", font_color) - -func set_score(value): - $HUD_Items/ScoreLabel.text = str(value) func scene_fadeout(): $SceneTransition/Animation.play_backwards("Fade") diff --git a/scenes/hud.tscn b/scenes/hud/hud.tscn similarity index 77% rename from scenes/hud.tscn rename to scenes/hud/hud.tscn index f7982a8..d38a73b 100644 --- a/scenes/hud.tscn +++ b/scenes/hud/hud.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=6 format=2] +[gd_scene load_steps=7 format=2] [ext_resource path="res://common/fonts/DSEG14Classic-Bold.ttf" type="DynamicFontData" id=1] -[ext_resource path="res://scenes/hud.gd" type="Script" id=2] +[ext_resource path="res://scenes/hud/hud.gd" type="Script" id=2] [ext_resource path="res://objects/coin/assets/gold_1.png" type="Texture" id=3] +[ext_resource path="res://scenes/hud/assets/key_yellow.svg" type="Texture" id=4] [sub_resource type="DynamicFont" id=1] size = 64 @@ -52,6 +53,17 @@ margin_bottom = 88.0 rect_scale = Vector2( 0.7, 0.7 ) texture = ExtResource( 3 ) +[node name="PlayerItems" type="HBoxContainer" parent="HUD_Items"] +margin_left = 20.0 +margin_top = 20.0 +margin_right = 40.0 +margin_bottom = 40.0 + +[node name="Key_Yellow" type="TextureRect" parent="HUD_Items/PlayerItems"] +margin_right = 43.0 +margin_bottom = 39.0 +texture = ExtResource( 4 ) + [node name="SceneTransition" type="ColorRect" parent="."] modulate = Color( 1, 1, 1, 0 ) anchor_right = 1.0 diff --git a/scenes/levels/01/CollidingMountain.tscn b/scenes/levels/01/CollidingMountain.tscn new file mode 100644 index 0000000..4d6f253 --- /dev/null +++ b/scenes/levels/01/CollidingMountain.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://scenes/levels/01/assets/mountain_01.svg" type="Texture" id=1] + +[sub_resource type="RectangleShape2D" id=3] +extents = Vector2( 105, 319 ) + +[node name="CollidingMountain" type="StaticBody2D"] +z_index = -5 +collision_layer = 4 +collision_mask = 0 + +[node name="Sprite" type="Sprite" parent="."] +position = Vector2( 5845, 805 ) +texture = ExtResource( 1 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2( 5845, 805 ) +shape = SubResource( 3 ) diff --git a/scenes/levels/01/assets/mountain_01.svg b/scenes/levels/01/assets/mountain_01.svg new file mode 100644 index 0000000..78ef3b2 --- /dev/null +++ b/scenes/levels/01/assets/mountain_01.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + diff --git a/scenes/levels/01/assets/mountain_01.svg.import b/scenes/levels/01/assets/mountain_01.svg.import new file mode 100644 index 0000000..de3eb32 --- /dev/null +++ b/scenes/levels/01/assets/mountain_01.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mountain_01.svg-98168bc0a7812a46ed71e30448ec7ee4.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/levels/01/assets/mountain_01.svg" +dest_files=[ "res://.import/mountain_01.svg-98168bc0a7812a46ed71e30448ec7ee4.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/scenes/levels/01/interlude_01.tscn b/scenes/levels/01/interlude_01.tscn index 2cfbb91..7f08d50 100644 --- a/scenes/levels/01/interlude_01.tscn +++ b/scenes/levels/01/interlude_01.tscn @@ -242,7 +242,7 @@ cell_size = Vector2( 70, 70 ) collision_layer = 4 collision_mask = 0 format = 1 -tile_data = PoolIntArray( -65485, 2, 1, -65484, 2, 2, -65483, 2, 2, -65482, 2, 2, -65481, 2, 3, 131114, 2, 1, 131115, 2, 2, 131116, 2, 2, 131117, 2, 2, 131118, 2, 2, 131119, 2, 2, 131120, 2, 3, 917503, 2, 1, 851968, 2, 2, 851969, 2, 2, 851970, 2, 2, 851971, 2, 2, 851972, 2, 2, 851973, 2, 2, 851974, 2, 2, 851975, 2, 2, 851976, 2, 2, 851977, 2, 2, 851978, 2, 2, 851979, 2, 2, 851980, 2, 2, 851981, 2, 2, 851982, 2, 2, 851983, 2, 2, 851984, 2, 2, 851985, 2, 2, 851986, 2, 2, 851987, 2, 2, 851988, 2, 2, 851989, 2, 2, 851990, 2, 2, 851991, 2, 2, 851992, 2, 2, 851993, 2, 2, 851994, 2, 2, 851995, 2, 2, 851996, 2, 3 ) +tile_data = PoolIntArray( -65485, 2, 1, -65484, 2, 2, -65483, 2, 2, -65482, 2, 2, -65481, 2, 3, 131114, 2, 1, 131115, 2, 2, 131116, 2, 2, 131117, 2, 2, 131118, 2, 2, 131119, 2, 2, 131120, 2, 3, 917503, 0, 1, 851968, 0, 2, 851969, 0, 2, 851970, 0, 2, 851971, 0, 2, 851972, 0, 2, 851973, 0, 2, 851974, 0, 2, 851975, 0, 2, 851976, 0, 2, 851977, 0, 2, 851978, 0, 2, 851979, 0, 2, 851980, 0, 2, 851981, 0, 2, 851982, 0, 2, 851983, 0, 2, 851984, 0, 2, 851985, 0, 2, 851986, 0, 2, 851987, 0, 2, 851988, 0, 2, 851989, 0, 2, 851990, 0, 2, 851991, 0, 2, 851992, 0, 2, 851993, 0, 2, 851994, 0, 2, 851995, 0, 2, 851996, 0, 3 ) [node name="Flake" parent="CanvasLayer" instance=ExtResource( 5 )] position = Vector2( 1691, 686 ) diff --git a/scenes/levels/01/level_01.tscn b/scenes/levels/01/level_01.tscn index 60ab9a4..b70b710 100644 --- a/scenes/levels/01/level_01.tscn +++ b/scenes/levels/01/level_01.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=9 format=2] +[gd_scene load_steps=14 format=2] [ext_resource path="res://scenes/levels/01/background_01.tscn" type="PackedScene" id=1] [ext_resource path="res://scenes/levels/01/level_01.gd" type="Script" id=2] @@ -8,10 +8,33 @@ [ext_resource path="res://objects/characters/monsters/01/monster_01.tscn" type="PackedScene" id=6] [ext_resource path="res://objects/characters/player.tscn" type="PackedScene" id=7] [ext_resource path="res://objects/lift/lift.tscn" type="PackedScene" id=8] +[ext_resource path="res://objects/key/key.tscn" type="PackedScene" id=9] +[ext_resource path="res://objects/door/door.tscn" type="PackedScene" id=10] +[ext_resource path="res://scenes/levels/01/CollidingMountain.tscn" type="PackedScene" id=11] + +[sub_resource type="Gradient" id=1] +colors = PoolColorArray( 0.0431373, 0.0431373, 0.0431373, 0, 0, 0, 0, 1 ) + +[sub_resource type="GradientTexture" id=2] +gradient = SubResource( 1 ) +width = 500 [node name="Level 01" type="Node2D"] script = ExtResource( 2 ) bgm_path = "res://scenes/levels/01/assets/bgm.ogg" +camera_limit_right = 6195 + +[node name="TextureRect" type="TextureRect" parent="."] +margin_left = 5356.0 +margin_top = 772.0 +margin_right = 5634.0 +margin_bottom = 1788.0 +rect_rotation = 90.0 +texture = SubResource( 2 ) +expand = true + +[node name="Door" parent="." instance=ExtResource( 10 )] +position = Vector2( 5355, 945 ) [node name="TileMap" type="TileMap" parent="."] tile_set = ExtResource( 4 ) @@ -19,7 +42,7 @@ cell_size = Vector2( 70, 70 ) collision_layer = 4 collision_mask = 0 format = 1 -tile_data = PoolIntArray( -393183, 3, 0, -327641, 3, 0, -262100, 3, 0, -262094, 3, 0, 524305, 1, 0, 524306, 1, 1, 524307, 1, 1, 524308, 1, 1, 524309, 1, 2, 524332, 13, 1, 524333, 13, 2, 524334, 13, 2, 524335, 13, 2, 524336, 13, 2, 524337, 13, 2, 524338, 13, 2, 524339, 13, 3, 589835, 1, 0, 589836, 1, 1, 589837, 1, 1, 589838, 1, 2, 589864, 3, 0, 589868, 5, 0, 589869, 5, 0, 589870, 5, 0, 589871, 5, 0, 589872, 5, 0, 589873, 5, 0, 589874, 5, 0, 589875, 5, 0, 655396, 3, 0, 655404, 5, 0, 655405, 5, 0, 655406, 5, 0, 655407, 5, 0, 655408, 5, 0, 655409, 5, 0, 655410, 5, 0, 655411, 5, 0, 720925, 23, 0, 720926, 22, 0, 720940, 5, 0, 720941, 5, 0, 720942, 5, 0, 720943, 5, 0, 720944, 5, 0, 720945, 5, 0, 720946, 5, 0, 720947, 5, 0, 786449, 0, 1, 786450, 0, 2, 786451, 0, 3, 786456, 22, 0, 786459, 1, 0, 786460, 4, 0, 786461, 4, 0, 786462, 4, 0, 786463, 4, 0, 786464, 7, 0, 786476, 5, 0, 786477, 16, 0, 786479, 27, 0, 786480, 27, 0, 786482, 17, 0, 786483, 5, 0, 851971, 20, 0, 851973, 23, 0, 851975, 22, 0, 851977, 24, 0, 851979, 20, 0, 851981, 22, 0, 851990, 9, 0, 851991, 4, 0, 851992, 15, 0, 851996, 5, 0, 851997, 5, 0, 851998, 5, 0, 851999, 5, 0, 852000, 8, 0, 852001, 7, 0, 852012, 25, 0, 852019, 25, 0, 983039, 4, 0, 917504, 4, 0, 917505, 4, 0, 917506, 4, 0, 917507, 4, 0, 917508, 4, 0, 917509, 4, 0, 917510, 4, 0, 917511, 4, 0, 917512, 4, 0, 917513, 4, 0, 917514, 4, 0, 917515, 4, 0, 917516, 4, 0, 917517, 4, 0, 917518, 4, 0, 917519, 7, 0, 917521, 23, 0, 917523, 20, 0, 917525, 9, 0, 917526, 10, 0, 917527, 5, 0, 917528, 5, 0, 917529, 11, 0, 917530, 11, 0, 917531, 11, 0, 917532, 5, 0, 917533, 5, 0, 917534, 5, 0, 917535, 5, 0, 917536, 5, 0, 917537, 8, 0, 917538, 7, 0, 917540, 22, 0, 917542, 20, 0, 1048575, 5, 0, 983040, 5, 0, 983041, 5, 0, 983042, 5, 0, 983043, 5, 0, 983044, 5, 0, 983045, 5, 0, 983046, 5, 0, 983047, 5, 0, 983048, 5, 0, 983049, 5, 0, 983050, 5, 0, 983051, 5, 0, 983052, 5, 0, 983053, 5, 0, 983054, 5, 0, 983055, 8, 0, 983056, 4, 0, 983057, 4, 0, 983058, 4, 0, 983059, 4, 0, 983060, 4, 0, 983061, 10, 0, 983062, 5, 0, 983063, 5, 0, 983064, 5, 0, 983065, 12, 0, 983066, 12, 0, 983067, 12, 0, 983068, 5, 0, 983069, 5, 0, 983070, 5, 0, 983071, 5, 0, 983072, 5, 0, 983073, 5, 0, 983074, 8, 0, 983075, 4, 0, 983076, 4, 0, 983077, 4, 0, 983078, 4, 0, 983079, 4, 0, 983080, 4, 0, 983081, 4, 0, 983082, 4, 0, 983083, 4, 0, 983084, 4, 0, 983085, 4, 0, 983086, 4, 0, 983087, 4, 0, 983088, 4, 0, 983089, 4, 0, 983090, 4, 0, 983091, 4, 0, 983092, 4, 0, 983093, 4, 0, 983094, 4, 0, 983095, 4, 0, 983096, 4, 0 ) +tile_data = PoolIntArray( -1310628, 5, 0, -1245092, 5, 0, -1179556, 5, 0, -1114020, 5, 0, -1048484, 5, 0, -982948, 5, 0, -917412, 5, 0, -851876, 5, 0, -786340, 5, 0, -720804, 5, 0, -655277, 24, 0, -655268, 5, 0, -589742, 3, 1, -589741, 3, 65536, -589740, 3, 65536, -589739, 3, 65536, -589738, 3, 65536, -589737, 3, 65537, -589732, 5, 0, -524263, 3, 0, -524196, 5, 0, -458740, 3, 0, -458731, 3, 0, -458674, 3, 0, -458660, 5, 0, -393188, 3, 0, -393183, 3, 0, -393124, 5, 0, -327664, 3, 0, -327641, 3, 0, -327630, 22, 0, -327588, 5, 0, -262100, 3, 0, -262094, 3, 0, -262072, 32, 0, -262071, 4, 0, -262070, 33, 0, -262052, 5, 0, -196536, 29, 0, -196535, 5, 0, -196534, 30, 0, -196516, 5, 0, -131000, 29, 0, -130999, 5, 0, -130998, 30, 0, -130980, 5, 0, -65474, 3, 0, -65464, 29, 0, -65463, 5, 0, -65462, 30, 0, -65460, 3, 0, -65444, 5, 0, 65524, 5, 0, 72, 29, 0, 73, 5, 0, 74, 30, 0, 92, 5, 0, 131060, 5, 0, 65602, 3, 0, 65608, 29, 0, 65609, 5, 0, 65610, 30, 0, 65628, 5, 0, 196596, 5, 0, 131144, 29, 0, 131145, 5, 0, 131146, 30, 0, 131151, 3, 0, 131164, 5, 0, 262132, 5, 0, 196680, 29, 0, 196681, 5, 0, 196682, 30, 0, 196700, 5, 0, 327668, 5, 0, 262216, 29, 0, 262217, 5, 0, 262218, 30, 0, 262220, 22, 0, 262236, 5, 0, 393204, 5, 0, 327752, 29, 0, 327753, 5, 0, 327754, 30, 0, 327756, 3, 0, 327772, 5, 0, 458740, 5, 0, 393288, 29, 0, 393289, 5, 0, 393290, 30, 0, 393308, 5, 0, 524276, 5, 0, 458802, 23, 0, 458824, 29, 0, 458825, 5, 0, 458826, 30, 0, 458831, 23, 0, 458844, 5, 0, 589812, 5, 0, 524305, 1, 0, 524306, 1, 1, 524307, 1, 1, 524308, 1, 1, 524309, 1, 2, 524332, 13, 1, 524333, 13, 2, 524334, 13, 2, 524335, 13, 2, 524336, 13, 2, 524337, 13, 2, 524338, 13, 2, 524339, 13, 3, 524360, 29, 0, 524361, 5, 0, 524362, 30, 0, 524367, 3, 0, 524373, 4, 0, 524380, 5, 0, 655348, 5, 0, 589835, 1, 0, 589836, 1, 1, 589837, 1, 1, 589838, 1, 2, 589864, 3, 0, 589868, 5, 0, 589869, 5, 0, 589870, 5, 0, 589871, 5, 0, 589872, 5, 0, 589873, 5, 0, 589874, 5, 0, 589875, 5, 0, 589887, 23, 0, 589893, 22, 0, 589895, 9, 0, 589896, 10, 0, 589897, 5, 0, 589898, 8, 0, 589899, 7, 0, 589909, 5, 0, 589914, 24, 0, 589916, 5, 0, 720884, 5, 0, 655396, 3, 0, 655404, 5, 0, 655405, 5, 0, 655406, 5, 0, 655407, 5, 0, 655408, 5, 0, 655409, 5, 0, 655410, 5, 0, 655411, 5, 0, 655421, 9, 0, 655422, 4, 0, 655423, 15, 0, 655427, 14, 0, 655428, 4, 0, 655429, 4, 0, 655430, 4, 0, 655431, 10, 0, 655432, 5, 0, 655433, 5, 0, 655434, 5, 0, 655435, 8, 0, 655436, 7, 0, 655445, 5, 0, 655449, 4, 0, 655450, 4, 0, 655451, 7, 0, 655452, 5, 0, 786420, 5, 0, 720925, 23, 0, 720926, 22, 0, 720940, 5, 0, 720941, 5, 0, 720942, 5, 0, 720943, 5, 0, 720944, 5, 0, 720945, 5, 0, 720946, 5, 0, 720947, 5, 0, 720956, 9, 0, 720957, 10, 0, 720958, 5, 0, 720959, 5, 0, 720963, 5, 0, 720964, 5, 0, 720965, 5, 0, 720966, 5, 0, 720967, 5, 0, 720968, 5, 0, 720969, 5, 0, 720970, 5, 0, 720971, 5, 0, 720972, 30, 0, 720981, 5, 0, 720985, 5, 0, 720986, 5, 0, 720987, 8, 0, 720988, 5, 0, 851956, 5, 0, 786449, 0, 1, 786450, 0, 2, 786451, 0, 3, 786456, 22, 0, 786459, 1, 0, 786460, 4, 0, 786461, 4, 0, 786462, 4, 0, 786463, 4, 0, 786464, 7, 0, 786476, 5, 0, 786477, 16, 0, 786479, 27, 0, 786480, 27, 0, 786482, 17, 0, 786483, 5, 0, 786491, 9, 0, 786492, 10, 0, 786493, 5, 0, 786494, 25, 0, 786495, 25, 0, 786498, 1, 0, 786499, 5, 0, 786500, 5, 0, 786501, 5, 0, 786502, 5, 0, 786503, 5, 0, 786504, 5, 0, 786505, 5, 0, 786506, 5, 0, 786507, 5, 0, 786508, 30, 0, 786511, 3, 0, 786517, 5, 0, 786521, 5, 0, 786522, 5, 0, 786523, 5, 0, 786524, 5, 0, 917492, 5, 0, 851971, 20, 0, 851973, 23, 0, 851975, 22, 0, 851977, 24, 0, 851979, 20, 0, 851981, 22, 0, 851990, 9, 0, 851991, 4, 0, 851992, 15, 0, 851996, 5, 0, 851997, 5, 0, 851998, 5, 0, 851999, 5, 0, 852000, 8, 0, 852001, 7, 0, 852012, 25, 0, 852019, 25, 0, 852026, 9, 0, 852027, 10, 0, 852028, 5, 0, 852029, 5, 0, 852035, 25, 0, 852036, 25, 0, 852037, 25, 0, 852038, 25, 0, 852039, 25, 0, 852040, 25, 0, 852041, 25, 0, 852042, 25, 0, 852043, 25, 0, 852044, 25, 0, 852053, 5, 0, 852054, 4, 0, 852055, 4, 0, 852056, 4, 0, 852057, 5, 0, 852058, 5, 0, 852059, 5, 0, 852060, 5, 0, 983028, 5, 0, 983029, 4, 0, 983030, 4, 0, 983031, 4, 0, 983032, 4, 0, 983033, 4, 0, 983034, 4, 0, 983035, 4, 0, 983036, 4, 0, 983037, 4, 0, 983038, 4, 0, 983039, 4, 0, 917504, 4, 0, 917505, 4, 0, 917506, 4, 0, 917507, 4, 0, 917508, 4, 0, 917509, 4, 0, 917510, 4, 0, 917511, 4, 0, 917512, 4, 0, 917513, 4, 0, 917514, 4, 0, 917515, 4, 0, 917516, 4, 0, 917517, 4, 0, 917518, 4, 0, 917519, 7, 0, 917521, 23, 0, 917523, 20, 0, 917525, 9, 0, 917526, 10, 0, 917527, 5, 0, 917528, 5, 0, 917529, 11, 0, 917530, 11, 0, 917531, 11, 0, 917532, 5, 0, 917533, 5, 0, 917534, 5, 0, 917535, 5, 0, 917536, 5, 0, 917537, 8, 0, 917538, 7, 0, 917540, 22, 0, 917542, 20, 0, 917553, 24, 0, 917561, 9, 0, 917562, 10, 0, 917563, 5, 0, 917564, 5, 0, 917565, 5, 0, 917567, 23, 0, 917570, 28, 0, 917574, 24, 0, 917576, 28, 0, 917582, 22, 0, 917589, 5, 0, 917590, 5, 0, 917591, 5, 0, 917592, 5, 0, 917593, 5, 0, 917594, 5, 0, 917595, 5, 0, 917596, 5, 0, 1048564, 5, 0, 1048565, 5, 0, 1048566, 5, 0, 1048567, 5, 0, 1048568, 5, 0, 1048569, 5, 0, 1048570, 5, 0, 1048571, 5, 0, 1048572, 5, 0, 1048573, 5, 0, 1048574, 5, 0, 1048575, 5, 0, 983040, 5, 0, 983041, 5, 0, 983042, 5, 0, 983043, 5, 0, 983044, 5, 0, 983045, 5, 0, 983046, 5, 0, 983047, 5, 0, 983048, 5, 0, 983049, 5, 0, 983050, 5, 0, 983051, 5, 0, 983052, 5, 0, 983053, 5, 0, 983054, 5, 0, 983055, 8, 0, 983056, 4, 0, 983057, 4, 0, 983058, 4, 0, 983059, 4, 0, 983060, 4, 0, 983061, 10, 0, 983062, 5, 0, 983063, 5, 0, 983064, 5, 0, 983065, 12, 0, 983066, 12, 0, 983067, 12, 0, 983068, 5, 0, 983069, 5, 0, 983070, 5, 0, 983071, 5, 0, 983072, 5, 0, 983073, 5, 0, 983074, 8, 0, 983075, 4, 0, 983076, 4, 0, 983077, 4, 0, 983078, 4, 0, 983079, 4, 0, 983080, 4, 0, 983081, 4, 0, 983082, 4, 0, 983083, 4, 0, 983084, 4, 0, 983085, 4, 0, 983086, 4, 0, 983087, 4, 0, 983088, 4, 0, 983089, 4, 0, 983090, 4, 0, 983091, 4, 0, 983092, 4, 0, 983093, 4, 0, 983094, 4, 0, 983095, 4, 0, 983096, 4, 0, 983097, 10, 0, 983098, 5, 0, 983099, 5, 0, 983100, 5, 0, 983101, 5, 0, 983102, 5, 0, 983103, 5, 0, 983104, 5, 0, 983105, 5, 0, 983106, 5, 0, 983107, 5, 0, 983108, 5, 0, 983109, 5, 0, 983110, 5, 0, 983111, 5, 0, 983112, 5, 0, 983113, 5, 0, 983114, 5, 0, 983115, 5, 0, 983116, 5, 0, 983117, 4, 0, 983118, 4, 0, 983119, 4, 0, 983120, 4, 0, 983121, 4, 0, 983122, 4, 0, 983123, 4, 0, 983124, 4, 0, 983125, 5, 0, 983126, 5, 0, 983127, 5, 0, 983128, 5, 0, 983129, 5, 0, 983130, 5, 0, 983131, 5, 0, 983132, 5, 0, 1114100, 5, 0, 1114101, 5, 0, 1114102, 5, 0, 1114103, 5, 0, 1114104, 5, 0, 1114105, 5, 0, 1114106, 5, 0, 1114107, 5, 0, 1114108, 5, 0, 1114109, 5, 0, 1114110, 5, 0, 1114111, 5, 0, 1048576, 5, 0, 1048577, 5, 0, 1048578, 5, 0, 1048579, 5, 0, 1048580, 5, 0, 1048581, 5, 0, 1048582, 5, 0, 1048583, 5, 0, 1048584, 5, 0, 1048585, 5, 0, 1048586, 5, 0, 1048587, 5, 0, 1048588, 5, 0, 1048589, 5, 0, 1048590, 5, 0, 1048591, 5, 0, 1048592, 5, 0, 1048593, 5, 0, 1048594, 5, 0, 1048595, 5, 0, 1048596, 5, 0, 1048597, 5, 0, 1048598, 5, 0, 1048599, 5, 0, 1048600, 5, 0, 1048601, 12, 0, 1048602, 12, 0, 1048603, 12, 0, 1048604, 5, 0, 1048605, 5, 0, 1048606, 5, 0, 1048607, 5, 0, 1048608, 5, 0, 1048609, 5, 0, 1048610, 5, 0, 1048611, 5, 0, 1048612, 5, 0, 1048613, 5, 0, 1048614, 5, 0, 1048615, 5, 0, 1048616, 5, 0, 1048617, 5, 0, 1048618, 5, 0, 1048619, 5, 0, 1048620, 5, 0, 1048621, 5, 0, 1048622, 5, 0, 1048623, 5, 0, 1048624, 5, 0, 1048625, 5, 0, 1048626, 5, 0, 1048627, 5, 0, 1048628, 5, 0, 1048629, 5, 0, 1048630, 5, 0, 1048631, 5, 0, 1048632, 5, 0, 1048633, 5, 0, 1048634, 5, 0, 1048635, 5, 0, 1048636, 5, 0, 1048637, 5, 0, 1048638, 5, 0, 1048639, 5, 0, 1048640, 5, 0, 1048641, 5, 0, 1048642, 5, 0, 1048643, 5, 0, 1048644, 5, 0, 1048645, 5, 0, 1048646, 5, 0, 1048647, 5, 0, 1048648, 5, 0, 1048649, 5, 0, 1048650, 5, 0, 1048651, 5, 0, 1048652, 5, 0, 1048653, 5, 0, 1048654, 5, 0, 1048655, 5, 0, 1048656, 5, 0, 1048657, 5, 0, 1048658, 5, 0, 1048659, 5, 0, 1048660, 5, 0, 1048661, 5, 0, 1048662, 5, 0, 1048663, 5, 0, 1048664, 5, 0, 1048665, 5, 0, 1048666, 5, 0, 1048667, 5, 0, 1048668, 5, 0, 1179636, 5, 0, 1179637, 5, 0, 1179638, 5, 0, 1179639, 5, 0, 1179640, 5, 0, 1179641, 5, 0, 1179642, 5, 0, 1179643, 5, 0, 1179644, 5, 0, 1179645, 5, 0, 1179646, 5, 0, 1179647, 5, 0, 1114112, 4, 0, 1114113, 4, 0, 1114114, 5, 0, 1114115, 5, 0, 1114116, 5, 0, 1114117, 5, 0, 1114118, 5, 0, 1114119, 5, 0, 1114120, 4, 0, 1114121, 4, 0, 1114122, 4, 0, 1114123, 4, 0, 1114124, 5, 0, 1114125, 5, 0, 1114126, 5, 0, 1114127, 5, 0, 1114128, 5, 0, 1114129, 5, 0, 1114130, 5, 0, 1114131, 5, 0, 1114132, 5, 0, 1114133, 5, 0, 1114134, 5, 0, 1114135, 5, 0, 1114136, 5, 0, 1114137, 12, 0, 1114138, 12, 0, 1114139, 12, 0, 1114140, 5, 0, 1114141, 5, 0, 1114142, 5, 0, 1114143, 5, 0, 1114144, 5, 0, 1114145, 5, 0, 1114146, 5, 0, 1114147, 5, 0, 1114148, 5, 0, 1114149, 5, 0, 1114150, 5, 0, 1114151, 4, 0, 1114152, 4, 0, 1114153, 4, 0, 1114154, 4, 0, 1114155, 5, 0, 1114156, 5, 0, 1114157, 5, 0, 1114158, 5, 0, 1114159, 5, 0, 1114160, 5, 0, 1114161, 5, 0, 1114162, 5, 0, 1114163, 5, 0, 1114164, 5, 0, 1114165, 5, 0, 1114166, 5, 0, 1114167, 5, 0, 1114168, 5, 0, 1114169, 5, 0, 1114170, 5, 0, 1114171, 5, 0, 1114172, 5, 0, 1114173, 5, 0, 1114174, 5, 0, 1114175, 5, 0, 1114176, 5, 0, 1114177, 5, 0, 1114178, 5, 0, 1114179, 5, 0, 1114180, 5, 0, 1114181, 5, 0, 1114182, 5, 0, 1114183, 5, 0, 1114184, 5, 0, 1114185, 4, 0, 1114186, 4, 0, 1114187, 4, 0, 1114188, 4, 0, 1114189, 4, 0, 1114190, 4, 0, 1114191, 5, 0, 1114192, 5, 0, 1114193, 5, 0, 1114194, 5, 0, 1114195, 5, 0, 1114196, 5, 0, 1114197, 5, 0, 1114198, 5, 0, 1114199, 5, 0, 1114200, 5, 0, 1114201, 5, 0, 1114202, 5, 0, 1114203, 5, 0, 1114204, 5, 0, 1245172, 5, 0, 1245173, 5, 0, 1245174, 5, 0, 1245175, 5, 0, 1245176, 5, 0, 1245177, 5, 0, 1245178, 5, 0, 1245179, 5, 0, 1245180, 5, 0, 1245181, 4, 0, 1245182, 4, 0, 1245183, 4, 0, 1179648, 4, 0, 1179649, 5, 0, 1179650, 5, 0, 1179651, 5, 0, 1179652, 5, 0, 1179653, 5, 0, 1179654, 5, 0, 1179655, 5, 0, 1179656, 5, 0, 1179657, 5, 0, 1179658, 5, 0, 1179659, 5, 0, 1179660, 5, 0, 1179661, 5, 0, 1179662, 5, 0, 1179663, 5, 0, 1179664, 5, 0, 1179665, 5, 0, 1179666, 4, 0, 1179667, 4, 0, 1179668, 4, 0, 1179669, 5, 0, 1179670, 5, 0, 1179671, 5, 0, 1179672, 5, 0, 1179673, 12, 0, 1179674, 12, 0, 1179675, 12, 0, 1179676, 5, 0, 1179677, 5, 0, 1179678, 5, 0, 1179679, 5, 0, 1179680, 5, 0, 1179681, 5, 0, 1179682, 5, 0, 1179683, 5, 0, 1179684, 5, 0, 1179685, 5, 0, 1179686, 5, 0, 1179687, 5, 0, 1179688, 5, 0, 1179689, 5, 0, 1179690, 5, 0, 1179691, 5, 0, 1179692, 5, 0, 1179693, 5, 0, 1179694, 5, 0, 1179695, 5, 0, 1179696, 5, 0, 1179697, 5, 0, 1179698, 5, 0, 1179699, 5, 0, 1179700, 5, 0, 1179701, 5, 0, 1179702, 5, 0, 1179703, 5, 0, 1179704, 5, 0, 1179705, 5, 0, 1179706, 5, 0, 1179707, 4, 0, 1179708, 4, 0, 1179709, 4, 0, 1179710, 5, 0, 1179711, 5, 0, 1179712, 5, 0, 1179713, 5, 0, 1179714, 5, 0, 1179715, 5, 0, 1179716, 5, 0, 1179717, 5, 0, 1179718, 5, 0, 1179719, 5, 0, 1179720, 5, 0, 1179721, 5, 0, 1179722, 5, 0, 1179723, 5, 0, 1179724, 5, 0, 1179725, 5, 0, 1179726, 5, 0, 1179727, 5, 0, 1179728, 5, 0, 1179729, 5, 0, 1179730, 5, 0, 1179731, 5, 0, 1179732, 5, 0, 1179733, 5, 0, 1179734, 5, 0, 1179735, 5, 0, 1179736, 5, 0, 1179737, 5, 0, 1179738, 5, 0, 1179739, 5, 0, 1179740, 5, 0, 1310708, 5, 0, 1310709, 5, 0, 1310710, 5, 0, 1310711, 5, 0, 1310712, 5, 0, 1310713, 5, 0, 1310714, 5, 0, 1310715, 5, 0, 1310716, 5, 0, 1310717, 5, 0, 1310718, 5, 0, 1310719, 5, 0, 1245184, 5, 0, 1245185, 5, 0, 1245186, 5, 0, 1245187, 5, 0, 1245188, 5, 0, 1245189, 5, 0, 1245190, 5, 0, 1245191, 5, 0, 1245192, 5, 0, 1245193, 5, 0, 1245194, 5, 0, 1245195, 5, 0, 1245196, 5, 0, 1245197, 5, 0, 1245198, 5, 0, 1245199, 5, 0, 1245200, 5, 0, 1245201, 5, 0, 1245202, 5, 0, 1245203, 5, 0, 1245204, 5, 0, 1245205, 5, 0, 1245206, 5, 0, 1245207, 5, 0, 1245208, 5, 0, 1245209, 12, 0, 1245210, 12, 0, 1245211, 12, 0, 1245212, 5, 0, 1245213, 5, 0, 1245214, 5, 0, 1245215, 4, 0, 1245216, 4, 0, 1245217, 4, 0, 1245218, 4, 0, 1245219, 5, 0, 1245220, 5, 0, 1245221, 5, 0, 1245222, 5, 0, 1245223, 5, 0, 1245224, 5, 0, 1245225, 5, 0, 1245226, 5, 0, 1245227, 5, 0, 1245228, 5, 0, 1245229, 5, 0, 1245230, 5, 0, 1245231, 5, 0, 1245232, 5, 0, 1245233, 5, 0, 1245234, 5, 0, 1245235, 5, 0, 1245236, 5, 0, 1245237, 5, 0, 1245238, 5, 0, 1245239, 5, 0, 1245240, 5, 0, 1245241, 5, 0, 1245242, 5, 0, 1245243, 5, 0, 1245244, 5, 0, 1245245, 5, 0, 1245246, 5, 0, 1245247, 5, 0, 1245248, 5, 0, 1245249, 5, 0, 1245250, 5, 0, 1245251, 5, 0, 1245252, 5, 0, 1245253, 5, 0, 1245254, 5, 0, 1245255, 5, 0, 1245256, 5, 0, 1245257, 5, 0, 1245258, 5, 0, 1245259, 5, 0, 1245260, 5, 0, 1245261, 5, 0, 1245262, 5, 0, 1245263, 5, 0, 1245264, 5, 0, 1245265, 5, 0, 1245266, 5, 0, 1245267, 5, 0, 1245268, 5, 0, 1245269, 5, 0, 1245270, 5, 0, 1245271, 5, 0, 1245272, 5, 0, 1245273, 5, 0, 1245274, 5, 0, 1245275, 5, 0, 1245276, 5, 0, 1376244, 5, 0, 1376245, 5, 0, 1376246, 5, 0, 1376247, 5, 0, 1376248, 5, 0, 1376249, 5, 0, 1376250, 5, 0, 1376251, 5, 0, 1376252, 5, 0, 1376253, 5, 0, 1376254, 5, 0, 1376255, 5, 0, 1310720, 5, 0, 1310721, 5, 0, 1310722, 5, 0, 1310723, 5, 0, 1310724, 5, 0, 1310725, 5, 0, 1310726, 5, 0, 1310727, 5, 0, 1310728, 5, 0, 1310729, 5, 0, 1310730, 5, 0, 1310731, 5, 0, 1310732, 5, 0, 1310733, 5, 0, 1310734, 5, 0, 1310735, 5, 0, 1310736, 5, 0, 1310737, 5, 0, 1310738, 5, 0, 1310739, 5, 0, 1310740, 5, 0, 1310741, 5, 0, 1310742, 5, 0, 1310743, 5, 0, 1310744, 5, 0, 1310745, 12, 0, 1310746, 12, 0, 1310747, 12, 0, 1310748, 5, 0, 1310749, 5, 0, 1310750, 5, 0, 1310751, 5, 0, 1310752, 5, 0, 1310753, 5, 0, 1310754, 5, 0, 1310755, 5, 0, 1310756, 5, 0, 1310757, 5, 0, 1310758, 5, 0, 1310759, 5, 0, 1310760, 5, 0, 1310761, 5, 0, 1310762, 5, 0, 1310763, 5, 0, 1310764, 5, 0, 1310765, 5, 0, 1310766, 5, 0, 1310767, 5, 0, 1310768, 5, 0, 1310769, 5, 0, 1310770, 5, 0, 1310771, 5, 0, 1310772, 5, 0, 1310773, 5, 0, 1310774, 5, 0, 1310775, 5, 0, 1310776, 5, 0, 1310777, 5, 0, 1310778, 5, 0, 1310779, 5, 0, 1310780, 5, 0, 1310781, 5, 0, 1310782, 5, 0, 1310783, 5, 0, 1310784, 5, 0, 1310785, 5, 0, 1310786, 5, 0, 1310787, 5, 0, 1310788, 5, 0, 1310789, 5, 0, 1310790, 5, 0, 1310791, 5, 0, 1310792, 5, 0, 1310793, 5, 0, 1310794, 5, 0, 1310795, 5, 0, 1310796, 5, 0, 1310797, 5, 0, 1310798, 5, 0, 1310799, 5, 0, 1310800, 5, 0, 1310801, 5, 0, 1310802, 5, 0, 1310803, 5, 0, 1310804, 5, 0, 1310805, 5, 0, 1310806, 5, 0, 1310807, 5, 0, 1310808, 5, 0, 1310809, 5, 0, 1310810, 5, 0, 1310811, 5, 0, 1310812, 5, 0 ) [node name="monster_01" parent="." instance=ExtResource( 6 )] position = Vector2( 1015, 945 ) @@ -38,7 +61,6 @@ position = Vector2( 420, 700 ) [node name="Coin3" parent="." instance=ExtResource( 5 )] position = Vector2( 910, 455 ) -type = 1 [node name="Coin4" parent="." instance=ExtResource( 5 )] position = Vector2( 1295, 420 ) @@ -46,7 +68,6 @@ type = 1 [node name="Coin5" parent="." instance=ExtResource( 5 )] position = Vector2( 1435, 420 ) -type = 2 [node name="Lift" parent="." instance=ExtResource( 8 )] margin_left = 3815.0 @@ -56,29 +77,25 @@ margin_bottom = 685.0 [node name="Coin6" parent="." instance=ExtResource( 5 )] position = Vector2( 3185, 385 ) -type = 1 [node name="Coin7" parent="." instance=ExtResource( 5 )] position = Vector2( 3290, 385 ) -type = 1 [node name="Coin8" parent="." instance=ExtResource( 5 )] position = Vector2( 3360, 245 ) -type = 2 +type = 1 [node name="Coin9" parent="." instance=ExtResource( 5 )] position = Vector2( 3430, 385 ) -type = 1 [node name="Coin10" parent="." instance=ExtResource( 5 )] position = Vector2( 3535, 385 ) -type = 1 [node name="monster_02" parent="." instance=ExtResource( 6 )] position = Vector2( 3360, 525 ) [node name="Flake" parent="." instance=ExtResource( 3 )] -position = Vector2( 5113, 216 ) +position = Vector2( 6090, -700 ) scale = Vector2( 0.2, 0.2 ) reverse_direction = true flake_scene = "res://scenes/levels/01/interlude_01.tscn" @@ -90,5 +107,30 @@ position = Vector2( 3255, 910 ) position = Vector2( 3465, 910 ) [node name="Coin13" parent="." instance=ExtResource( 5 )] -position = Vector2( 2065, -560 ) +position = Vector2( 2170, -630 ) type = 2 + +[node name="Coin14" parent="." instance=ExtResource( 5 )] +position = Vector2( 4655, 0 ) + +[node name="Coin15" parent="." instance=ExtResource( 5 )] +position = Vector2( 4410, 945 ) + +[node name="Key" parent="." instance=ExtResource( 9 )] +position = Vector2( 875, -525 ) + +[node name="Coin16" parent="." instance=ExtResource( 5 )] +position = Vector2( 5145, -385 ) +type = 2 + +[node name="CollidingMountain4" parent="." instance=ExtResource( 11 )] +position = Vector2( 210, -805 ) + +[node name="CollidingMountain3" parent="." instance=ExtResource( 11 )] +position = Vector2( 140, -560 ) + +[node name="CollidingMountain" parent="." instance=ExtResource( 11 )] +position = Vector2( 0, -70 ) + +[node name="CollidingMountain2" parent="." instance=ExtResource( 11 )] +position = Vector2( 280, -210 ) diff --git a/scenes/levels/level.gd b/scenes/levels/level.gd index 2ca9bac..df1ead3 100644 --- a/scenes/levels/level.gd +++ b/scenes/levels/level.gd @@ -4,6 +4,10 @@ export(String, FILE, "*.ogg") var bgm_path export(bool) var hud_visible = true export var hud_color : Color = Color("000000") export var clear_color : Color = Color("cfeffc") +export var camera_limit_left : int = 0 +export var camera_limit_right : int = 10000000 +export var camera_limit_top : int = -10000000 +export var camera_limit_bottom : int = 1080 onready var main = get_parent() diff --git a/scenes/main.gd b/scenes/main.gd index 04b506c..211a615 100644 --- a/scenes/main.gd +++ b/scenes/main.gd @@ -41,16 +41,8 @@ func play_bgm(bgm_path): stream.loop = true $BGM.stream = stream $BGM.play() - -func _set_score(value: int): - score = value - $HUD.set_score(score) - -func add_score(value: int): - _set_score(score + value) func player_died(): $HUD.scene_fadeout() yield(get_tree().create_timer(1.0), "timeout") - _set_score(0) load_level() diff --git a/scenes/main.tscn b/scenes/main.tscn index bb99328..a35042b 100644 --- a/scenes/main.tscn +++ b/scenes/main.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=4 format=2] -[ext_resource path="res://scenes/hud.tscn" type="PackedScene" id=1] +[ext_resource path="res://scenes/hud/hud.tscn" type="PackedScene" id=1] [ext_resource path="res://scenes/main.gd" type="Script" id=3] [sub_resource type="Animation" id=2] @@ -20,7 +20,7 @@ tracks/0/keys = { [node name="Main" type="Node2D"] script = ExtResource( 3 ) -level_path = "res://scenes/levels/01/level_01.tscn" +level_path = "res://scenes/levels/00/interlude_00.tscn" [node name="HUD" parent="." instance=ExtResource( 1 )]