diff --git a/game/characters/player.gd b/game/characters/player.gd index 0166723..a1ea91d 100644 --- a/game/characters/player.gd +++ b/game/characters/player.gd @@ -23,9 +23,10 @@ const PICKUP_OFFSET = 16.0 @export_range(0.0, 1000.0) var max_speed := 160 +@export_range(0.0, 1000.0) var max_fall_speed := 640 @export_range(0.0, 1000.0) var acceleration := 600.0 @export_range(0.0, 1000.0) var jump_velocity := 320.0 -@export_range(0.0, 10.0) var switch_time := 1.0 +@export_range(0.0, 10.0) var switch_time := 0.0 @export_range(0.0, 2.0) var jump_gravity_factor := 1.0 @export_range(0.0, 2.0) var fall_gravity_factor := 1.5 @export_range(0.0, 1.0) var passive_jump_factor := 0.5 @@ -48,6 +49,8 @@ func _ready() -> void: func _physics_process(delta: float) -> void: if is_on_floor(): coyote_time_timer.start() + if is_on_ceiling_only() and velocity.y < 0.0: + velocity.y = 0.0 if not is_on_floor(): var gravity_factor := jump_gravity_factor if velocity.y < 0.0 else fall_gravity_factor @@ -56,6 +59,7 @@ func _physics_process(delta: float) -> void: velocity.y *= passive_jump_factor velocity += get_gravity() * gravity_factor * delta + velocity.y = clampf(velocity.y, -max_fall_speed, max_fall_speed) if not _is_alive: _slow_down(delta) diff --git a/game/collision_switcher.gd b/game/collision_switcher.gd index 32aff8c..bef78a7 100644 --- a/game/collision_switcher.gd +++ b/game/collision_switcher.gd @@ -117,7 +117,7 @@ func _apply_color() -> void: mask = _grey_mask | (_color_mask << COLLISION_WHITE_SHIFT) State.TransitionToBlack, State.TransitionToWhite: layer = _grey_layer | _color_layer | (_color_layer << COLLISION_WHITE_SHIFT) - mask = _grey_mask | _color_mask | (_color_mask << COLLISION_WHITE_SHIFT) + mask = _grey_mask object.collision_layer = layer object.collision_mask = mask diff --git a/game/levels/abstract_level.gd b/game/levels/abstract_level.gd index b19eb65..625a614 100644 --- a/game/levels/abstract_level.gd +++ b/game/levels/abstract_level.gd @@ -2,10 +2,10 @@ class_name AbstractLevel extends Node2D -const NEXT_LEVEL_META = "next_level" -const CURRENT_LEVEL_INDEX = "current_level" +@export var player_falling_at_start: bool = false +@onready var player : Player = $Player @onready var pause_menu : PauseMenu = $%PauseMenu @onready var game_over_menu : GameOverMenu = $%GameOverMenu @onready var completion_menu : CompletionMenu = $%CompletionMenu @@ -14,6 +14,9 @@ const CURRENT_LEVEL_INDEX = "current_level" func _ready() -> void: pause_menu.hide() game_over_menu.hide() + + if player_falling_at_start: + player.velocity.y = player.max_fall_speed func _input(event: InputEvent) -> void: @@ -33,9 +36,6 @@ func _on_level_end_entered(body: Node2D) -> void: get_tree().paused = true completion_menu.show() - var level_index : int = get_tree().get_meta(AbstractLevel.CURRENT_LEVEL_INDEX, 0) - get_tree().remove_meta(AbstractLevel.CURRENT_LEVEL_INDEX) - - if SaveManager.completed_levels <= level_index: - SaveManager.completed_levels = level_index + 1 + if SaveManager.completed_levels <= LevelManager.current_level_index: + SaveManager.completed_levels = LevelManager.current_level_index + 1 SaveManager.save() diff --git a/game/levels/level_1.tscn b/game/levels/level_1.tscn new file mode 100644 index 0000000..eb83799 --- /dev/null +++ b/game/levels/level_1.tscn @@ -0,0 +1,211 @@ +[gd_scene load_steps=26 format=4 uid="uid://dlpi1ptis3wna"] + +[ext_resource type="PackedScene" uid="uid://mpsu4g2b5h3a" path="res://game/levels/abstract_level.tscn" id="1_15okj"] +[ext_resource type="PackedScene" uid="uid://cojxqx5al7kyv" path="res://game/doors/closed_door.tscn" id="2_4ocoy"] +[ext_resource type="Material" uid="uid://dojhoc6ljpt1a" path="res://game/materials/gray_walls.tres" id="2_tuvkr"] +[ext_resource type="PackedScene" uid="uid://b7mhdrj3b6loq" path="res://game/doors/door.tscn" id="3_crrvt"] +[ext_resource type="Texture2D" uid="uid://d3346lrt1c1oh" path="res://images/level/outdoor.png" id="3_wi6ud"] +[ext_resource type="PackedScene" uid="uid://cemhsfdru4pv6" path="res://game/objects/tutorial/movement_kbd.tscn" id="4_rifvl"] +[ext_resource type="PackedScene" uid="uid://tipop68pyrf7" path="res://game/objects/tutorial/movement_pad.tscn" id="5_l6jt4"] +[ext_resource type="PackedScene" uid="uid://pw8xqtpauy57" path="res://game/objects/tutorial/jump_kbd.tscn" id="6_g1txn"] +[ext_resource type="PackedScene" uid="uid://3372ayctb2ed" path="res://game/objects/tutorial/jump_pad.tscn" id="7_yrqjd"] +[ext_resource type="PackedScene" uid="uid://b3kyqvuxmfn8f" path="res://game/objects/fireplace.tscn" id="8_dea75"] +[ext_resource type="PackedScene" uid="uid://bt4smb361amjj" path="res://game/objects/flask_s.tscn" id="8_rt0xo"] +[ext_resource type="PackedScene" uid="uid://d330w1ygg6uxy" path="res://game/objects/painting_v_l.tscn" id="9_mmf06"] +[ext_resource type="PackedScene" uid="uid://c0bk5sk661hi1" path="res://game/objects/painting_h_s.tscn" id="10_yrqjd"] +[ext_resource type="PackedScene" uid="uid://b8pvlnpdnfmd0" path="res://game/objects/chair_f.tscn" id="11_qpo0v"] +[ext_resource type="PackedScene" uid="uid://bdwbdnbenueu1" path="res://game/objects/table_m.tscn" id="12_lxfsh"] +[ext_resource type="PackedScene" uid="uid://crccdk7wmuqig" path="res://game/objects/painting_h_l.tscn" id="13_g3b4m"] +[ext_resource type="PackedScene" uid="uid://bo7756lp68bl1" path="res://game/objects/painting_v_s.tscn" id="14_blgb8"] +[ext_resource type="PackedScene" uid="uid://cvhovmnl050os" path="res://game/objects/wardrobe.tscn" id="15_ohfy3"] +[ext_resource type="PackedScene" uid="uid://c6qy8uybkn4x" path="res://game/objects/plate.tscn" id="15_rt0xo"] +[ext_resource type="PackedScene" uid="uid://dopjsft0y8mw5" path="res://game/objects/cabinet.tscn" id="16_rt0xo"] +[ext_resource type="PackedScene" uid="uid://xny1x7me75gc" path="res://game/objects/mirror_l.tscn" id="17_blgb8"] +[ext_resource type="PackedScene" uid="uid://btpkbyyteewsh" path="res://game/objects/chair_b.tscn" id="18_ohfy3"] +[ext_resource type="PackedScene" uid="uid://b1cq0uor2sk6k" path="res://game/objects/table_l.tscn" id="19_rt0xo"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_4ocoy"] +texture = ExtResource("3_wi6ud") +0:0/0 = 0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(8, -5, -5, 8, 1, 8, 8, 1) +1:0/0 = 0 +1:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(1, -8, -8, 1, -8, -5, -5, -8) +0:1/0 = 0 +0:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(8, 1, -1, -8, 5, -8, 8, -5) +1:1/0 = 0 +1:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(5, 8, -8, -5, -8, 1, -1, 8) +0:2/0 = 0 +0:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(5, -8, 8, -5, 8, 8, 1, 8, 1, -6, -1, -8) +1:2/0 = 0 +1:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(2, 5, -8, -5, -8, 1, -1, 8) +0:3/0 = 0 +0:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(1, -8, 8, -8, 8, 8, 1, 8) +1:3/0 = 0 +1:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3, -8, -3) +2:0/0 = 0 +2:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(8, -5, -2, 5, 1, 8, 8, 1) +2:1/0 = 0 +2:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-5, -8, -8, -5, -8, 8, -1, 8, -1, -6, 1, -8) +2:2/0 = 0 +2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-1, -8, -1, 8, -8, 8, -8, -8) +2:3/0 = 0 +2:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(8, -8, 8, -3, 1, -3, 1, -8) + +[sub_resource type="TileSet" id="TileSet_crrvt"] +physics_layer_0/collision_layer = 1 +physics_layer_0/collision_mask = 0 +sources/0 = SubResource("TileSetAtlasSource_4ocoy") + +[node name="Level1" instance=ExtResource("1_15okj")] + +[node name="OutdoorDoor" parent="Doors" index="0" instance=ExtResource("2_4ocoy")] +position = Vector2(-363, -8) + +[node name="EntranceDoor" parent="Doors" index="1" instance=ExtResource("3_crrvt")] +position = Vector2(288, -8) + +[node name="Room1Door" parent="Doors" index="2" instance=ExtResource("3_crrvt")] +position = Vector2(976, -8) + +[node name="Room1LockedDoor" parent="Doors" index="3" instance=ExtResource("2_4ocoy")] +position = Vector2(1585, -8) + +[node name="Room2LockedDoor" parent="Doors" index="4" instance=ExtResource("2_4ocoy")] +position = Vector2(1264, 280) + +[node name="Room2Door" parent="Doors" index="5" instance=ExtResource("3_crrvt")] +position = Vector2(1776, 280) + +[node name="Outdoor" type="Node2D" parent="Objects" index="0"] +position = Vector2(71, 0) + +[node name="MovementKbd" parent="Objects/Outdoor" index="0" instance=ExtResource("4_rifvl")] +position = Vector2(-21, 2) + +[node name="MovementPad" parent="Objects/Outdoor" index="1" instance=ExtResource("5_l6jt4")] +position = Vector2(24, -4) + +[node name="Entrance" type="Node2D" parent="Objects" index="1"] +position = Vector2(641, 0) + +[node name="JumpKbd" parent="Objects/Entrance" index="0" instance=ExtResource("6_g1txn")] +position = Vector2(173, -52) + +[node name="JumpPad" parent="Objects/Entrance" index="1" instance=ExtResource("7_yrqjd")] +position = Vector2(95, -28) + +[node name="FlaskS" parent="Objects/Entrance" index="2" instance=ExtResource("8_rt0xo")] +position = Vector2(-212, -15) + +[node name="Fireplace" parent="Objects/Entrance" index="3" instance=ExtResource("8_dea75")] +position = Vector2(-206, 0) + +[node name="PaintingVL" parent="Objects/Entrance" index="4" instance=ExtResource("9_mmf06")] +position = Vector2(-259, -48) + +[node name="PaintingHS" parent="Objects/Entrance" index="5" instance=ExtResource("10_yrqjd")] +position = Vector2(-80, -38) + +[node name="Room1" type="Node2D" parent="Objects" index="2"] +position = Vector2(1266, -21) + +[node name="Chair" parent="Objects/Room1" index="0" instance=ExtResource("11_qpo0v")] +position = Vector2(-3, 23) + +[node name="TableM" parent="Objects/Room1" index="1" instance=ExtResource("12_lxfsh")] +position = Vector2(0, 28) + +[node name="PaintingVL" parent="Objects/Room1" index="2" instance=ExtResource("9_mmf06")] +position = Vector2(59, -24) + +[node name="PaintingHL" parent="Objects/Room1" index="3" instance=ExtResource("13_g3b4m")] +position = Vector2(236, -16) + +[node name="PaintingVS" parent="Objects/Room1" index="4" instance=ExtResource("14_blgb8")] +position = Vector2(-180, -16) + +[node name="Plate" parent="Objects/Room1" index="5" instance=ExtResource("15_rt0xo")] +position = Vector2(3, 18) + +[node name="Room2" type="Node2D" parent="Objects" index="3"] +position = Vector2(1516, 254) + +[node name="Wardrobe" parent="Objects/Room2" index="0" instance=ExtResource("15_ohfy3")] +position = Vector2(-69, 28) + +[node name="Cabinet1" parent="Objects/Room2" index="1" instance=ExtResource("16_rt0xo")] +position = Vector2(-13, 39) + +[node name="MirrorL" parent="Objects/Room2" index="2" instance=ExtResource("17_blgb8")] +position = Vector2(177, 22) + +[node name="Cabinet2" parent="Objects/Room2" index="3" instance=ExtResource("16_rt0xo")] +position = Vector2(177, 39) + +[node name="PaintingHS" parent="Objects/Room2" index="4" instance=ExtResource("10_yrqjd")] +position = Vector2(-13, -11) + +[node name="PaintingVL" parent="Objects/Room2" index="5" instance=ExtResource("9_mmf06")] +position = Vector2(-171, 5) + +[node name="Room3" type="Node2D" parent="Objects" index="4"] +position = Vector2(2205, 270) + +[node name="ChairF_M" parent="Objects/Room3" index="0" instance=ExtResource("11_qpo0v")] +position = Vector2(-83, 20) + +[node name="TableM" parent="Objects/Room3" index="1" instance=ExtResource("12_lxfsh")] +position = Vector2(-74, 25) + +[node name="PlateM" parent="Objects/Room3" index="2" instance=ExtResource("15_rt0xo")] +position = Vector2(-78, 15) + +[node name="ChairB_M" parent="Objects/Room3" index="3" instance=ExtResource("18_ohfy3")] +position = Vector2(-67, 20) + +[node name="ChairF_L_1" parent="Objects/Room3" index="4" instance=ExtResource("11_qpo0v")] +position = Vector2(63, 20) + +[node name="ChairF_L_2" parent="Objects/Room3" index="5" instance=ExtResource("11_qpo0v")] +position = Vector2(83, 20) + +[node name="ChairF_L_3" parent="Objects/Room3" index="6" instance=ExtResource("11_qpo0v")] +position = Vector2(106, 20) + +[node name="TableL" parent="Objects/Room3" index="7" instance=ExtResource("19_rt0xo")] +position = Vector2(83, 25) + +[node name="PlateL1" parent="Objects/Room3" index="8" instance=ExtResource("15_rt0xo")] +position = Vector2(69, 15) + +[node name="PlateL2" parent="Objects/Room3" index="9" instance=ExtResource("15_rt0xo")] +position = Vector2(89, 15) + +[node name="ChairB_L_1" parent="Objects/Room3" index="10" instance=ExtResource("18_ohfy3")] +position = Vector2(72, 20) + +[node name="ChairB_L_2" parent="Objects/Room3" index="11" instance=ExtResource("18_ohfy3")] +position = Vector2(95, 20) + +[node name="PaintingHS" parent="Objects/Room3" index="12" instance=ExtResource("10_yrqjd")] +position = Vector2(0, -18) + +[node name="PaintingVS" parent="Objects/Room3" index="13" instance=ExtResource("14_blgb8")] +position = Vector2(-350, -17) + +[node name="GrayWalls" parent="Tiles" index="0"] +tile_map_data = PackedByteArray("AAARAAEAAAABAAAAAAASAAEAAAABAAAAAAATAAEAAAABAAAAAAAUAAEAAAABAAAAAAAVAAEAAAABAAAAAAAWAAEAAAABAAAAAAAXAAEAAAABAAAAAAAYAAEAAAABAAAAAAAZAAEAAAABAAAAAAAaAAEAAAABAAAAAAAbAAEAAAABAAAAAAAcAAEAAAABAAAAAAAdAAEAAAABAAAAAAAeAAEAAAABAAAAAAAfAAEAAAABAAAAAAAgAAEAAAABAAAAAAAhAAEAAAABAAAAAAAiAAEAAAABAAAAAAAjAAEAAAABAAAAAAAkAAEAAAABAAAAAAAlAAEAAAABAAAAAAAmAAEAAAABAAAAAAAnAAEAAAABAAAAAAAoAAEAAAABAAAAAAARAP3/AAAGAAIAAAARAPz/AAAGAAEAAAApAAEAAAACAAAAAAArAAEAAAAAAAAAAAArAAIAAAAAAAEAAAApAAIAAAACAAEAAAAsAAEAAAABAAAAAAAtAAEAAAABAAAAAAAuAAEAAAABAAAAAAAvAAEAAAABAAAAAAAwAAEAAAABAAAAAAAxAAEAAAACAAAAAAA3AAEAAAAAAAAAAAA4AAEAAAABAAAAAAA5AAEAAAABAAAAAAA6AAEAAAABAAAAAAA7AAEAAAABAAAAAAApAAMAAAADAAEAAAArAAMAAAAEAAEAAAAqAAMAAAABAAAAAAAxAAIAAAACAAEAAAAxAAQAAAADAAEAAAAxAAMAAAACAAEAAAA3AAMAAAAAAAEAAAA3AAIAAAAAAAEAAAA8APz/AAAGAAEAAAA8AP3/AAAGAAIAAAA8AAEAAAABAAAAAAA9AAEAAAABAAAAAAA+AAEAAAABAAAAAABOAAEAAAABAAAAAABPAAEAAAABAAAAAABPABMAAAABAAAAAABQAAEAAAABAAAAAABQABMAAAABAAAAAABRAAEAAAABAAAAAABRABMAAAABAAAAAABSAAEAAAABAAAAAABSABMAAAABAAAAAABTAAEAAAABAAAAAABTABMAAAABAAAAAABUAAEAAAABAAAAAABUABMAAAABAAAAAABVAAEAAAACAAAAAABVAAIAAAACAAEAAABVAAMAAAACAAEAAABVAAQAAAACAAEAAABVAAUAAAACAAEAAABVAAYAAAACAAEAAABVAAcAAAACAAEAAABVAAgAAAACAAEAAABVAAkAAAACAAEAAABVAAoAAAACAAEAAABVAAsAAAACAAIAAABVABMAAAABAAAAAABWABMAAAABAAAAAABXAAEAAAAAAAAAAABXAAIAAAAAAAEAAABXAAMAAAAAAAEAAABXAAQAAAAAAAEAAABXAAUAAAAAAAEAAABXAAYAAAAAAAEAAABXAAcAAAAAAAEAAABXAAgAAAAAAAEAAABXAAkAAAAAAAEAAABXAAoAAAAAAAEAAABXAAsAAAAAAAIAAABXABMAAAABAAAAAABYAAEAAAABAAAAAABYABMAAAABAAAAAABZAAEAAAABAAAAAABZABMAAAABAAAAAABaAAEAAAABAAAAAABaABMAAAABAAAAAABbAAEAAAABAAAAAABbABMAAAABAAAAAABcAAEAAAABAAAAAABcABMAAAABAAAAAABdAAEAAAABAAAAAABdABMAAAABAAAAAABeAAEAAAABAAAAAABeABMAAAABAAAAAABfAAEAAAABAAAAAABfABMAAAABAAAAAABgAAEAAAABAAAAAABgABMAAAABAAAAAABhAAEAAAABAAAAAABhABMAAAABAAAAAABiAPz/AAAAAAEAAABiAP3/AAAAAAIAAABiAAEAAAABAAAAAABiABMAAAACAAAAAABmABMAAAABAAAAAABnABMAAAABAAAAAABoABMAAAABAAAAAABpABMAAAABAAAAAABqABMAAAABAAAAAABrABMAAAABAAAAAABsABMAAAABAAAAAABtABMAAAABAAAAAABuABMAAAABAAAAAABvABMAAAABAAAAAABwABMAAAABAAAAAABxABMAAAABAAAAAAByABMAAAABAAAAAABzABMAAAABAAAAAAB0ABMAAAABAAAAAAB1ABMAAAABAAAAAAB2ABMAAAABAAAAAAB3ABMAAAABAAAAAAA/AAEAAAABAAAAAABAAAEAAAABAAAAAABBAAEAAAABAAAAAABCAAEAAAABAAAAAABDAAEAAAABAAAAAABEAAEAAAACAAAAAABKAAEAAAAAAAAAAABLAAEAAAABAAAAAABMAAEAAAABAAAAAABNAAEAAAABAAAAAABOAA4AAAACAAEAAABOAA8AAAACAAIAAABOABMAAAABAAAAAABEAAIAAAACAAEAAABEAAMAAAACAAEAAABEAAQAAAADAAEAAABFAAQAAAACAAAAAABFAAUAAAACAAEAAABFAAYAAAACAAEAAABFAAcAAAADAAEAAABGAAcAAAABAAAAAABHAAcAAAABAAAAAABIAAcAAAABAAAAAABJAAcAAAABAAAAAABKAAIAAAAAAAEAAABKAAMAAAAAAAEAAABKAAQAAAAAAAEAAABKAAUAAAAAAAEAAABKAAYAAAAAAAEAAABKAAcAAAAEAAEAAAAzAAQAAAABAAAAAAA0AAQAAAABAAAAAAA1AAQAAAABAAAAAAA2AAQAAAABAAAAAAAyAAQAAAABAAAAAAA3AAQAAAAEAAEAAABiABQAAAACAAEAAABiABUAAAACAAEAAABiABYAAAACAAEAAABlABMAAAAAAAAAAABlABQAAAAAAAEAAABlABUAAAAAAAEAAABlABYAAAAAAAEAAABlABcAAAAAAAEAAABiABcAAAACAAEAAABjABcAAAABAAIAAABkABcAAAABAAIAAABuAA8AAAAGAAIAAABuAA4AAAAGAAEAAAB4ABMAAAACAAAAAAB4ABQAAAACAAEAAAB4ABUAAAACAAEAAAB4ABYAAAACAAEAAAB4ABcAAAACAAEAAAB4ABgAAAACAAEAAAB4ABkAAAACAAEAAAB+ABMAAAAAAAAAAAB+ABQAAAAAAAEAAAB+ABUAAAAAAAEAAAB+ABYAAAAAAAEAAAB+ABcAAAAAAAEAAAB+ABgAAAAAAAEAAAB+ABkAAAAAAAEAAAB5ABkAAAABAAIAAAB6ABkAAAABAAIAAAB7ABkAAAABAAIAAAB8ABkAAAABAAIAAAB9ABkAAAABAAIAAAB/ABMAAAABAAAAAACAABMAAAABAAAAAACBABMAAAABAAAAAACCABMAAAABAAAAAACDABMAAAABAAAAAACEABMAAAABAAAAAACFABMAAAABAAAAAACGABMAAAABAAAAAACHABMAAAABAAAAAACIABMAAAABAAAAAACJABMAAAABAAAAAACKABMAAAABAAAAAACLABMAAAABAAAAAACMABMAAAABAAAAAACNABMAAAABAAAAAACOABMAAAABAAAAAACPABMAAAABAAAAAACQABMAAAABAAAAAACRABMAAAABAAAAAACSABMAAAABAAAAAACTABMAAAABAAAAAACUABMAAAABAAAAAACVABMAAAACAAAAAACYABMAAAAAAAEAAACYABQAAAAAAAEAAACYABUAAAAAAAEAAACYABYAAAAAAAEAAACYABcAAAAAAAEAAACYABgAAAAAAAEAAACYABkAAAAAAAEAAACYABoAAAAAAAEAAACYABsAAAAAAAEAAACYABwAAAAAAAEAAACYAB0AAAAAAAEAAACVABQAAAACAAEAAACVABUAAAACAAEAAACVABYAAAACAAEAAACVABcAAAACAAEAAACVABgAAAACAAEAAACVABkAAAACAAEAAACVABoAAAACAAEAAACVABsAAAACAAEAAACVABwAAAACAAEAAACVAB0AAAACAAEAAACYABIAAAAAAAEAAACYABEAAAAAAAEAAACYABAAAAAAAAEAAACYAA8AAAAAAAEAAACYAA4AAAAAAAEAAACVAB4AAAACAAEAAACVAB8AAAACAAEAAACVACAAAAACAAEAAACVACEAAAACAAEAAACVACIAAAACAAEAAACVACMAAAACAAEAAACVACQAAAACAAEAAACVACUAAAACAAEAAACVACYAAAACAAEAAACVACcAAAACAAEAAACVACgAAAACAAEAAACVACkAAAACAAEAAACVACoAAAACAAEAAACYAB4AAAAAAAEAAACYAB8AAAAAAAEAAACYACAAAAAAAAEAAACYACEAAAAAAAEAAACYACIAAAAAAAEAAACYACMAAAAAAAEAAACYACQAAAAAAAEAAACYACUAAAAAAAEAAACYACYAAAAAAAEAAACYACcAAAAAAAEAAACYACgAAAAAAAEAAACYACkAAAAAAAEAAACYACoAAAAAAAEAAAA=") + +[node name="WhiteWalls" parent="Tiles" index="2"] +tile_map_data = PackedByteArray("AAARAPv/AAAGAAEAAAARAPr/AAAGAAEAAAARAPj/AAAAAAEAAAARAPf/AAAAAAEAAAARAPb/AAAAAAEAAAARAPX/AAAAAAEAAAARAPT/AAAAAAEAAAARAPP/AAAAAAEAAAARAPL/AAAAAAEAAAARAPH/AAAAAAEAAAARAPD/AAAAAAEAAAARAO//AAAAAAEAAAARAO7/AAAAAAEAAAARAO3/AAAAAAEAAAARAPn/AAAFAAYAAAASAPn/AAABAAIAAAATAPn/AAABAAIAAAAUAPn/AAABAAIAAAAVAPn/AAABAAIAAAAWAPn/AAABAAIAAAAXAPn/AAABAAIAAAAYAPn/AAABAAIAAAAZAPn/AAABAAIAAAAaAPn/AAABAAIAAAAbAPn/AAABAAIAAAAcAPn/AAABAAIAAAAdAPn/AAABAAIAAAAeAPn/AAABAAIAAAAfAPn/AAABAAIAAAAgAPn/AAABAAIAAAAhAPn/AAABAAIAAAAiAPn/AAABAAIAAAAjAPn/AAABAAIAAAAkAPn/AAABAAIAAAAlAPn/AAABAAIAAAAmAPn/AAABAAIAAAAnAPn/AAABAAIAAAAoAPn/AAABAAIAAAApAPn/AAABAAIAAAAqAPn/AAABAAIAAAArAPn/AAABAAIAAAAsAPn/AAABAAIAAAAtAPn/AAABAAIAAAAuAPn/AAABAAIAAAAvAPn/AAABAAIAAAAwAPn/AAABAAIAAAAxAPn/AAABAAIAAAAyAPn/AAABAAIAAAAzAPn/AAABAAIAAAA0APn/AAABAAIAAAA1APn/AAABAAIAAAA2APn/AAABAAIAAAA3APn/AAABAAIAAAA4APn/AAABAAIAAAA5APn/AAABAAIAAAA6APn/AAABAAIAAAA7APn/AAABAAIAAAA8APv/AAAGAAEAAAA8APr/AAAGAAEAAAA8APn/AAABAAcAAAA9APn/AAABAAIAAAA+APn/AAABAAIAAAA/APn/AAABAAIAAABAAPn/AAABAAIAAABBAPn/AAABAAIAAABCAPn/AAABAAIAAABDAPn/AAABAAIAAABEAPn/AAABAAIAAABFAPn/AAABAAIAAABGAPn/AAABAAIAAABHAPn/AAABAAIAAABIAPn/AAABAAIAAABJAPn/AAABAAIAAABKAPn/AAABAAIAAABLAPn/AAABAAIAAABMAPn/AAABAAIAAABNAPn/AAABAAIAAABOAPn/AAABAAIAAABPAPn/AAABAAIAAABfAPn/AAABAAIAAABgAPn/AAABAAIAAABhAPn/AAABAAIAAABiAPn/AAAEAAAAAABiAPr/AAAAAAEAAABiAPv/AAAAAAEAAABQAPn/AAABAAIAAABRAPn/AAABAAIAAABSAPn/AAABAAIAAABTAPn/AAABAAIAAABUAPn/AAABAAIAAABVAPn/AAABAAIAAABWAPn/AAABAAIAAABXAPn/AAABAAIAAABYAPn/AAABAAIAAABZAPn/AAABAAIAAABaAPn/AAABAAIAAABbAPn/AAABAAIAAABcAPn/AAABAAIAAABdAPn/AAABAAIAAABeAPn/AAABAAIAAABYAAsAAAABAAIAAABZAAsAAAABAAIAAABaAAsAAAABAAIAAABbAAsAAAABAAIAAABcAAsAAAABAAIAAABdAAsAAAABAAIAAABeAAsAAAABAAIAAABfAAsAAAABAAIAAABgAAsAAAABAAIAAABhAAsAAAABAAIAAABiAAsAAAABAAIAAABjAAsAAAABAAIAAABkAAsAAAABAAIAAABlAAsAAAABAAIAAABmAAsAAAABAAIAAABnAAsAAAABAAIAAABoAAsAAAABAAIAAABpAAsAAAABAAIAAABqAAsAAAABAAIAAABrAAsAAAABAAIAAABsAAsAAAABAAIAAABtAAsAAAABAAIAAABuAAsAAAABAAcAAABvAAsAAAABAAIAAABwAAsAAAABAAIAAABxAAsAAAABAAIAAABUAAsAAAABAAIAAABTAAsAAAABAAIAAABSAAsAAAABAAIAAABRAAsAAAABAAIAAABQAAsAAAABAAIAAABPAAsAAAABAAIAAABOAAsAAAADAAAAAABOAAwAAAACAAEAAABOAA0AAAACAAEAAABuAA0AAAAGAAEAAABuAAwAAAAGAAEAAAByAAsAAAABAAIAAABzAAsAAAABAAIAAAB0AAsAAAABAAIAAAB1AAsAAAABAAIAAAB2AAsAAAABAAIAAAB3AAsAAAABAAIAAAB4AAsAAAABAAIAAAB5AAsAAAABAAIAAAB6AAsAAAABAAIAAAB7AAsAAAABAAIAAAB8AAsAAAABAAIAAAB9AAsAAAABAAIAAAB+AAsAAAABAAIAAAB/AAsAAAABAAIAAACAAAsAAAABAAIAAACBAAsAAAABAAIAAACCAAsAAAABAAIAAACDAAsAAAABAAIAAACEAAsAAAABAAIAAACFAAsAAAABAAIAAACGAAsAAAABAAIAAACYAA0AAAAAAAEAAACYAAwAAAAAAAEAAACHAAsAAAABAAIAAACIAAsAAAABAAIAAACJAAsAAAABAAIAAACKAAsAAAABAAIAAACLAAsAAAABAAIAAACMAAsAAAABAAIAAACNAAsAAAABAAIAAACOAAsAAAABAAIAAACPAAsAAAABAAIAAACQAAsAAAABAAIAAACRAAsAAAABAAIAAACSAAsAAAABAAIAAACTAAsAAAABAAIAAACUAAsAAAABAAIAAACVAAsAAAABAAIAAACWAAsAAAABAAIAAACXAAsAAAABAAIAAACYAAsAAAAEAAAAAAA=") + +[node name="Traps" parent="Tiles" index="3"] +tile_map_data = PackedByteArray("AABjABUAAAAAAAAAAABkABUAAAAAAAAAAABjABYAAAAAAAEAAABkABYAAAAAAAEAAABkABcAAAAAAAEAAABjABcAAAAAAAEAAAB5ABkAAAAAAAEAAAB6ABkAAAAAAAEAAAB7ABkAAAAAAAEAAAB8ABkAAAAAAAEAAAB9ABkAAAAAAAEAAAB5ABgAAAAAAAEAAAB6ABgAAAAAAAEAAAB7ABgAAAAAAAEAAAB8ABgAAAAAAAEAAAB9ABgAAAAAAAEAAAB5ABcAAAAAAAAAAAB6ABcAAAAAAAAAAAB7ABcAAAAAAAAAAAB8ABcAAAAAAAAAAAB9ABcAAAAAAAAAAAA=") + +[node name="Outdoor" type="TileMapLayer" parent="Tiles" index="4"] +material = ExtResource("2_tuvkr") +tile_map_data = PackedByteArray("AADp/wEAAAABAAMAAADq/wEAAAABAAMAAADr/wEAAAABAAMAAADs/wEAAAABAAMAAADt/wEAAAABAAMAAADu/wEAAAABAAMAAADv/wEAAAABAAMAAADw/wEAAAABAAMAAADx/wEAAAABAAMAAADy/wEAAAABAAMAAADz/wEAAAABAAMAAAD0/wEAAAABAAMAAAD1/wEAAAABAAMAAAD2/wEAAAABAAMAAAD3/wEAAAABAAMAAAD4/wEAAAABAAMAAAD5/wEAAAABAAMAAAD6/wEAAAABAAMAAAD7/wEAAAABAAMAAAD8/wEAAAABAAMAAAD9/wEAAAABAAMAAAD+/wEAAAABAAMAAAD//wEAAAABAAMAAAAAAAEAAAABAAMAAAABAAEAAAABAAMAAAACAAEAAAABAAMAAAADAAEAAAABAAMAAAAEAAEAAAABAAMAAAAFAAEAAAABAAMAAAAGAAEAAAABAAMAAAAHAAEAAAABAAMAAAAIAAEAAAABAAMAAAAJAAEAAAABAAMAAAAKAAEAAAABAAMAAAALAAEAAAABAAMAAAAMAAEAAAABAAMAAAANAAEAAAABAAMAAAAOAAEAAAABAAMAAAAPAAEAAAABAAMAAAAQAAEAAAABAAMAAADo//3/AAAAAAMAAADo//z/AAAAAAMAAADo//v/AAAAAAIAAADp//v/AAABAAIAAADo//r/AAABAAEAAADn//n/AAABAAEAAADm//j/AAABAAEAAADn//r/AAAAAAEAAADm//n/AAAAAAEAAADl//j/AAAAAAEAAADk//f/AAAAAAEAAADl//f/AAABAAEAAADk//b/AAABAAEAAADo/wEAAAACAAMAAAA=") +tile_set = SubResource("TileSet_crrvt") + +[node name="LevelEnd" parent="." index="7"] +position = Vector2(2416, 471) diff --git a/game/levels/level_2.tscn b/game/levels/level_2.tscn new file mode 100644 index 0000000..3fa2c45 --- /dev/null +++ b/game/levels/level_2.tscn @@ -0,0 +1,162 @@ +[gd_scene load_steps=20 format=4 uid="uid://cc06c06hlv7ix"] + +[ext_resource type="PackedScene" uid="uid://mpsu4g2b5h3a" path="res://game/levels/abstract_level.tscn" id="1_t037v"] +[ext_resource type="PackedScene" uid="uid://cojxqx5al7kyv" path="res://game/doors/closed_door.tscn" id="2_iakit"] +[ext_resource type="PackedScene" uid="uid://deo60sij43ibm" path="res://game/objects/tutorial/switch_kbd.tscn" id="3_6jjde"] +[ext_resource type="PackedScene" uid="uid://b7mhdrj3b6loq" path="res://game/doors/door.tscn" id="3_ylsm2"] +[ext_resource type="PackedScene" uid="uid://f70xseggdimg" path="res://game/objects/tutorial/switch_pad.tscn" id="4_bxukv"] +[ext_resource type="PackedScene" uid="uid://xny1x7me75gc" path="res://game/objects/mirror_l.tscn" id="5_bxukv"] +[ext_resource type="PackedScene" uid="uid://dopjsft0y8mw5" path="res://game/objects/cabinet.tscn" id="5_uivyf"] +[ext_resource type="PackedScene" uid="uid://b8pvlnpdnfmd0" path="res://game/objects/chair_f.tscn" id="6_go8g1"] +[ext_resource type="PackedScene" uid="uid://bdwbdnbenueu1" path="res://game/objects/table_m.tscn" id="7_2a8w4"] +[ext_resource type="PackedScene" uid="uid://b6wgujelmka5p" path="res://game/objects/chair_r.tscn" id="8_2a8w4"] +[ext_resource type="PackedScene" uid="uid://c6qy8uybkn4x" path="res://game/objects/plate.tscn" id="10_7s8yo"] +[ext_resource type="PackedScene" uid="uid://btpkbyyteewsh" path="res://game/objects/chair_b.tscn" id="10_ylsm2"] +[ext_resource type="PackedScene" uid="uid://x82wjrsqdfd" path="res://game/objects/chair_l.tscn" id="11_7c6gx"] +[ext_resource type="PackedScene" uid="uid://cvhovmnl050os" path="res://game/objects/wardrobe.tscn" id="13_7c6gx"] +[ext_resource type="PackedScene" uid="uid://crccdk7wmuqig" path="res://game/objects/painting_h_l.tscn" id="14_u51cf"] +[ext_resource type="PackedScene" uid="uid://baqawh1drerhk" path="res://game/objects/table_s.tscn" id="15_cys5i"] +[ext_resource type="PackedScene" uid="uid://d330w1ygg6uxy" path="res://game/objects/painting_v_l.tscn" id="16_ddwrs"] +[ext_resource type="PackedScene" uid="uid://bt4smb361amjj" path="res://game/objects/flask_s.tscn" id="16_v8xjl"] +[ext_resource type="PackedScene" uid="uid://bmx60xftq8f2v" path="res://game/objects/mirror_s.tscn" id="17_ddwrs"] + +[node name="Level2" instance=ExtResource("1_t037v")] +player_falling_at_start = true + +[node name="ClosedDoor" parent="Doors" index="0" instance=ExtResource("2_iakit")] +position = Vector2(-48, 296) + +[node name="TunnelEntranceDoor" parent="Doors" index="1" instance=ExtResource("3_ylsm2")] +position = Vector2(670, 440) + +[node name="TunnelExitDoor" parent="Doors" index="2" instance=ExtResource("3_ylsm2")] +position = Vector2(963, 440) + +[node name="Room1" type="Node2D" parent="Objects" index="0"] +position = Vector2(45, 272) + +[node name="SwitchKbd" parent="Objects/Room1" index="0" instance=ExtResource("3_6jjde")] +position = Vector2(59, -11) + +[node name="SwitchPad" parent="Objects/Room1" index="1" instance=ExtResource("4_bxukv")] +position = Vector2(-36, -3) + +[node name="MirrorL" parent="Objects/Room1" index="2" instance=ExtResource("5_bxukv")] +position = Vector2(0, 20) + +[node name="Cabinet" parent="Objects/Room1" index="3" instance=ExtResource("5_uivyf")] +position = Vector2(0, 37) + +[node name="Room2" type="Node2D" parent="Objects" index="1"] +position = Vector2(244, 268) + +[node name="ChairF1" parent="Objects/Room2" index="0" instance=ExtResource("6_go8g1")] +position = Vector2(-7, 38) + +[node name="ChairF2" parent="Objects/Room2" index="1" instance=ExtResource("6_go8g1")] +position = Vector2(10, 38) + +[node name="ChairR" parent="Objects/Room2" index="2" instance=ExtResource("8_2a8w4")] +position = Vector2(-19, 38) + +[node name="Plate" parent="Objects/Room2" index="3" instance=ExtResource("10_7s8yo")] +position = Vector2(6, 33) + +[node name="TableM" parent="Objects/Room2" index="4" instance=ExtResource("7_2a8w4")] +position = Vector2(1, 43) + +[node name="ChairB" parent="Objects/Room2" index="5" instance=ExtResource("10_ylsm2")] +position = Vector2(1, 38) + +[node name="ChairL" parent="Objects/Room2" index="6" instance=ExtResource("11_7c6gx")] +position = Vector2(83, 38) + +[node name="Room3" type="Node2D" parent="Objects" index="2"] +position = Vector2(309, 408) + +[node name="MirrorL" parent="Objects/Room3" index="0" instance=ExtResource("5_bxukv")] +position = Vector2(42, 28) + +[node name="Cabinet1" parent="Objects/Room3" index="1" instance=ExtResource("5_uivyf")] +position = Vector2(42, 45) + +[node name="Cabinet2" parent="Objects/Room3" index="2" instance=ExtResource("5_uivyf")] +position = Vector2(145, 45) + +[node name="Wardrobe1" parent="Objects/Room3" index="3" instance=ExtResource("13_7c6gx")] +position = Vector2(-64, 34) + +[node name="Wardrobe2" parent="Objects/Room3" index="4" instance=ExtResource("13_7c6gx")] +position = Vector2(-97, 34) + +[node name="Wardrobe3" parent="Objects/Room3" index="5" instance=ExtResource("13_7c6gx")] +position = Vector2(-31, 34) + +[node name="ChairB" parent="Objects/Room3" index="6" instance=ExtResource("10_ylsm2")] +position = Vector2(43, 42) + +[node name="Room4" type="Node2D" parent="Objects" index="3"] +position = Vector2(589, 430) + +[node name="PaintingHL" parent="Objects/Room4" index="0" instance=ExtResource("14_u51cf")] +position = Vector2(0, -15) + +[node name="ChairL" parent="Objects/Room4" index="1" instance=ExtResource("11_7c6gx")] +position = Vector2(-70, 20) + +[node name="FlaskS1" parent="Objects/Room4" index="2" instance=ExtResource("16_v8xjl")] +position = Vector2(-87, 10) + +[node name="FlaskS2" parent="Objects/Room4" index="3" instance=ExtResource("16_v8xjl")] +position = Vector2(-78, 10) + +[node name="FlaskS3" parent="Objects/Room4" index="4" instance=ExtResource("16_v8xjl")] +position = Vector2(-83, 10) + +[node name="TableS" parent="Objects/Room4" index="5" instance=ExtResource("15_cys5i")] +position = Vector2(-80, 25) + +[node name="Room5" type="Node2D" parent="Objects" index="4"] +position = Vector2(1073, 410) + +[node name="PaintingVL1" parent="Objects/Room5" index="0" instance=ExtResource("16_ddwrs")] +position = Vector2(-63, -12) + +[node name="PaintingVL2" parent="Objects/Room5" index="1" instance=ExtResource("16_ddwrs")] +position = Vector2(61, -3) + +[node name="PaintingVL3" parent="Objects/Room5" index="2" instance=ExtResource("16_ddwrs")] +position = Vector2(-5, 4) + +[node name="Room6" type="Node2D" parent="Objects" index="5"] +position = Vector2(1320, 406) + +[node name="Wardrobe" parent="Objects/Room6" index="0" instance=ExtResource("13_7c6gx")] +position = Vector2(-77, 36) + +[node name="MirrorS" parent="Objects/Room6" index="1" instance=ExtResource("17_ddwrs")] +position = Vector2(-4, 37) + +[node name="Chair" parent="Objects/Room6" index="2" instance=ExtResource("6_go8g1")] +position = Vector2(-42, 44) + +[node name="TableS" parent="Objects/Room6" index="3" instance=ExtResource("15_cys5i")] +position = Vector2(-43, 49) + +[node name="Cabinet" parent="Objects/Room6" index="4" instance=ExtResource("5_uivyf")] +position = Vector2(32, 47) + +[node name="GrayWalls" parent="Tiles" index="0"] +tile_map_data = PackedByteArray("AAD+//T/AAACAAEAAAD+//X/AAACAAEAAAD+//b/AAACAAEAAAD+//f/AAACAAEAAAD+//j/AAACAAEAAAD+//n/AAACAAEAAAD+//r/AAACAAEAAAD+//v/AAACAAEAAAD+//z/AAACAAEAAAD+//3/AAACAAEAAAD+//7/AAACAAEAAAD+////AAACAAEAAAD+/wAAAAACAAEAAAD+/wEAAAACAAEAAAD+/wIAAAACAAEAAAD+/wMAAAACAAEAAAD+/wQAAAACAAEAAAD+/wUAAAACAAEAAAD+/wYAAAACAAEAAAD+/wcAAAACAAEAAAD+/wgAAAACAAEAAAD+/wkAAAACAAEAAAD+/woAAAACAAEAAAD+/wsAAAACAAEAAAABAPT/AAAAAAEAAAABAPX/AAAAAAEAAAABAPb/AAAAAAEAAAABAPf/AAAAAAEAAAABAPj/AAAAAAEAAAABAPn/AAAAAAEAAAABAPr/AAAAAAEAAAABAPv/AAAAAAEAAAABAPz/AAAAAAEAAAABAP3/AAAAAAEAAAABAP7/AAAAAAEAAAABAP//AAAAAAEAAAABAAAAAAAAAAEAAAABAAEAAAAAAAEAAAABAAIAAAAAAAEAAAABAAMAAAAAAAEAAAABAAQAAAAAAAEAAAABAAUAAAAAAAEAAAABAAYAAAAAAAEAAAABAAcAAAAAAAEAAAABAAgAAAAAAAEAAAABAAkAAAAAAAEAAAABAAoAAAAAAAEAAAABAAsAAAAAAAEAAAD8/xAAAAACAAIAAAD8/xQAAAABAAAAAAD9/xQAAAABAAAAAAD+/xQAAAABAAAAAAD//xQAAAABAAAAAAAAABQAAAABAAAAAAABABQAAAABAAAAAAACABQAAAABAAAAAAADABQAAAABAAAAAAAEABQAAAABAAAAAAAFABQAAAABAAAAAAAGABQAAAABAAAAAAAHABQAAAABAAAAAAAIABQAAAABAAAAAAAJABQAAAABAAAAAAAKABQAAAABAAAAAAD8/w8AAAACAAEAAAAVAA8AAAAAAAEAAAAVABAAAAAAAAEAAAAVABEAAAAAAAEAAAAVABIAAAAAAAEAAAAVABMAAAAAAAEAAAALABQAAAABAAAAAAAMABQAAAACAAAAAAASABQAAAAAAAAAAAATABQAAAABAAAAAAAUABQAAAABAAAAAAALABYAAAACAAEAAAALABcAAAACAAEAAAALABgAAAACAAEAAAALABkAAAACAAEAAAALABoAAAACAAEAAAALABsAAAACAAEAAAALABwAAAACAAEAAAAVABQAAAAEAAEAAAAMABUAAAACAAUAAAASABUAAAADAAUAAAALABUAAAADAAAAAAAMAB0AAAABAAAAAAANAB0AAAABAAAAAAAOAB0AAAABAAAAAAAPAB0AAAABAAAAAAAQAB0AAAABAAAAAAARAB0AAAABAAAAAAASAB0AAAABAAAAAAATAB0AAAABAAAAAAAUAB0AAAABAAAAAAAVAB0AAAABAAAAAAAWAB0AAAABAAAAAAAXAB0AAAABAAAAAAAYAB0AAAABAAAAAAAZAB0AAAABAAAAAAAaAB0AAAABAAAAAAAbAB0AAAABAAAAAAAcAB0AAAABAAAAAAAdAB0AAAABAAAAAAALAB0AAAADAAEAAAAeAB0AAAAAAAcAAAAeABwAAAAFAAEAAAAeABsAAAAFAAEAAAAeABoAAAACAAAAAAAaABgAAAAFAAEAAAAaABcAAAACAAEAAAAaABYAAAACAAEAAAAaABUAAAADAAAAAAAbABUAAAABAAIAAAAcABUAAAABAAIAAAAdABUAAAABAAIAAAAeABUAAAABAAIAAAAfABUAAAABAAIAAAAfAB0AAAABAAAAAAAgAB0AAAABAAAAAAAhAB0AAAABAAAAAAAiAB0AAAABAAAAAAAjAB0AAAABAAAAAAAkAB0AAAABAAAAAAAlAB0AAAABAAAAAAAmAB0AAAABAAAAAAAnAB0AAAABAAAAAAAoAB0AAAABAAAAAAAgABUAAAABAAIAAAAhABUAAAABAAIAAAAaABoAAAAAAAIAAAAaABkAAAAGAAEAAAApABgAAAAAAAEAAAApABkAAAAAAAIAAAApAB0AAAABAAAAAAAqAB0AAAABAAAAAAArAB0AAAABAAAAAAAsAB0AAAABAAAAAAAtAB0AAAABAAAAAAAuAB0AAAABAAAAAAAvAB0AAAABAAAAAAAwAB0AAAABAAAAAAAxAB0AAAABAAAAAAAyAB0AAAABAAAAAAAzAB0AAAABAAAAAAA0AB0AAAABAAAAAAA1AB0AAAABAAAAAAA2AB0AAAABAAAAAAA3AB0AAAABAAAAAAA4AB0AAAABAAAAAAA5AB0AAAABAAAAAAA6AB0AAAABAAAAAAA7AB0AAAACAAQAAAAqABkAAAABAAIAAAArABkAAAABAAIAAAAsABkAAAABAAIAAAAtABkAAAABAAIAAAAuABkAAAABAAIAAAAvABkAAAABAAIAAAAwABkAAAABAAIAAAAxABkAAAABAAIAAAAyABkAAAABAAIAAAAzABkAAAABAAIAAAA0ABkAAAABAAIAAAA1ABkAAAABAAIAAAA2ABkAAAABAAIAAAA3ABkAAAABAAIAAAA4ABkAAAABAAIAAAA5ABkAAAABAAIAAAA6ABkAAAABAAIAAAA7ABkAAAACAAIAAAA7ABgAAAACAAEAAABLAB0AAAABAAAAAABMAB0AAAABAAAAAABNAB0AAAABAAAAAABOAB0AAAABAAAAAABPAB0AAAABAAAAAABQAB0AAAABAAAAAABRAB0AAAABAAAAAABSAB0AAAABAAAAAABTAB0AAAABAAAAAABUAB0AAAABAAAAAABKAB0AAAADAAQAAABKAB4AAAAAAAEAAABKAB8AAAAAAAEAAABKACAAAAAAAAEAAABKACEAAAAAAAEAAAA7AB4AAAACAAEAAAA7AB8AAAACAAEAAAA7ACAAAAACAAEAAAA7ACEAAAACAAEAAAA8ACEAAAABAAIAAAA9ACEAAAABAAIAAAA+ACEAAAABAAIAAAA/ACEAAAABAAIAAABAACEAAAABAAIAAABBACEAAAABAAIAAABCACEAAAABAAIAAABDACEAAAABAAIAAABEACEAAAABAAIAAABFACEAAAABAAIAAABGACEAAAABAAIAAABHACEAAAABAAIAAABIACEAAAABAAIAAABJACEAAAABAAIAAABVAB0AAAABAAAAAABWAB0AAAABAAAAAABXAB0AAAACAAQAAABaAB0AAAAAAAEAAABaABwAAAAAAAEAAABaABsAAAAAAAEAAABaABoAAAAAAAEAAABaABkAAAAAAAEAAABaABgAAAAAAAEAAABaAB4AAAAAAAEAAABaAB8AAAAAAAEAAABaACAAAAAAAAEAAABaACEAAAAAAAEAAABaACIAAAAAAAEAAABaACMAAAAAAAEAAABaACQAAAAAAAEAAABaACUAAAAAAAEAAABaACYAAAAAAAEAAABaACcAAAAAAAEAAABaACgAAAAAAAEAAABaACkAAAAAAAEAAABaACoAAAAAAAEAAABXAB4AAAACAAEAAABXAB8AAAACAAEAAABXACAAAAACAAEAAABXACEAAAACAAEAAABXACIAAAACAAEAAABXACMAAAACAAEAAABXACQAAAACAAEAAABXACUAAAACAAEAAABXACYAAAACAAEAAABXACcAAAACAAEAAABXACgAAAACAAEAAABXACkAAAACAAEAAABXACoAAAACAAEAAABXACsAAAACAAEAAABXACwAAAACAAEAAABXAC0AAAACAAEAAABXAC4AAAACAAEAAABXAC8AAAACAAEAAABXADAAAAACAAEAAABXADEAAAACAAEAAABXADIAAAACAAEAAABXADMAAAACAAEAAABXADQAAAACAAEAAABaACsAAAAAAAEAAABaACwAAAAAAAEAAABaAC0AAAAAAAEAAABaAC4AAAAAAAEAAABaAC8AAAAAAAEAAABaADAAAAAAAAEAAABaADEAAAAAAAEAAABaADIAAAAAAAEAAABaADMAAAAAAAEAAABaADQAAAAAAAEAAAA=") + +[node name="BlackWalls" parent="Tiles" index="1"] +tile_map_data = PackedByteArray("AAANABQAAAABAAAAAAAOABQAAAABAAAAAAAPABQAAAABAAAAAAAQABQAAAABAAAAAAARABQAAAABAAAAAAANABUAAAABAAIAAAAOABUAAAABAAIAAAAPABUAAAABAAIAAAAQABUAAAABAAIAAAARABUAAAABAAIAAABYAB0AAAABAAAAAABZAB0AAAABAAAAAAA=") + +[node name="WhiteWalls" parent="Tiles" index="2"] +tile_map_data = PackedByteArray("AAD8/wwAAAADAAAAAAD9/wwAAAABAAIAAAD8/w0AAAACAAEAAAD8/w4AAAACAAEAAAACAAwAAAABAAIAAAADAAwAAAABAAIAAAAEAAwAAAABAAIAAAAFAAwAAAABAAIAAAAGAAwAAAABAAIAAAAHAAwAAAABAAIAAAAIAAwAAAABAAIAAAAJAAwAAAABAAcAAAAJAA0AAAAGAAEAAAAJAA4AAAAGAAEAAAAJAA8AAAAGAAEAAAAJABAAAAAGAAEAAAAJABEAAAAGAAEAAAAJABIAAAAGAAEAAAAKAAwAAAABAAIAAAALAAwAAAABAAIAAAAMAAwAAAABAAIAAAANAAwAAAABAAIAAAAOAAwAAAABAAIAAAAPAAwAAAABAAIAAAAQAAwAAAABAAIAAAARAAwAAAABAAIAAAASAAwAAAABAAIAAAATAAwAAAABAAIAAAAUAAwAAAABAAIAAAAVAAwAAAAEAAAAAAAVAA0AAAAAAAEAAAAVAA4AAAAAAAEAAAAJABMAAAAGAAEAAAATABUAAAABAAIAAAAUABUAAAABAAIAAAAVABUAAAABAAIAAAAWABUAAAABAAIAAAAXABUAAAABAAIAAAAYABUAAAABAAIAAAAZABUAAAABAAIAAAAaABUAAAAEAAAAAAAaABcAAAAAAAEAAAAaABYAAAAAAAEAAAAiABUAAAABAAIAAAAjABUAAAABAAIAAAAkABUAAAABAAIAAAAlABUAAAABAAIAAAAmABUAAAABAAIAAAAnABUAAAABAAIAAAAoABUAAAABAAIAAAAaABoAAAADAAEAAAAbABoAAAAEAAIAAAAcABoAAAAEAAIAAAAdABoAAAAEAAIAAAAeABoAAAAEAAAAAAApABUAAAAEAAAAAAApABYAAAAAAAEAAAApABcAAAAAAAEAAAA7ABcAAAACAAEAAAA7ABYAAAACAAEAAAA7ABUAAAADAAAAAAA8ABUAAAABAAIAAAA9ABUAAAABAAIAAAA+ABUAAAABAAIAAAA/ABUAAAABAAIAAABAABUAAAABAAIAAABBABUAAAABAAIAAABCABUAAAABAAIAAABDABUAAAABAAIAAABEABUAAAABAAIAAABFABUAAAABAAIAAABGABUAAAABAAIAAABHABUAAAABAAIAAABIABUAAAABAAIAAABJABUAAAABAAIAAABLABUAAAABAAIAAABMABUAAAABAAIAAABNABUAAAABAAIAAABOABUAAAABAAIAAABPABUAAAABAAIAAABQABUAAAABAAIAAABRABUAAAABAAIAAABSABUAAAABAAIAAABTABUAAAABAAIAAABUABUAAAABAAIAAABVABUAAAABAAIAAABWABUAAAABAAIAAABXABUAAAABAAIAAABYABUAAAABAAIAAABZABUAAAABAAIAAAA8AB0AAAABAAAAAAA9AB0AAAABAAAAAAA+AB0AAAABAAAAAAA/AB0AAAABAAAAAABAAB0AAAABAAAAAABBAB0AAAABAAAAAABCAB0AAAABAAAAAABDAB0AAAABAAAAAABEAB0AAAABAAAAAABFAB0AAAABAAAAAABGAB0AAAABAAAAAABHAB0AAAABAAAAAABIAB0AAAABAAAAAABJAB0AAAABAAAAAABKABYAAAAGAAEAAABKABcAAAAGAAEAAABKABgAAAAGAAEAAABKABkAAAAGAAEAAABKABoAAAAGAAEAAABKABsAAAAGAAEAAABKABwAAAAGAAEAAABaABcAAAAAAAEAAABaABYAAAAAAAEAAABaABUAAAAEAAAAAABKABUAAAABAAcAAAABAAwAAAAAAAIAAAD+/wwAAAACAAIAAAA=") + +[node name="Traps" parent="Tiles" index="3"] +tile_map_data = PackedByteArray("AAA8AB8AAAAAAAAAAAA9AB8AAAAAAAAAAAA+AB8AAAAAAAAAAAA/AB8AAAAAAAAAAABAAB8AAAAAAAAAAABBAB8AAAAAAAAAAABCAB8AAAAAAAAAAABDAB8AAAAAAAAAAABEAB8AAAAAAAAAAABFAB8AAAAAAAAAAABGAB8AAAAAAAAAAABHAB8AAAAAAAAAAABIAB8AAAAAAAAAAABJAB8AAAAAAAAAAAA8ACAAAAAAAAEAAAA9ACAAAAAAAAEAAAA+ACAAAAAAAAEAAAA/ACAAAAAAAAEAAABAACAAAAAAAAEAAABBACAAAAAAAAEAAABCACAAAAAAAAEAAABDACAAAAAAAAEAAABEACAAAAAAAAEAAABFACAAAAAAAAEAAABGACAAAAAAAAEAAABHACAAAAAAAAEAAABIACAAAAAAAAEAAABJACAAAAAAAAEAAABJACEAAAAAAAEAAABIACEAAAAAAAEAAABHACEAAAAAAAEAAABGACEAAAAAAAEAAABFACEAAAAAAAEAAABEACEAAAAAAAEAAABDACEAAAAAAAEAAABCACEAAAAAAAEAAABBACEAAAAAAAEAAABAACEAAAAAAAEAAAA/ACEAAAAAAAEAAAA+ACEAAAAAAAEAAAA9ACEAAAAAAAEAAAA8ACEAAAAAAAEAAAA=") + +[node name="LevelEnd" parent="." index="7"] +position = Vector2(1424, 602) diff --git a/game/levels/level_3.tscn b/game/levels/level_3.tscn new file mode 100644 index 0000000..5ba69fc --- /dev/null +++ b/game/levels/level_3.tscn @@ -0,0 +1,180 @@ +[gd_scene load_steps=22 format=4 uid="uid://ungdvjmfc6v7"] + +[ext_resource type="PackedScene" uid="uid://mpsu4g2b5h3a" path="res://game/levels/abstract_level.tscn" id="1_4awbs"] +[ext_resource type="PackedScene" uid="uid://b7mhdrj3b6loq" path="res://game/doors/door.tscn" id="2_rvmgs"] +[ext_resource type="PackedScene" uid="uid://g0n5npbt3hb2" path="res://game/doors/circle_door.tscn" id="3_pkj3y"] +[ext_resource type="PackedScene" uid="uid://cvhovmnl050os" path="res://game/objects/wardrobe.tscn" id="4_54a2v"] +[ext_resource type="PackedScene" uid="uid://c4gqqhlew67ay" path="res://game/pickups/circle_key_pickup.tscn" id="4_nangp"] +[ext_resource type="PackedScene" uid="uid://baqawh1drerhk" path="res://game/objects/table_s.tscn" id="5_q1mik"] +[ext_resource type="PackedScene" uid="uid://btpkbyyteewsh" path="res://game/objects/chair_b.tscn" id="6_lu8lf"] +[ext_resource type="PackedScene" uid="uid://crccdk7wmuqig" path="res://game/objects/painting_h_l.tscn" id="7_gkiew"] +[ext_resource type="PackedScene" uid="uid://bo7756lp68bl1" path="res://game/objects/painting_v_s.tscn" id="8_t7g3k"] +[ext_resource type="PackedScene" uid="uid://b3kyqvuxmfn8f" path="res://game/objects/fireplace.tscn" id="9_kqu3l"] +[ext_resource type="PackedScene" uid="uid://x82wjrsqdfd" path="res://game/objects/chair_l.tscn" id="10_b1jnq"] +[ext_resource type="PackedScene" uid="uid://b6wgujelmka5p" path="res://game/objects/chair_r.tscn" id="11_54p7s"] +[ext_resource type="PackedScene" uid="uid://d330w1ygg6uxy" path="res://game/objects/painting_v_l.tscn" id="12_80tx3"] +[ext_resource type="PackedScene" uid="uid://c0bk5sk661hi1" path="res://game/objects/painting_h_s.tscn" id="13_73jkm"] +[ext_resource type="PackedScene" uid="uid://dx1yasi8wlaye" path="res://game/objects/bookstand.tscn" id="14_o683l"] +[ext_resource type="PackedScene" uid="uid://bdwbdnbenueu1" path="res://game/objects/table_m.tscn" id="15_pkjbe"] +[ext_resource type="PackedScene" uid="uid://b8pvlnpdnfmd0" path="res://game/objects/chair_f.tscn" id="16_o61p0"] +[ext_resource type="PackedScene" uid="uid://b1cq0uor2sk6k" path="res://game/objects/table_l.tscn" id="17_q1mik"] +[ext_resource type="PackedScene" uid="uid://d3m8kf7lqmyb8" path="res://game/objects/flask_l.tscn" id="17_t7g3k"] +[ext_resource type="PackedScene" uid="uid://bt4smb361amjj" path="res://game/objects/flask_s.tscn" id="18_kqu3l"] +[ext_resource type="PackedScene" uid="uid://c6qy8uybkn4x" path="res://game/objects/plate.tscn" id="20_b1jnq"] + +[node name="Level3" instance=ExtResource("1_4awbs")] +player_falling_at_start = true + +[node name="Room1Door" parent="Doors" index="0" instance=ExtResource("2_rvmgs")] +position = Vector2(336, 440) + +[node name="Room2Door" parent="Doors" index="1" instance=ExtResource("2_rvmgs")] +position = Vector2(530, 744) + +[node name="CircleDoor" parent="Doors" index="2" instance=ExtResource("3_pkj3y")] +position = Vector2(702, 744) + +[node name="KeyDoor" parent="Doors" index="3" instance=ExtResource("2_rvmgs")] +position = Vector2(590, 1064) + +[node name="Room1" type="Node2D" parent="Objects" index="0"] +position = Vector2(117, 396) + +[node name="Wardrobe1" parent="Objects/Room1" index="0" instance=ExtResource("4_54a2v")] +position = Vector2(-210, 46) + +[node name="Wardrobe2" parent="Objects/Room1" index="1" instance=ExtResource("4_54a2v")] +position = Vector2(-178, 46) + +[node name="TableS" parent="Objects/Room1" index="2" instance=ExtResource("5_q1mik")] +position = Vector2(-139, 59) + +[node name="ChairB" parent="Objects/Room1" index="3" instance=ExtResource("6_lu8lf")] +position = Vector2(-139, 54) + +[node name="PaintingHL" parent="Objects/Room1" index="4" instance=ExtResource("7_gkiew")] +position = Vector2(137, 13) + +[node name="PaintingVS" parent="Objects/Room1" index="5" instance=ExtResource("8_t7g3k")] +position = Vector2(52, 61) + +[node name="Tunnel" type="Node2D" parent="Objects" index="1"] +position = Vector2(423, 442) + +[node name="PaintingHL" parent="Objects/Tunnel" index="0" instance=ExtResource("7_gkiew")] + +[node name="Room2" type="Node2D" parent="Objects" index="2"] +position = Vector2(603, 710) + +[node name="Fireplace" parent="Objects/Room2" index="0" instance=ExtResource("9_kqu3l")] +position = Vector2(2, 42) + +[node name="ChairL" parent="Objects/Room2" index="1" instance=ExtResource("10_b1jnq")] +position = Vector2(20, 44) + +[node name="ChairR" parent="Objects/Room2" index="2" instance=ExtResource("11_54p7s")] +position = Vector2(-16, 44) + +[node name="PaintingVS" parent="Objects/Room2" index="3" instance=ExtResource("8_t7g3k")] +position = Vector2(1, 5) + +[node name="Shaft" type="Node2D" parent="Objects" index="3"] +position = Vector2(350, 783) + +[node name="PaintingVL" parent="Objects/Shaft" index="0" instance=ExtResource("12_80tx3")] +position = Vector2(-13, 73) + +[node name="PaintingHS" parent="Objects/Shaft" index="1" instance=ExtResource("13_73jkm")] +position = Vector2(32, -40) + +[node name="Bookstand" parent="Objects/Shaft" index="2" instance=ExtResource("14_o683l")] +position = Vector2(-48, 151) + +[node name="ChairL" parent="Objects/Shaft" index="3" instance=ExtResource("10_b1jnq")] +position = Vector2(-31, 147) + +[node name="KeyRoom" type="Node2D" parent="Objects" index="4"] +position = Vector2(543, 1079) + +[node name="ChairF" parent="Objects/KeyRoom" index="0" instance=ExtResource("16_o61p0")] +position = Vector2(3, -5) + +[node name="TableM" parent="Objects/KeyRoom" index="1" instance=ExtResource("15_pkjbe")] + +[node name="FlaskL" parent="Objects/KeyRoom" index="2" instance=ExtResource("17_t7g3k")] +position = Vector2(-5, -16) + +[node name="FlaskS" parent="Objects/KeyRoom" index="3" instance=ExtResource("18_kqu3l")] +position = Vector2(1, -15) + +[node name="ChairB1" parent="Objects/KeyRoom" index="4" instance=ExtResource("6_lu8lf")] +position = Vector2(-9, -5) + +[node name="ChairB2" parent="Objects/KeyRoom" index="5" instance=ExtResource("6_lu8lf")] +position = Vector2(10, -5) + +[node name="ExitRoom" type="Node2D" parent="Objects" index="5"] +position = Vector2(932, 754) + +[node name="ChairL" parent="Objects/ExitRoom" index="0" instance=ExtResource("10_b1jnq")] +position = Vector2(24, 0) + +[node name="ChairR" parent="Objects/ExitRoom" index="1" instance=ExtResource("11_54p7s")] +position = Vector2(-48, 0) + +[node name="ChairF1" parent="Objects/ExitRoom" index="2" instance=ExtResource("16_o61p0")] +position = Vector2(-33, 0) + +[node name="ChairF2" parent="Objects/ExitRoom" index="3" instance=ExtResource("16_o61p0")] +position = Vector2(-14, 0) + +[node name="ChairF3" parent="Objects/ExitRoom" index="4" instance=ExtResource("16_o61p0")] +position = Vector2(5, 0) + +[node name="TableL" parent="Objects/ExitRoom" index="5" instance=ExtResource("17_q1mik")] +position = Vector2(-12, 5) + +[node name="Plate1" parent="Objects/ExitRoom" index="6" instance=ExtResource("20_b1jnq")] +position = Vector2(-43, -5) + +[node name="Plate2" parent="Objects/ExitRoom" index="7" instance=ExtResource("20_b1jnq")] +position = Vector2(-25, -5) + +[node name="Plate3" parent="Objects/ExitRoom" index="8" instance=ExtResource("20_b1jnq")] +position = Vector2(-16, -5) + +[node name="Plate4" parent="Objects/ExitRoom" index="9" instance=ExtResource("20_b1jnq")] +position = Vector2(-1, -5) + +[node name="Plate5" parent="Objects/ExitRoom" index="10" instance=ExtResource("20_b1jnq")] +position = Vector2(19, -5) + +[node name="ChairB1" parent="Objects/ExitRoom" index="11" instance=ExtResource("6_lu8lf")] +position = Vector2(-29, 0) + +[node name="ChairB2" parent="Objects/ExitRoom" index="12" instance=ExtResource("6_lu8lf")] +position = Vector2(-12, 0) + +[node name="ChairB3" parent="Objects/ExitRoom" index="13" instance=ExtResource("6_lu8lf")] +position = Vector2(2, 0) + +[node name="PaintingHL" parent="Objects/ExitRoom" index="14" instance=ExtResource("7_gkiew")] +position = Vector2(-13, -39) + +[node name="CircleKeyPickup" parent="Pickups" index="0" instance=ExtResource("4_nangp")] +position = Vector2(622, 1062) + +[node name="GrayWalls" parent="Tiles" index="0"] +tile_map_data = PackedByteArray("AAABAAAAAAAAAAEAAAABAP//AAAAAAEAAAABAP7/AAAAAAEAAAABAP3/AAAAAAEAAAABAPz/AAAAAAEAAAABAPv/AAAAAAEAAAABAPr/AAAAAAEAAAABAPn/AAAAAAEAAAABAPj/AAAAAAEAAAABAPf/AAAAAAEAAAABAPb/AAAAAAEAAAABAPX/AAAAAAEAAAABAPT/AAAAAAEAAAABAPP/AAAAAAEAAAABAAEAAAAAAAEAAAABAAIAAAAAAAEAAAABAAMAAAAAAAEAAAD+/wMAAAACAAEAAAD+/wIAAAACAAEAAAD+/wEAAAACAAEAAAD+/wAAAAACAAEAAAD+////AAACAAEAAAD+//7/AAACAAEAAAD+//3/AAACAAEAAAD+//z/AAACAAEAAAD+//v/AAACAAEAAAD+//r/AAACAAEAAAD+//n/AAACAAEAAAD+//j/AAACAAEAAAD+//f/AAACAAEAAAD+//b/AAACAAEAAAD+//X/AAACAAEAAAD+//T/AAACAAEAAAD+//P/AAACAAEAAAD4/xgAAAACAAEAAAD4/xkAAAACAAEAAAD4/xoAAAACAAEAAAD4/xsAAAACAAEAAAD4/xwAAAACAAEAAAD4/x0AAAADAAEAAAD5/x0AAAABAAAAAAD6/x0AAAABAAAAAAD7/x0AAAABAAAAAAD8/x0AAAABAAAAAAD9/x0AAAABAAAAAAD+/w0AAAACAAEAAAD+/w4AAAACAAEAAAD+/w8AAAACAAEAAAD+/xAAAAACAAEAAAD+/xEAAAACAAEAAAD+/xIAAAACAAEAAAD+/xMAAAACAAEAAAD+/xQAAAACAAEAAAD+/x0AAAABAAAAAAD//x0AAAABAAAAAAAAAB0AAAABAAAAAAABAA0AAAAAAAEAAAABAA4AAAAAAAEAAAABAA8AAAAAAAEAAAABABAAAAAAAAEAAAABABEAAAAAAAEAAAABAB0AAAABAAAAAAACAB0AAAABAAAAAAADAB0AAAACAAAAAAADAB4AAAACAAEAAAADAB8AAAACAAEAAAADACAAAAACAAEAAAADACEAAAACAAEAAAADACIAAAACAAEAAAADACMAAAACAAEAAAAEACMAAAABAAIAAAAFACMAAAABAAIAAAAGACMAAAABAAIAAAAHACMAAAABAAIAAAAIACMAAAABAAIAAAAJACAAAAAAAAAAAAAJACEAAAAAAAEAAAAJACIAAAAAAAEAAAAJACMAAAAAAAEAAAANAB0AAAAAAAAAAAANAB4AAAAAAAEAAAANAB8AAAAAAAEAAAAOAB0AAAABAAAAAAAPAB0AAAABAAAAAAAQAB0AAAABAAAAAAARAB0AAAABAAAAAAASAB0AAAABAAAAAAATAB0AAAABAAAAAAAUABMAAAAGAAEAAAAUABQAAAAGAAEAAAAUABUAAAAGAAEAAAAUABYAAAAGAAEAAAAUABcAAAAGAAEAAAAUABgAAAAGAAEAAAAUABkAAAAGAAIAAAAUAB0AAAABAAAAAAAVAB0AAAABAAAAAAAWAB0AAAABAAAAAAAXAB0AAAACAAAAAAAXAB4AAAACAAEAAAAXAB8AAAACAAEAAAAXACAAAAACAAEAAAAYACAAAAABAAIAAAAZACAAAAABAAIAAAAaACAAAAABAAIAAAAbACAAAAABAAIAAAAcACAAAAABAAIAAAAdAB0AAAAAAAAAAAAdAB4AAAAAAAEAAAAdAB8AAAAAAAEAAAAdACAAAAAAAAEAAAAeAB0AAAABAAAAAAAfABkAAAADAAUAAAAfAB0AAAABAAAAAAAgABkAAAABAAIAAAAgAB0AAAABAAAAAAAhABkAAAABAAIAAAAhAB0AAAABAAAAAAAiABkAAAABAAIAAAAiAB0AAAABAAAAAAAjABkAAAABAAIAAAAjAB0AAAABAAAAAAAkABkAAAABAAIAAAAkAB0AAAABAAAAAAAlABkAAAABAAIAAAAlAB0AAAACAAAAAAAmABkAAAABAAIAAAAnABkAAAABAAIAAAABAAwAAAAAAAEAAAABAAsAAAAAAAEAAAABAAoAAAAAAAEAAAABAAkAAAAAAAEAAAABAAgAAAAAAAEAAAABAAcAAAAAAAEAAAABAAYAAAAAAAEAAAABAAUAAAAAAAEAAAABAAQAAAAAAAEAAAD+/wQAAAACAAEAAAD+/wUAAAACAAEAAAD+/wYAAAACAAEAAAD+/wcAAAACAAEAAAD+/wgAAAACAAEAAAD+/wkAAAACAAEAAAD+/woAAAACAAEAAAD+/wsAAAACAAEAAAD+/wwAAAACAAEAAAAKACAAAAABAAAAAAALACAAAAABAAAAAAAMACAAAAABAAAAAAANACAAAAAEAAEAAAAfABgAAAAAAAEAAAAfABcAAAAAAAEAAAAfABYAAAAAAAEAAAAfABUAAAAAAAEAAAAfABQAAAAAAAEAAAAfABMAAAAAAAEAAAAfABIAAAAAAAEAAAAfABEAAAAAAAEAAAAfABAAAAAAAAEAAAAfAA8AAAAAAAEAAAAfAA4AAAAAAAEAAAAfAA0AAAAAAAEAAAAfAAwAAAAAAAEAAAAfAAsAAAAAAAEAAAAoABoAAAAAAAEAAAAoABsAAAAAAAEAAAAoABwAAAAAAAEAAAAoAB0AAAAEAAQAAAAoABkAAAAEAAAAAAAoAB4AAAAEAAQAAAAoAB8AAAAEAAQAAAAoACAAAAAEAAQAAAAoACEAAAAEAAQAAAAoACIAAAAEAAQAAAAoACMAAAAEAAQAAAAoACQAAAAEAAQAAAAoACUAAAAEAAQAAAAoACYAAAAEAAQAAAAoACcAAAAEAAQAAAAlAB4AAAACAAEAAAAlAB8AAAACAAEAAAAlACAAAAACAAEAAAAlACEAAAACAAEAAAAlACIAAAACAAEAAAAlACMAAAACAAEAAAAlACQAAAACAAEAAAAlACUAAAACAAEAAAAlACYAAAACAAEAAAAlACcAAAACAAEAAAAmADAAAAABAAAAAAAnADAAAAABAAAAAAAoADAAAAABAAAAAAApADAAAAABAAAAAAAqADAAAAABAAAAAAAjADAAAAABAAAAAAAkADAAAAABAAAAAAAlADAAAAABAAAAAAArADAAAAABAAAAAAAsADAAAAABAAAAAAAtADAAAAABAAAAAAAuADAAAAABAAAAAAAvADAAAAABAAAAAAAgACsAAAACAAEAAAAgACwAAAACAAIAAAAfACwAAAABAAIAAAAeACwAAAABAAIAAAAdACwAAAABAAIAAAAcACwAAAABAAIAAAAbACwAAAABAAIAAAAaACwAAAABAAIAAAAZACwAAAABAAIAAAAiADAAAAABAAAAAAAhADAAAAABAAAAAAAgADAAAAABAAAAAAArACsAAAAAAAEAAAArACwAAAAAAAIAAAAsACwAAAABAAIAAAAtACwAAAABAAIAAAAuACwAAAABAAIAAAAvACwAAAABAAIAAAAwACwAAAABAAIAAAAxACwAAAABAAIAAAAyACwAAAABAAIAAAAzACwAAAACAAIAAAAwADAAAAABAAAAAAAxADAAAAABAAAAAAAyADAAAAABAAAAAAAzADAAAAACAAQAAAAzACsAAAACAAEAAAA+ADAAAAAHAAMAAAA+ADEAAAAGAAEAAAA+ADIAAAAGAAEAAAA+ADMAAAAGAAEAAAA+ADQAAAAGAAEAAAA+ADUAAAAGAAEAAAA+ADYAAAACAAEAAAA+ADcAAAACAAEAAAA+ADgAAAACAAEAAAA+ADkAAAACAAEAAAA+ADoAAAACAAEAAAA+ADsAAAACAAEAAAA+ADwAAAACAAEAAAA+AD0AAAACAAEAAABBADAAAAAAAAEAAABBADEAAAAAAAEAAABBADIAAAAAAAEAAABBADMAAAAAAAEAAABBADQAAAAAAAEAAABBADUAAAAAAAEAAABBADYAAAAAAAEAAABBADcAAAAAAAEAAABBADgAAAAAAAEAAABBADkAAAAAAAEAAABBADoAAAAAAAEAAABBADsAAAAAAAEAAABBADwAAAAAAAEAAABBAD0AAAAAAAEAAABBAC8AAAAAAAEAAABBAC4AAAAAAAEAAABBAC0AAAAAAAEAAABBACwAAAAAAAEAAABBACsAAAAAAAEAAAAzADEAAAACAAEAAAAzADIAAAACAAEAAAAzADMAAAACAAEAAAAzADQAAAACAAEAAAAzADUAAAACAAEAAAA0ADUAAAABAAIAAAA1ADUAAAABAAIAAAA2ADUAAAABAAIAAAA3ADUAAAABAAIAAAA4ADUAAAABAAIAAAA5ADUAAAABAAIAAAA6ADUAAAABAAIAAAA7ADUAAAABAAIAAAA8ADUAAAABAAIAAAA9ADUAAAABAAIAAABBAD4AAAAAAAEAAABBAD8AAAAAAAEAAABBAEAAAAAAAAEAAABBAEEAAAAAAAEAAABBAEIAAAAAAAEAAABBAEMAAAAAAAEAAABBAEQAAAAAAAEAAABBAEUAAAAAAAEAAABBAEYAAAAAAAEAAABBAEcAAAAAAAEAAABBAEgAAAAAAAEAAABBAEkAAAAAAAEAAABBAEoAAAAAAAEAAABBAEsAAAAAAAEAAABBAEwAAAAAAAEAAABBAE0AAAAAAAEAAABBAE4AAAAAAAEAAABBAE8AAAAAAAEAAABBAFAAAAAAAAEAAABBAFEAAAAAAAEAAAA+AD4AAAACAAEAAAA+AD8AAAACAAEAAAA+AEAAAAACAAEAAAA+AEEAAAACAAEAAAA+AEIAAAACAAEAAAA+AEMAAAACAAEAAAA+AEQAAAACAAEAAAA+AEUAAAACAAEAAAA+AEYAAAACAAEAAAA+AEcAAAACAAEAAAA+AEgAAAACAAEAAAA+AEkAAAACAAEAAAA+AEoAAAACAAEAAAA+AEsAAAACAAEAAAA+AEwAAAACAAEAAAA+AE0AAAACAAEAAAA+AE4AAAACAAEAAAA+AE8AAAACAAEAAAA+AFAAAAACAAEAAAA+AFEAAAACAAEAAAA+AFIAAAACAAEAAAA+AFMAAAACAAEAAAA+AFQAAAACAAEAAAA+AFUAAAACAAEAAAA+AFYAAAACAAEAAAA+AFcAAAACAAEAAAA+AFgAAAACAAEAAAA+AFkAAAACAAEAAAA+AFoAAAACAAEAAAA+AFsAAAACAAEAAAA+AFwAAAACAAEAAAA+AF0AAAACAAEAAAA+AF4AAAACAAEAAABBAFIAAAAAAAEAAABBAFMAAAAAAAEAAABBAFQAAAAAAAEAAABBAFUAAAAAAAEAAABBAFYAAAAAAAEAAABBAFcAAAAAAAEAAABBAFgAAAAAAAEAAABBAFkAAAAAAAEAAABBAFoAAAAAAAEAAABBAFsAAAAAAAEAAABBAFwAAAAAAAEAAABBAF0AAAAAAAEAAABBAF4AAAAAAAEAAAAfADAAAAABAAAAAAAeADAAAAABAAAAAAAdADAAAAABAAAAAAAcADAAAAABAAAAAAAbADAAAAABAAAAAAAaADAAAAABAAAAAAAZADAAAAAAAAAAAAAZADEAAAAAAAEAAAAZADIAAAAAAAEAAAAZADMAAAAEAAEAAAAYADMAAAAAAAAAAAAYADQAAAAAAAEAAAAYADUAAAAAAAEAAAAYADYAAAAEAAEAAAAXADYAAAAAAAAAAAAXADcAAAAAAAEAAAAXADgAAAADAAUAAAASADgAAAAEAAUAAAASADcAAAACAAEAAAASADYAAAACAAEAAAASADUAAAACAAEAAAASADQAAAACAAEAAAASADMAAAACAAEAAAASADIAAAACAAEAAAASADEAAAACAAEAAAASADAAAAACAAEAAAASAC8AAAACAAEAAAASAC4AAAACAAEAAAASAC0AAAACAAEAAAAYACwAAAABAAIAAAAXACwAAAABAAIAAAAWACwAAAABAAIAAAAVACwAAAABAAIAAAAUACwAAAABAAIAAAATACwAAAABAAIAAAASACwAAAADAAAAAAAUABIAAAAGAAYAAAASADsAAAABAAAAAAATADsAAAABAAAAAAAUADsAAAABAAAAAAAVADsAAAABAAAAAAAWADsAAAABAAAAAAAXADsAAAABAAAAAAARADgAAAADAAAAAAARADkAAAACAAEAAAARADoAAAACAAEAAAARADsAAAADAAEAAAAYADgAAAACAAIAAAAYADsAAAACAAQAAAAfADkAAAAAAAEAAAAfADoAAAAAAAEAAAAfADsAAAAAAAEAAAAfADwAAAAAAAEAAAAfAD0AAAAAAAEAAAAfAD4AAAAAAAIAAAAfAEEAAAAHAAMAAAAfAEIAAAAGAAEAAAAfAEMAAAAGAAEAAAAYADwAAAACAAEAAAAYAD0AAAACAAEAAAAYAD4AAAACAAEAAAAYAD8AAAACAAEAAAAYAEAAAAACAAEAAAAYAEEAAAACAAEAAAAYAEIAAAACAAEAAAAYAEMAAAACAAEAAAAfAEQAAAADAAYAAAAfAEUAAAAAAAEAAAAfAEYAAAAAAAEAAAAYAEQAAAACAAEAAAAYAEUAAAACAAEAAAAYAEYAAAACAAEAAAAYAEcAAAACAAEAAAAfAEcAAAAAAAEAAAAZAEcAAAABAAIAAAAaAEcAAAABAAIAAAAbAEcAAAABAAIAAAAcAEcAAAABAAIAAAAdAEcAAAABAAIAAAAeAEcAAAABAAIAAAAgAD4AAAABAAIAAAAhAD4AAAABAAIAAAAgAEEAAAABAAMAAAAiAD4AAAABAAIAAAAjAD4AAAABAAIAAAAkAD4AAAAEAAAAAAAkAD8AAAAAAAEAAAAkAEAAAAAAAAIAAAAgAEQAAAABAAAAAAAhAEQAAAABAAAAAAAiAEQAAAABAAAAAAAjAEQAAAABAAAAAAAkAEQAAAABAAAAAAAlAEQAAAABAAAAAAAmAEQAAAABAAAAAAAnAEQAAAABAAAAAAAoAEQAAAAEAAEAAAAoAEMAAAAAAAEAAAAoAEIAAAAAAAEAAAAoAEEAAAAAAAEAAAAoAEAAAAAEAAAAAAAnAEAAAAABAAIAAAAmAEAAAAABAAIAAAAlAEAAAAABAAIAAAAZADcAAAABAAIAAAAaADcAAAABAAIAAAAbADcAAAABAAIAAAAcADcAAAABAAIAAAAdADcAAAABAAIAAAAeADcAAAABAAIAAAAfADcAAAAEAAAAAAAYADcAAAADAAAAAAAfADgAAAAAAAEAAAA=") + +[node name="BlackWalls" parent="Tiles" index="1"] +tile_map_data = PackedByteArray("AAAWADgAAAABAAIAAAAVADgAAAABAAIAAAAUADgAAAABAAIAAAATADgAAAABAAIAAAAZAD4AAAABAAAAAAAaAD4AAAABAAAAAAAbAD4AAAABAAAAAAAcAD4AAAABAAAAAAAdAD4AAAABAAAAAAAeAD4AAAABAAAAAAA=") + +[node name="WhiteWalls" parent="Tiles" index="2"] +tile_map_data = PackedByteArray("AAD4/xUAAAADAAAAAAD4/xYAAAACAAEAAAD4/xcAAAACAAEAAAD5/xUAAAABAAIAAAD6/xUAAAABAAIAAAD7/xUAAAABAAIAAAD8/xUAAAABAAIAAAD9/xUAAAABAAIAAAD+/xUAAAACAAIAAAAJABIAAAABAAIAAAAKABIAAAABAAIAAAALABIAAAABAAIAAAAMABIAAAABAAIAAAANABIAAAABAAIAAAAOABIAAAABAAIAAAAPABIAAAABAAIAAAAQABIAAAABAAIAAAARABIAAAABAAIAAAASABIAAAABAAIAAAATABIAAAABAAIAAAAXABkAAAABAAIAAAAYABkAAAABAAIAAAAZABkAAAABAAIAAAAaABkAAAABAAIAAAAbABkAAAABAAIAAAAcABkAAAABAAIAAAAdABkAAAABAAIAAAABABIAAAAAAAIAAAACABIAAAABAAIAAAADABIAAAABAAIAAAAEABIAAAABAAIAAAAFABIAAAABAAIAAAAGABIAAAABAAIAAAAHABIAAAABAAIAAAAIABIAAAABAAIAAAAlACgAAAACAAIAAAAoACgAAAAAAAIAAAApACgAAAABAAIAAAAqACgAAAABAAIAAAArACkAAAAAAAEAAAArACgAAAAEAAAAAAArACoAAAAAAAEAAAAkACgAAAABAAIAAAAjACgAAAABAAIAAAAiACgAAAABAAIAAAAhACgAAAABAAIAAAAgACgAAAADAAAAAAAgACkAAAACAAEAAAAgACoAAAACAAEAAAAzACoAAAACAAEAAAAzACkAAAACAAEAAAAzACgAAAADAAAAAAA0ACgAAAABAAIAAAA1ACgAAAABAAIAAAA2ACgAAAABAAIAAAA3ACgAAAABAAIAAAA4ACgAAAABAAIAAAA5ACgAAAABAAIAAAA6ACgAAAABAAIAAAA7ACgAAAABAAIAAAA8ACgAAAABAAIAAAA9ACgAAAABAAIAAAA+ACgAAAABAAIAAAA/ACgAAAABAAIAAAA0ADAAAAABAAAAAAA1ADAAAAABAAAAAAA2ADAAAAABAAAAAAA3ADAAAAABAAAAAAA4ADAAAAABAAAAAAA5ADAAAAABAAAAAAA6ADAAAAABAAAAAAA7ADAAAAABAAAAAAA8ADAAAAABAAAAAAA9ADAAAAABAAAAAAA/ADAAAAABAAAAAABAADAAAAABAAAAAABAACgAAAABAAIAAABBACgAAAAEAAAAAABBACoAAAAAAAEAAABBACkAAAAAAAEAAAAWABkAAAABAAIAAAAVABkAAAABAAIAAAAeABkAAAABAAIAAAAUABEAAAACAAEAAAAUABAAAAACAAEAAAAUAA8AAAACAAEAAAAUAA4AAAACAAEAAAAUAA0AAAACAAEAAAAUAAwAAAACAAEAAAAUAAsAAAACAAEAAAAZADsAAAABAAAAAAAaADsAAAABAAAAAAAbADsAAAABAAAAAAAcADsAAAABAAAAAAAdADsAAAABAAAAAAAeADsAAAABAAAAAAAZAEEAAAABAAAAAAAaAEEAAAABAAAAAAAbAEEAAAABAAAAAAAcAEEAAAABAAAAAAAdAEEAAAABAAAAAAAeAEEAAAABAAAAAAA=") + +[node name="Traps" parent="Tiles" index="3"] +tile_map_data = PackedByteArray("AAAEACEAAAAAAAAAAAAEACIAAAAAAAEAAAAEACMAAAAAAAEAAAAFACEAAAAAAAAAAAAFACIAAAAAAAEAAAAFACMAAAAAAAEAAAAGACEAAAAAAAAAAAAGACIAAAAAAAEAAAAGACMAAAAAAAEAAAAHACEAAAAAAAAAAAAHACIAAAAAAAEAAAAHACMAAAAAAAEAAAAIACEAAAAAAAAAAAAIACIAAAAAAAEAAAAIACMAAAAAAAEAAAAYAB4AAAAAAAAAAAAYAB8AAAAAAAEAAAAYACAAAAAAAAEAAAAZAB4AAAAAAAAAAAAZAB8AAAAAAAEAAAAZACAAAAAAAAEAAAAaAB4AAAAAAAAAAAAaAB8AAAAAAAEAAAAaACAAAAAAAAEAAAAbAB4AAAAAAAAAAAAbAB8AAAAAAAEAAAAbACAAAAAAAAEAAAAcAB4AAAAAAAAAAAAcAB8AAAAAAAEAAAAcACAAAAAAAAEAAAA0ADMAAAAAAAAAAAA1ADMAAAAAAAAAAAA2ADMAAAAAAAAAAAA3ADMAAAAAAAAAAAA4ADMAAAAAAAAAAAA5ADMAAAAAAAAAAAA6ADMAAAAAAAAAAAA7ADMAAAAAAAAAAAA8ADMAAAAAAAAAAAA9ADMAAAAAAAAAAAA0ADUAAAAAAAEAAAA1ADUAAAAAAAEAAAA2ADUAAAAAAAEAAAA3ADUAAAAAAAEAAAA4ADUAAAAAAAEAAAA5ADUAAAAAAAEAAAA6ADUAAAAAAAEAAAA7ADUAAAAAAAEAAAA8ADUAAAAAAAEAAAA9ADUAAAAAAAEAAAA9ADQAAAAAAAEAAAA8ADQAAAAAAAEAAAA7ADQAAAAAAAEAAAA6ADQAAAAAAAEAAAA5ADQAAAAAAAEAAAA4ADQAAAAAAAEAAAA3ADQAAAAAAAEAAAA2ADQAAAAAAAEAAAA1ADQAAAAAAAEAAAA0ADQAAAAAAAEAAAAZAEUAAAAAAAAAAAAaAEUAAAAAAAAAAAAbAEUAAAAAAAAAAAAcAEUAAAAAAAAAAAAdAEUAAAAAAAAAAAAeAEUAAAAAAAAAAAAZAEYAAAAAAAEAAAAaAEYAAAAAAAEAAAAbAEYAAAAAAAEAAAAcAEYAAAAAAAEAAAAdAEYAAAAAAAEAAAAeAEYAAAAAAAEAAAAZAEcAAAAAAAEAAAAaAEcAAAAAAAEAAAAbAEcAAAAAAAEAAAAcAEcAAAAAAAEAAAAdAEcAAAAAAAEAAAAeAEcAAAAAAAEAAAA=") + +[node name="LevelEnd" parent="." index="7"] +position = Vector2(1024, 1218) diff --git a/game/managers/level_manager.gd b/game/managers/level_manager.gd new file mode 100644 index 0000000..3d7c13d --- /dev/null +++ b/game/managers/level_manager.gd @@ -0,0 +1,13 @@ +class_name CLevelManager +extends Node + + +@export var levels : Array[PackedScene] = [] + + +var current_level_index := 0 + + + +func _ready() -> void: + levels = levels.filter(func(item: PackedScene) -> bool: return item != null) diff --git a/game/managers/level_manager.gd.uid b/game/managers/level_manager.gd.uid new file mode 100644 index 0000000..00262a5 --- /dev/null +++ b/game/managers/level_manager.gd.uid @@ -0,0 +1 @@ +uid://w4ofprtn7lu8 diff --git a/game/managers/level_manager.tscn b/game/managers/level_manager.tscn new file mode 100644 index 0000000..0e28d14 --- /dev/null +++ b/game/managers/level_manager.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=5 format=3 uid="uid://b2rgtl2dyorip"] + +[ext_resource type="Script" uid="uid://w4ofprtn7lu8" path="res://game/managers/level_manager.gd" id="1_te7jw"] +[ext_resource type="PackedScene" uid="uid://dlpi1ptis3wna" path="res://game/levels/level_1.tscn" id="2_r84xe"] +[ext_resource type="PackedScene" uid="uid://cc06c06hlv7ix" path="res://game/levels/level_2.tscn" id="3_yl05u"] +[ext_resource type="PackedScene" uid="uid://ungdvjmfc6v7" path="res://game/levels/level_3.tscn" id="4_eo2u3"] + +[node name="LevelManager" type="Node"] +script = ExtResource("1_te7jw") +levels = Array[PackedScene]([ExtResource("2_r84xe"), ExtResource("3_yl05u"), ExtResource("4_eo2u3")]) diff --git a/game/menu/completion_menu.gd b/game/menu/completion_menu.gd index 76a04cd..c1a57e3 100644 --- a/game/menu/completion_menu.gd +++ b/game/menu/completion_menu.gd @@ -7,15 +7,8 @@ extends Control @onready var focus_timer : Timer = $FocusTimer -func _get_next_level(remove := false) -> PackedScene: - if not get_tree().has_meta(AbstractLevel.NEXT_LEVEL_META): return null - - var next_level : PackedScene = get_tree().get_meta(AbstractLevel.NEXT_LEVEL_META) - - if remove: - get_tree().remove_meta(AbstractLevel.NEXT_LEVEL_META) - - return next_level +func _is_last_level() -> bool: + return LevelManager.current_level_index >= (LevelManager.levels.size() - 1) func _on_gui_focus_changed(_node: Control) -> void: @@ -25,7 +18,8 @@ func _on_gui_focus_changed(_node: Control) -> void: func _on_next_level_button_pressed() -> void: SoundManager.play_ui_stream(SoundManager.ui_stream_accept) get_tree().paused = false - get_tree().change_scene_to_packed(_get_next_level(true)) + LevelManager.current_level_index += 1 + get_tree().change_scene_to_packed(LevelManager.levels[LevelManager.current_level_index]) func _on_main_menu_button_pressed() -> void: @@ -37,7 +31,7 @@ func _on_main_menu_button_pressed() -> void: func _on_visibility_changed() -> void: if not is_node_ready(): return if visible: - next_level_button.visible = _get_next_level() != null + next_level_button.visible = not _is_last_level() focus_timer.start() get_viewport().gui_focus_changed.connect(_on_gui_focus_changed) else: diff --git a/game/menu/level_selection.gd b/game/menu/level_selection.gd index 355ba57..3681a9e 100644 --- a/game/menu/level_selection.gd +++ b/game/menu/level_selection.gd @@ -2,18 +2,12 @@ class_name LevelSelection extends Control -@export var levels : Array[PackedScene] = [] - - @onready var grid : GridContainer = $%GridContainer -func _ready() -> void: - levels = levels.filter(func(item: PackedScene) -> bool: return item != null) - - for i in range(levels.size()): - var level := levels[i] - var next_level := levels[i+1] if i+1 < levels.size() else null +func _ready() -> void: + for i in range(LevelManager.levels.size()): + var level := LevelManager.levels[i] var disable := SaveManager.completed_levels < i var button : Button = Button.new() @@ -21,7 +15,7 @@ func _ready() -> void: button.disabled = disable button.focus_mode = Control.FOCUS_NONE if disable else Control.FOCUS_ALL grid.add_child(button) - button.pressed.connect(_on_level_selected.bind(i, level, next_level)) + button.pressed.connect(_on_level_selected.bind(i, level)) if i == 0: button.grab_focus() @@ -33,10 +27,9 @@ func _on_gui_focus_changed(_node: Control) -> void: SoundManager.play_ui_stream(SoundManager.ui_stream_select) -func _on_level_selected(index: int, level: PackedScene, next_level: PackedScene) -> void: +func _on_level_selected(index: int, level: PackedScene) -> void: SoundManager.play_ui_stream(SoundManager.ui_stream_accept) - get_tree().set_meta(AbstractLevel.CURRENT_LEVEL_INDEX, index) - get_tree().set_meta(AbstractLevel.NEXT_LEVEL_META, next_level) + LevelManager.current_level_index = index get_tree().change_scene_to_packed(level) diff --git a/game/menu/level_selection.tscn b/game/menu/level_selection.tscn index 1aa3d34..3c35f92 100644 --- a/game/menu/level_selection.tscn +++ b/game/menu/level_selection.tscn @@ -1,8 +1,11 @@ -[gd_scene load_steps=6 format=3 uid="uid://cdw72hewwmypn"] +[gd_scene load_steps=9 format=3 uid="uid://cdw72hewwmypn"] [ext_resource type="Theme" uid="uid://bh56my8b2htnr" path="res://themes/menu.tres" id="1_5cn0b"] [ext_resource type="Script" uid="uid://47impoi24o7g" path="res://game/menu/level_selection.gd" id="1_fb5q3"] [ext_resource type="PackedScene" uid="uid://bmn74wc2vophn" path="res://game/levels/test_level.tscn" id="3_3oqjo"] +[ext_resource type="PackedScene" uid="uid://dlpi1ptis3wna" path="res://game/levels/level_1.tscn" id="3_n2wmw"] +[ext_resource type="PackedScene" uid="uid://cc06c06hlv7ix" path="res://game/levels/level_2.tscn" id="4_0qtcq"] +[ext_resource type="PackedScene" uid="uid://ungdvjmfc6v7" path="res://game/levels/level_3.tscn" id="5_yk0t5"] [sub_resource type="InputEventAction" id="InputEventAction_3oqjo"] action = &"ui_cancel" @@ -19,7 +22,7 @@ grow_horizontal = 2 grow_vertical = 2 theme = ExtResource("1_5cn0b") script = ExtResource("1_fb5q3") -levels = Array[PackedScene]([ExtResource("3_3oqjo"), ExtResource("3_3oqjo")]) +levels = Array[PackedScene]([ExtResource("3_n2wmw"), ExtResource("4_0qtcq"), ExtResource("5_yk0t5"), ExtResource("3_3oqjo")]) [node name="MarginContainer" type="MarginContainer" parent="."] layout_mode = 1 diff --git a/game/objects/bookstand.tscn b/game/objects/bookstand.tscn index e0b55e5..42fa877 100644 --- a/game/objects/bookstand.tscn +++ b/game/objects/bookstand.tscn @@ -4,7 +4,7 @@ [sub_resource type="AtlasTexture" id="AtlasTexture_opqiy"] atlas = ExtResource("1_nvgb0") -region = Rect2(48, 0, 16, 32) +region = Rect2(144, 0, 16, 32) [node name="Bookstand" type="Node2D"] diff --git a/game/objects/cabinet.tscn b/game/objects/cabinet.tscn index 1bb7c66..f711591 100644 --- a/game/objects/cabinet.tscn +++ b/game/objects/cabinet.tscn @@ -4,7 +4,7 @@ [sub_resource type="AtlasTexture" id="AtlasTexture_sqimt"] atlas = ExtResource("1_57t4w") -region = Rect2(128, 32, 32, 32) +region = Rect2(160, 0, 32, 32) [node name="Cabinet" type="Node2D"] diff --git a/game/objects/candle.tscn b/game/objects/candle.tscn new file mode 100644 index 0000000..9888b98 --- /dev/null +++ b/game/objects/candle.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=3 format=3 uid="uid://dwnalr4rphui0"] + +[ext_resource type="Texture2D" uid="uid://ddm4gc2g3aj2i" path="res://images/level/objects.png" id="1_3rimp"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_ajme5"] +atlas = ExtResource("1_3rimp") +region = Rect2(48, 128, 16, 16) + +[node name="Candle" type="Node2D"] + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = SubResource("AtlasTexture_ajme5") diff --git a/game/objects/candles.tscn b/game/objects/candles.tscn new file mode 100644 index 0000000..45d5802 --- /dev/null +++ b/game/objects/candles.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=3 format=3 uid="uid://dbj2f8kpwb8uh"] + +[ext_resource type="Texture2D" uid="uid://ddm4gc2g3aj2i" path="res://images/level/objects.png" id="1_epbkb"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_w5fvp"] +atlas = ExtResource("1_epbkb") +region = Rect2(64, 128, 16, 16) + +[node name="Candles" type="Node2D"] + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = SubResource("AtlasTexture_w5fvp") diff --git a/game/objects/chair_b.tscn b/game/objects/chair_b.tscn new file mode 100644 index 0000000..8163f9b --- /dev/null +++ b/game/objects/chair_b.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=3 format=3 uid="uid://btpkbyyteewsh"] + +[ext_resource type="Texture2D" uid="uid://ddm4gc2g3aj2i" path="res://images/level/objects.png" id="1_e7ewy"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_ea7rc"] +atlas = ExtResource("1_e7ewy") +region = Rect2(112, 32, 16, 32) + +[node name="ChairB" type="Node2D"] + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = SubResource("AtlasTexture_ea7rc") diff --git a/game/objects/chair.tscn b/game/objects/chair_f.tscn similarity index 84% rename from game/objects/chair.tscn rename to game/objects/chair_f.tscn index 1f02261..9e861fc 100644 --- a/game/objects/chair.tscn +++ b/game/objects/chair_f.tscn @@ -4,9 +4,9 @@ [sub_resource type="AtlasTexture" id="AtlasTexture_1kw05"] atlas = ExtResource("1_rse2u") -region = Rect2(176, 0, 16, 32) +region = Rect2(112, 0, 16, 32) -[node name="Chair" type="Node2D"] +[node name="ChairF" type="Node2D"] [node name="Sprite2D" type="Sprite2D" parent="."] texture = SubResource("AtlasTexture_1kw05") diff --git a/game/objects/chair_l.tscn b/game/objects/chair_l.tscn new file mode 100644 index 0000000..c4103b8 --- /dev/null +++ b/game/objects/chair_l.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=3 format=3 uid="uid://x82wjrsqdfd"] + +[ext_resource type="Texture2D" uid="uid://ddm4gc2g3aj2i" path="res://images/level/objects.png" id="1_xguce"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_cktuf"] +atlas = ExtResource("1_xguce") +region = Rect2(128, 0, 16, 32) + +[node name="ChairL" type="Node2D"] + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = SubResource("AtlasTexture_cktuf") diff --git a/game/objects/chair_r.tscn b/game/objects/chair_r.tscn new file mode 100644 index 0000000..ceccaec --- /dev/null +++ b/game/objects/chair_r.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=3 format=3 uid="uid://b6wgujelmka5p"] + +[ext_resource type="Texture2D" uid="uid://ddm4gc2g3aj2i" path="res://images/level/objects.png" id="1_e7ewy"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_e7ewy"] +atlas = ExtResource("1_e7ewy") +region = Rect2(128, 32, 16, 32) + +[node name="ChairR" type="Node2D"] + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = SubResource("AtlasTexture_e7ewy") diff --git a/game/objects/flask_l.tscn b/game/objects/flask_l.tscn new file mode 100644 index 0000000..a388673 --- /dev/null +++ b/game/objects/flask_l.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=3 format=3 uid="uid://d3m8kf7lqmyb8"] + +[ext_resource type="Texture2D" uid="uid://ddm4gc2g3aj2i" path="res://images/level/objects.png" id="1_x6vix"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_i1pbn"] +atlas = ExtResource("1_x6vix") +region = Rect2(64, 64, 16, 16) + +[node name="FlaskL" type="Node2D"] + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = SubResource("AtlasTexture_i1pbn") diff --git a/game/objects/flask_s.tscn b/game/objects/flask_s.tscn new file mode 100644 index 0000000..9122454 --- /dev/null +++ b/game/objects/flask_s.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=3 format=3 uid="uid://bt4smb361amjj"] + +[ext_resource type="Texture2D" uid="uid://ddm4gc2g3aj2i" path="res://images/level/objects.png" id="1_05y3q"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_wg65s"] +atlas = ExtResource("1_05y3q") +region = Rect2(48, 64, 16, 16) + +[node name="FlaskS" type="Node2D"] + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = SubResource("AtlasTexture_wg65s") diff --git a/game/objects/mirror_l.tscn b/game/objects/mirror_l.tscn new file mode 100644 index 0000000..351ca2d --- /dev/null +++ b/game/objects/mirror_l.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=3 format=3 uid="uid://xny1x7me75gc"] + +[ext_resource type="Texture2D" uid="uid://ddm4gc2g3aj2i" path="res://images/level/objects.png" id="1_xsvl5"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_nypty"] +atlas = ExtResource("1_xsvl5") +region = Rect2(144, 64, 32, 16) + +[node name="MirrorL" type="Node2D"] + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = SubResource("AtlasTexture_nypty") diff --git a/game/objects/mirror_s.tscn b/game/objects/mirror_s.tscn new file mode 100644 index 0000000..c367d40 --- /dev/null +++ b/game/objects/mirror_s.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=3 format=3 uid="uid://bmx60xftq8f2v"] + +[ext_resource type="Texture2D" uid="uid://ddm4gc2g3aj2i" path="res://images/level/objects.png" id="1_vvvt3"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_7fxax"] +atlas = ExtResource("1_vvvt3") +region = Rect2(144, 48, 16, 16) + +[node name="MirrorS" type="Node2D"] + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = SubResource("AtlasTexture_7fxax") diff --git a/game/objects/painting_v_l.tscn b/game/objects/painting_v_l.tscn index 1268991..a63a1b7 100644 --- a/game/objects/painting_v_l.tscn +++ b/game/objects/painting_v_l.tscn @@ -4,7 +4,7 @@ [sub_resource type="AtlasTexture" id="AtlasTexture_hq5lq"] atlas = ExtResource("1_v74mh") -region = Rect2(96, 0, 32, 48) +region = Rect2(80, 0, 32, 48) [node name="PaintingVL" type="Node2D"] diff --git a/game/objects/painting_v_s.tscn b/game/objects/painting_v_s.tscn index a47c6b3..93f1197 100644 --- a/game/objects/painting_v_s.tscn +++ b/game/objects/painting_v_s.tscn @@ -4,7 +4,7 @@ [sub_resource type="AtlasTexture" id="AtlasTexture_0ynw1"] atlas = ExtResource("1_1hdr2") -region = Rect2(64, 0, 32, 32) +region = Rect2(48, 0, 32, 32) [node name="PaintingVS" type="Node2D"] diff --git a/game/objects/plate.tscn b/game/objects/plate.tscn new file mode 100644 index 0000000..e0e10b1 --- /dev/null +++ b/game/objects/plate.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=3 format=3 uid="uid://c6qy8uybkn4x"] + +[ext_resource type="Texture2D" uid="uid://ddm4gc2g3aj2i" path="res://images/level/objects.png" id="1_wkk58"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_q70ul"] +atlas = ExtResource("1_wkk58") +region = Rect2(144, 32, 16, 16) + +[node name="Plate" type="Node2D"] + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = SubResource("AtlasTexture_q70ul") diff --git a/game/objects/redort_end_l.tscn b/game/objects/redort_end_l.tscn new file mode 100644 index 0000000..740d2ba --- /dev/null +++ b/game/objects/redort_end_l.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=3 format=3 uid="uid://thggjfcrcjq6"] + +[ext_resource type="Texture2D" uid="uid://ddm4gc2g3aj2i" path="res://images/level/objects.png" id="1_xsq2h"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_hbatg"] +atlas = ExtResource("1_xsq2h") +region = Rect2(64, 80, 16, 16) + +[node name="RedortEndL" type="Node2D"] + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = SubResource("AtlasTexture_hbatg") diff --git a/game/objects/retort_end_r.tscn b/game/objects/retort_end_r.tscn new file mode 100644 index 0000000..4e30935 --- /dev/null +++ b/game/objects/retort_end_r.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=3 format=3 uid="uid://cpvsevdfmecrq"] + +[ext_resource type="Texture2D" uid="uid://ddm4gc2g3aj2i" path="res://images/level/objects.png" id="1_ibloa"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_2d2yp"] +atlas = ExtResource("1_ibloa") +region = Rect2(48, 80, 16, 16) + +[node name="RetortEndR" type="Node2D"] + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = SubResource("AtlasTexture_2d2yp") diff --git a/game/objects/retort_l.tscn b/game/objects/retort_l.tscn new file mode 100644 index 0000000..d763ae0 --- /dev/null +++ b/game/objects/retort_l.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=3 format=3 uid="uid://bvbjd5l447qjy"] + +[ext_resource type="Texture2D" uid="uid://ddm4gc2g3aj2i" path="res://images/level/objects.png" id="1_u1d6f"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_8epgq"] +atlas = ExtResource("1_u1d6f") +region = Rect2(160, 176, 32, 16) + +[node name="RetortL" type="Node2D"] + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = SubResource("AtlasTexture_8epgq") diff --git a/game/objects/retort_r.tscn b/game/objects/retort_r.tscn new file mode 100644 index 0000000..0613f4d --- /dev/null +++ b/game/objects/retort_r.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=3 format=3 uid="uid://b0uy410hvlosm"] + +[ext_resource type="Texture2D" uid="uid://ddm4gc2g3aj2i" path="res://images/level/objects.png" id="1_gohft"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_f54r7"] +atlas = ExtResource("1_gohft") +region = Rect2(160, 160, 32, 16) + +[node name="RetortR" type="Node2D"] + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = SubResource("AtlasTexture_f54r7") diff --git a/game/objects/table_l.tscn b/game/objects/table_l.tscn new file mode 100644 index 0000000..b15f22d --- /dev/null +++ b/game/objects/table_l.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=3 format=3 uid="uid://b1cq0uor2sk6k"] + +[ext_resource type="Texture2D" uid="uid://ddm4gc2g3aj2i" path="res://images/level/objects.png" id="1_ftoqg"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_l7gad"] +atlas = ExtResource("1_ftoqg") +region = Rect2(80, 160, 80, 32) + +[node name="TableL" type="Node2D"] + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = SubResource("AtlasTexture_l7gad") diff --git a/game/objects/table.tscn b/game/objects/table_m.tscn similarity index 83% rename from game/objects/table.tscn rename to game/objects/table_m.tscn index 9b80c82..4662ed2 100644 --- a/game/objects/table.tscn +++ b/game/objects/table_m.tscn @@ -4,9 +4,9 @@ [sub_resource type="AtlasTexture" id="AtlasTexture_runce"] atlas = ExtResource("1_qacj7") -region = Rect2(128, 0, 48, 32) +region = Rect2(112, 128, 48, 32) -[node name="Table" type="Node2D"] +[node name="TableM" type="Node2D"] [node name="Sprite2D" type="Sprite2D" parent="."] texture = SubResource("AtlasTexture_runce") diff --git a/game/objects/table_s.tscn b/game/objects/table_s.tscn new file mode 100644 index 0000000..8f6ee0c --- /dev/null +++ b/game/objects/table_s.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=3 format=3 uid="uid://baqawh1drerhk"] + +[ext_resource type="Texture2D" uid="uid://ddm4gc2g3aj2i" path="res://images/level/objects.png" id="1_qacj7"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_n2itf"] +atlas = ExtResource("1_qacj7") +region = Rect2(80, 128, 32, 32) + +[node name="TableS" type="Node2D"] + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = SubResource("AtlasTexture_n2itf") diff --git a/game/objects/tutorial/arrow_left.tscn b/game/objects/tutorial/arrow_left.tscn index 8a23621..119ed24 100644 --- a/game/objects/tutorial/arrow_left.tscn +++ b/game/objects/tutorial/arrow_left.tscn @@ -4,7 +4,7 @@ [sub_resource type="AtlasTexture" id="AtlasTexture_n5v8r"] atlas = ExtResource("1_ct7ib") -region = Rect2(128, 128, 32, 16) +region = Rect2(160, 128, 32, 16) [node name="ArrowLeft" type="Node2D"] diff --git a/game/objects/tutorial/arrow_right.tscn b/game/objects/tutorial/arrow_right.tscn index 29450d4..f18d741 100644 --- a/game/objects/tutorial/arrow_right.tscn +++ b/game/objects/tutorial/arrow_right.tscn @@ -4,7 +4,7 @@ [sub_resource type="AtlasTexture" id="AtlasTexture_r0fup"] atlas = ExtResource("1_gvebv") -region = Rect2(160, 128, 32, 16) +region = Rect2(160, 144, 32, 16) [node name="ArrowRight" type="Node2D"] diff --git a/game/objects/tutorial/switch_kbd.tscn b/game/objects/tutorial/switch_kbd.tscn index 589bc4a..35444d2 100644 --- a/game/objects/tutorial/switch_kbd.tscn +++ b/game/objects/tutorial/switch_kbd.tscn @@ -4,7 +4,7 @@ [sub_resource type="AtlasTexture" id="AtlasTexture_lviuj"] atlas = ExtResource("1_t6r5l") -region = Rect2(48, 64, 32, 32) +region = Rect2(0, 128, 48, 32) [node name="SwitchKbd" type="Node2D"] diff --git a/images/characters/player.png b/images/characters/player.png index b02c7aa..ec91dba 100644 --- a/images/characters/player.png +++ b/images/characters/player.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0e3992111b8a1da19ded6ee7e176f0b2f11574538e80711e8bebfae9aef99ada -size 2165 +oid sha256:b6f07d5f5c2a1c2a352899e61607e3ea21be773d61262cae2d538b1a256f650b +size 2163 diff --git a/images/level/objects.png b/images/level/objects.png index 1b67f39..cdd4a58 100644 --- a/images/level/objects.png +++ b/images/level/objects.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ff5f333df19812a6d79e1e409f1da0ce568599669915c76c4c52301d4cabe9af -size 1526 +oid sha256:ee32e334e059cdd1bb435b0a72838d7cc9011b97733505dfc2030c0e5c271e31 +size 2136 diff --git a/images/level/outdoor.png b/images/level/outdoor.png new file mode 100644 index 0000000..971b1f6 --- /dev/null +++ b/images/level/outdoor.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6295025ecc4d68bc140d1b305e46c4f9990f081223a06bff5bd9bda88e798eed +size 336 diff --git a/images/level/outdoor.png.import b/images/level/outdoor.png.import new file mode 100644 index 0000000..d7e3fb6 --- /dev/null +++ b/images/level/outdoor.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d3346lrt1c1oh" +path="res://.godot/imported/outdoor.png-8c11c7e57eb29cedb0c45abee2e6c93a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://images/level/outdoor.png" +dest_files=["res://.godot/imported/outdoor.png-8c11c7e57eb29cedb0c45abee2e6c93a.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 70f02a0..650bc5b 100644 --- a/project.godot +++ b/project.godot @@ -21,6 +21,7 @@ config/icon="res://icon.svg" SettingsManager="*res://game/managers/settings_manager.tscn" SoundManager="*res://game/managers/sound_manager.tscn" SaveManager="*res://game/managers/save_manager.tscn" +LevelManager="*res://game/managers/level_manager.tscn" [debug] @@ -124,8 +125,7 @@ jump={ } switch_color={ "deadzone": 0.2, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":81,"key_label":0,"unicode":113,"location":0,"echo":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194326,"key_label":0,"unicode":0,"location":2,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194325,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":9,"pressure":0.0,"pressed":true,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":10,"pressure":0.0,"pressed":true,"script":null) ]