diff --git a/assets/sprites/door_locked.png b/assets/sprites/door_locked.png new file mode 100755 index 0000000..8fd345b Binary files /dev/null and b/assets/sprites/door_locked.png differ diff --git a/assets/sprites/door_locked.png.import b/assets/sprites/door_locked.png.import new file mode 100644 index 0000000..3a49dbf --- /dev/null +++ b/assets/sprites/door_locked.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bv7imimvd1mmi" +path="res://.godot/imported/door_locked.png-edb433eca7fc40d5d0d415ed77c0cdfa.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/sprites/door_locked.png" +dest_files=["res://.godot/imported/door_locked.png-edb433eca7fc40d5d0d415ed77c0cdfa.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/sprites/door_open.png b/assets/sprites/door_open.png new file mode 100755 index 0000000..cf40440 Binary files /dev/null and b/assets/sprites/door_open.png differ diff --git a/assets/sprites/door_open.png.import b/assets/sprites/door_open.png.import new file mode 100644 index 0000000..b2b514e --- /dev/null +++ b/assets/sprites/door_open.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://qy6a6o0pkhac" +path="res://.godot/imported/door_open.png-c4e87a72620978bb79fec0850ab38e13.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/sprites/door_open.png" +dest_files=["res://.godot/imported/door_open.png-c4e87a72620978bb79fec0850ab38e13.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/tilesets/door_locked.tres b/assets/tilesets/door_locked.tres new file mode 100644 index 0000000..56e2828 --- /dev/null +++ b/assets/tilesets/door_locked.tres @@ -0,0 +1,4 @@ +[gd_resource type="CompressedTexture2D" format=3 uid="uid://2c8t30vwqmp2"] + +[resource] +load_path = "res://.godot/imported/entrepot-tilesets.png-e3f6686008bed17574a462f3ad7205e0.ctex" diff --git a/autoloads/game_state.gd b/autoloads/game_state.gd index 9800e08..58e2d08 100644 --- a/autoloads/game_state.gd +++ b/autoloads/game_state.gd @@ -1,6 +1,7 @@ extends Node signal inventory_changed +signal flag_changed(key: String, value: bool) # Pièces requises par PNJ const REPAIR_REQUIREMENTS := { @@ -20,6 +21,7 @@ func get_flag(key: String) -> bool: func set_flag(key: String, value: bool) -> void: flags[key] = value + flag_changed.emit(key, value) # Items func add_item(id: String, amount: int = 1) -> void: diff --git a/levels/entrepot/door.gd b/levels/entrepot/door.gd new file mode 100644 index 0000000..c76247e --- /dev/null +++ b/levels/entrepot/door.gd @@ -0,0 +1,22 @@ +class_name Door +extends StaticBody2D + +@export var required_flag: String = "vrac7_repaired" +@export var locked_sprite: Texture2D +@export var open_sprite: Texture2D + +@onready var sprite := $Sprite2D +@onready var collision := $CollisionShape2D + +func _ready() -> void: + GameState.flag_changed.connect(_on_flag_changed) + _update_state(GameState.get_flag(required_flag)) + +func _on_flag_changed(flag: String, value: bool) -> void: + if flag == required_flag: + _update_state(value) + +func _update_state(is_open: bool) -> void: + + collision.disabled = is_open + sprite.texture = open_sprite if is_open else locked_sprite diff --git a/levels/entrepot/door.gd.uid b/levels/entrepot/door.gd.uid new file mode 100644 index 0000000..4a6a720 --- /dev/null +++ b/levels/entrepot/door.gd.uid @@ -0,0 +1 @@ +uid://diwj53rfcv4nv diff --git a/levels/entrepot/door.tscn b/levels/entrepot/door.tscn new file mode 100644 index 0000000..75ae14c --- /dev/null +++ b/levels/entrepot/door.tscn @@ -0,0 +1,23 @@ +[gd_scene format=3 uid="uid://ceijd4gd1rxos"] + +[ext_resource type="Script" uid="uid://diwj53rfcv4nv" path="res://levels/entrepot/door.gd" id="1_riqri"] +[ext_resource type="Texture2D" uid="uid://bv7imimvd1mmi" path="res://assets/sprites/door_locked.png" id="2_ltwmt"] +[ext_resource type="Texture2D" uid="uid://qy6a6o0pkhac" path="res://assets/sprites/door_open.png" id="3_xn5p3"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_riqri"] +size = Vector2(32, 43) + +[node name="Door" type="StaticBody2D" unique_id=1014453167] +z_index = 5 +script = ExtResource("1_riqri") +locked_sprite = ExtResource("2_ltwmt") +open_sprite = ExtResource("3_xn5p3") + +[node name="Sprite2D" type="Sprite2D" parent="." unique_id=928832758] +texture = ExtResource("2_ltwmt") +region_enabled = true +region_rect = Rect2(0, 0, 32, 64) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=978481030] +position = Vector2(0, 10.5) +shape = SubResource("RectangleShape2D_riqri") diff --git a/levels/entrepot/entrepot.tscn b/levels/entrepot/entrepot.tscn index 4d85039..1fd7ce2 100644 --- a/levels/entrepot/entrepot.tscn +++ b/levels/entrepot/entrepot.tscn @@ -11,6 +11,8 @@ [ext_resource type="PackedScene" uid="uid://c52luh50w8hi2" path="res://levels/unlock_zone.tscn" id="8_dm063"] [ext_resource type="PackedScene" uid="uid://fftu7ne6spjy" path="res://levels/entrepot/etagere.tscn" id="9_sju6u"] [ext_resource type="PackedScene" uid="uid://do61r73dbypfd" path="res://levels/journal.tscn" id="10_b870l"] +[ext_resource type="PackedScene" uid="uid://ceijd4gd1rxos" path="res://levels/entrepot/door.tscn" id="11_squor"] +[ext_resource type="PackedScene" uid="uid://b1peufx15gr0v" path="res://levels/loading_zone.tscn" id="13_2edww"] [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_n70cd"] texture = ExtResource("1_qvgxo") @@ -169,7 +171,7 @@ tile_map_data = PackedByteArray("AAAAACYAAAABAAEAAAAeACYAAAABAAEAAAAeACgAAAAAAAI tile_set = SubResource("TileSet_jr8qv") [node name="Ground" type="TileMapLayer" parent="Map" unique_id=1677946938] -tile_map_data = PackedByteArray("AAAeAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAeACYAAAABAAEAAAAAAAYAAAACAAMAAAAAAAgAAAACAAMAAAAAAAoAAAACAAMAAAAAAAwAAAACAAMAAAAcAAYAAAACAAMAAAAcAAgAAAACAAMAAAAcAAoAAAACAAMAAAAcAAwAAAACAAMAAAAcAA4AAAACAAMAAAAaAA4AAAACAAMAAAAYAA4AAAACAAMAAAAWAA4AAAACAAMAAAAUAA4AAAACAAMAAAASAA4AAAACAAMAAAAOAA4AAAACAAMAAAAMAA4AAAACAAMAAAAKAA4AAAACAAMAAAAIAA4AAAACAAMAAAAGAA4AAAACAAMAAAAEAA4AAAACAAMAAAACAA4AAAACAAMAAAAAAA4AAAACAAMAAAACAAYAAAACAAMAAAAEAAYAAAACAAMAAAAGAAYAAAACAAMAAAAIAAYAAAACAAMAAAAKAAYAAAACAAMAAAAMAAYAAAACAAMAAAAOAAYAAAACAAMAAAAQAAYAAAACAAMAAAASAAYAAAACAAMAAAAUAAYAAAACAAMAAAAWAAYAAAACAAMAAAAYAAYAAAACAAMAAAAaAAYAAAACAAMAAAACAAgAAAACAAMAAAAEAAgAAAACAAMAAAAGAAgAAAACAAMAAAAIAAgAAAACAAMAAAAKAAgAAAACAAMAAAAMAAgAAAACAAMAAAAOAAgAAAACAAMAAAAQAAgAAAACAAMAAAASAAgAAAACAAMAAAAUAAgAAAACAAMAAAAWAAgAAAACAAMAAAAYAAgAAAACAAMAAAAaAAgAAAACAAMAAAAaAAoAAAACAAMAAAAYAAoAAAACAAMAAAAWAAoAAAACAAMAAAAUAAoAAAACAAMAAAASAAoAAAACAAMAAAAQAAoAAAACAAMAAAAOAAoAAAACAAMAAAAMAAoAAAACAAMAAAAKAAoAAAACAAMAAAAIAAoAAAACAAMAAAAGAAoAAAACAAMAAAAEAAoAAAACAAMAAAACAAoAAAACAAMAAAACAAwAAAACAAMAAAAEAAwAAAACAAMAAAAGAAwAAAACAAMAAAAIAAwAAAACAAMAAAAKAAwAAAACAAMAAAAMAAwAAAACAAMAAAAOAAwAAAACAAMAAAASAAwAAAACAAMAAAAUAAwAAAACAAMAAAAWAAwAAAACAAMAAAAYAAwAAAACAAMAAAAaAAwAAAACAAMAAAAcABAAAAACAAMAAAAaABAAAAACAAMAAAAYABAAAAACAAMAAAAWABAAAAACAAMAAAAUABAAAAACAAMAAAASABAAAAACAAMAAAAOABAAAAACAAMAAAAMABAAAAACAAMAAAAKABAAAAACAAMAAAAIABAAAAACAAMAAAAGABAAAAACAAMAAAAEABAAAAACAAMAAAACABAAAAACAAMAAAAAABAAAAACAAMAAAAeAAYAAAACAAMAAAAeAAgAAAACAAMAAAAeAAoAAAACAAMAAAAeAAwAAAACAAMAAAAeAA4AAAACAAMAAAAeABAAAAACAAMAAAAQABAAAAACAAMAAAAQAA4AAAACAAMAAAAQAAwAAAACAAMAAAAAABIAAAACAAMAAAACABIAAAACAAMAAAAEABIAAAACAAMAAAAGABIAAAACAAMAAAAIABIAAAACAAMAAAAKABIAAAACAAMAAAAMABIAAAACAAMAAAAOABIAAAACAAMAAAAQABIAAAACAAMAAAASABIAAAACAAMAAAAUABIAAAACAAMAAAAWABIAAAACAAMAAAAYABIAAAACAAMAAAAaABIAAAACAAMAAAAcABIAAAACAAMAAAAeABIAAAACAAMAAAAeABQAAAACAAMAAAAcABQAAAACAAMAAAAaABQAAAACAAMAAAAYABQAAAACAAMAAAAWABQAAAACAAMAAAAUABQAAAACAAMAAAASABQAAAACAAMAAAAQABQAAAACAAMAAAAOABQAAAACAAMAAAAMABQAAAACAAMAAAAKABQAAAACAAMAAAAIABQAAAACAAMAAAAGABQAAAACAAMAAAAEABQAAAACAAMAAAACABQAAAACAAMAAAAAABQAAAACAAMAAAAAABYAAAACAAMAAAACABYAAAACAAMAAAAEABYAAAACAAMAAAAGABYAAAACAAMAAAAIABYAAAACAAMAAAAKABYAAAACAAMAAAAMABYAAAACAAMAAAAOABYAAAACAAMAAAAQABYAAAACAAMAAAASABYAAAACAAMAAAAUABYAAAACAAMAAAAWABYAAAACAAMAAAAYABYAAAACAAMAAAAaABYAAAACAAMAAAAcABYAAAACAAMAAAAeABYAAAACAAMAAAAeABgAAAACAAMAAAAcABgAAAACAAMAAAAaABgAAAACAAMAAAAYABgAAAACAAMAAAAWABgAAAACAAMAAAAUABgAAAACAAMAAAASABgAAAACAAMAAAAQABgAAAACAAMAAAAOABgAAAACAAMAAAAMABgAAAACAAMAAAAKABgAAAACAAMAAAAIABgAAAACAAMAAAAEABgAAAACAAMAAAAGABgAAAACAAMAAAACABgAAAACAAMAAAAAABgAAAACAAMAAAAAABoAAAACAAMAAAACABoAAAACAAMAAAAEABoAAAACAAMAAAAGABoAAAACAAMAAAAIABoAAAACAAMAAAAKABoAAAACAAMAAAAMABoAAAACAAMAAAAOABoAAAACAAMAAAAQABoAAAACAAMAAAASABoAAAACAAMAAAAUABoAAAACAAMAAAAWABoAAAACAAMAAAAYABoAAAACAAMAAAAaABoAAAACAAMAAAAcABoAAAACAAMAAAAeABoAAAACAAMAAAAeABwAAAACAAMAAAAcABwAAAACAAMAAAAaABwAAAACAAMAAAAYABwAAAACAAMAAAAWABwAAAACAAMAAAAUABwAAAACAAMAAAASABwAAAACAAMAAAAQABwAAAACAAMAAAAOABwAAAACAAMAAAAMABwAAAACAAMAAAAKABwAAAACAAMAAAAIABwAAAACAAMAAAAGABwAAAACAAMAAAAEABwAAAACAAMAAAACABwAAAACAAMAAAAAABwAAAACAAMAAAAAAB4AAAACAAMAAAACAB4AAAACAAMAAAAEAB4AAAACAAMAAAAGAB4AAAACAAMAAAAIAB4AAAACAAMAAAAKAB4AAAACAAMAAAAMAB4AAAACAAMAAAAOAB4AAAACAAMAAAAQAB4AAAACAAMAAAASAB4AAAACAAMAAAAUAB4AAAACAAMAAAAWAB4AAAACAAMAAAAYAB4AAAACAAMAAAAaAB4AAAACAAMAAAAcAB4AAAACAAMAAAAeAB4AAAACAAMAAAAeACAAAAACAAMAAAAcACAAAAACAAMAAAAaACAAAAACAAMAAAAYACAAAAACAAMAAAAWACAAAAACAAMAAAAUACAAAAACAAMAAAASACAAAAACAAMAAAAQACAAAAACAAMAAAAOACAAAAACAAMAAAAMACAAAAACAAMAAAAKACAAAAACAAMAAAAIACAAAAACAAMAAAAGACAAAAACAAMAAAAEACAAAAACAAMAAAACACAAAAACAAMAAAAAACAAAAACAAMAAAAAACIAAAACAAMAAAACACIAAAACAAMAAAAEACIAAAACAAMAAAAGACIAAAACAAMAAAAIACIAAAACAAMAAAAKACIAAAACAAMAAAAMACIAAAACAAMAAAAOACIAAAACAAMAAAAQACIAAAACAAMAAAASACIAAAACAAMAAAAUACIAAAACAAMAAAAWACIAAAACAAMAAAAYACIAAAACAAMAAAAaACIAAAACAAMAAAAcACIAAAACAAMAAAAeACIAAAACAAMAAAAeACQAAAACAAMAAAAcACQAAAACAAMAAAAaACQAAAACAAMAAAAYACQAAAACAAMAAAAWACQAAAACAAMAAAAUACQAAAACAAMAAAASACQAAAACAAMAAAAQACQAAAACAAMAAAAOACQAAAACAAMAAAAMACQAAAACAAMAAAAKACQAAAACAAMAAAAIACQAAAACAAMAAAAGACQAAAACAAMAAAAEACQAAAACAAMAAAACACQAAAACAAMAAAAAACQAAAACAAMAAAAAACYAAAABAAEAAAAeACgAAAADAAEAAAAAACgAAAAEAAEAAAAAAAQAAAAAAAIAAAAeAAQAAAAAAAIAAAACAAQAAAAAAAIAAAAEAAQAAAAAAAIAAAAGAAQAAAAAAAIAAAACAAIAAAAAAAIAAAAEAAIAAAAAAAIAAAAGAAIAAAAAAAIAAAAIAAQAAAAAAAIAAAAIAAIAAAAAAAIAAAAKAAIAAAAAAAIAAAAKAAQAAAAAAAIAAAAMAAQAAAAAAAIAAAAMAAIAAAAAAAIAAAAOAAIAAAAAAAIAAAAOAAQAAAAAAAIAAAAQAAQAAAAAAAIAAAAQAAIAAAAAAAIAAAASAAIAAAAAAAIAAAASAAQAAAAAAAIAAAAUAAQAAAAAAAIAAAAUAAIAAAAAAAIAAAAWAAIAAAAAAAIAAAAWAAQAAAAAAAIAAAAYAAQAAAAAAAIAAAAYAAIAAAAAAAIAAAAaAAIAAAAAAAIAAAAaAAQAAAAAAAIAAAAcAAIAAAAAAAIAAAAcAAQAAAAAAAIAAAA=") +tile_map_data = PackedByteArray("AAAeAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAeACYAAAABAAEAAAAAAAYAAAACAAMAAAAAAAgAAAACAAMAAAAAAAoAAAACAAMAAAAAAAwAAAACAAMAAAAcAAYAAAACAAMAAAAcAAgAAAACAAMAAAAcAAoAAAACAAMAAAAcAAwAAAACAAMAAAAcAA4AAAACAAMAAAAaAA4AAAACAAMAAAAYAA4AAAACAAMAAAAWAA4AAAACAAMAAAAUAA4AAAACAAMAAAASAA4AAAACAAMAAAAOAA4AAAACAAMAAAAMAA4AAAACAAMAAAAKAA4AAAACAAMAAAAIAA4AAAACAAMAAAAGAA4AAAACAAMAAAAEAA4AAAACAAMAAAACAA4AAAACAAMAAAAAAA4AAAACAAMAAAACAAYAAAACAAMAAAAEAAYAAAACAAMAAAAGAAYAAAACAAMAAAAIAAYAAAACAAMAAAAKAAYAAAACAAMAAAAMAAYAAAACAAMAAAAOAAYAAAACAAMAAAAQAAYAAAACAAMAAAASAAYAAAACAAMAAAAUAAYAAAACAAMAAAAWAAYAAAACAAMAAAAYAAYAAAACAAMAAAAaAAYAAAACAAMAAAACAAgAAAACAAMAAAAEAAgAAAACAAMAAAAGAAgAAAACAAMAAAAIAAgAAAACAAMAAAAKAAgAAAACAAMAAAAMAAgAAAACAAMAAAAOAAgAAAACAAMAAAAQAAgAAAACAAMAAAASAAgAAAACAAMAAAAUAAgAAAACAAMAAAAWAAgAAAACAAMAAAAYAAgAAAACAAMAAAAaAAgAAAACAAMAAAAaAAoAAAACAAMAAAAYAAoAAAACAAMAAAAWAAoAAAACAAMAAAAUAAoAAAACAAMAAAASAAoAAAACAAMAAAAQAAoAAAACAAMAAAAOAAoAAAACAAMAAAAMAAoAAAACAAMAAAAKAAoAAAACAAMAAAAIAAoAAAACAAMAAAAGAAoAAAACAAMAAAAEAAoAAAACAAMAAAACAAoAAAACAAMAAAACAAwAAAACAAMAAAAEAAwAAAACAAMAAAAGAAwAAAACAAMAAAAIAAwAAAACAAMAAAAKAAwAAAACAAMAAAAMAAwAAAACAAMAAAAOAAwAAAACAAMAAAASAAwAAAACAAMAAAAUAAwAAAACAAMAAAAWAAwAAAACAAMAAAAYAAwAAAACAAMAAAAaAAwAAAACAAMAAAAcABAAAAACAAMAAAAaABAAAAACAAMAAAAYABAAAAACAAMAAAAWABAAAAACAAMAAAAUABAAAAACAAMAAAASABAAAAACAAMAAAAOABAAAAACAAMAAAAMABAAAAACAAMAAAAKABAAAAACAAMAAAAIABAAAAACAAMAAAAGABAAAAACAAMAAAAEABAAAAACAAMAAAACABAAAAACAAMAAAAAABAAAAACAAMAAAAeAAYAAAACAAMAAAAeAAgAAAACAAMAAAAeAAoAAAACAAMAAAAeAAwAAAACAAMAAAAeAA4AAAACAAMAAAAeABAAAAACAAMAAAAQABAAAAACAAMAAAAQAA4AAAACAAMAAAAQAAwAAAACAAMAAAAAABIAAAACAAMAAAACABIAAAACAAMAAAAEABIAAAACAAMAAAAGABIAAAACAAMAAAAIABIAAAACAAMAAAAKABIAAAACAAMAAAAMABIAAAACAAMAAAAOABIAAAACAAMAAAAQABIAAAACAAMAAAASABIAAAACAAMAAAAUABIAAAACAAMAAAAWABIAAAACAAMAAAAYABIAAAACAAMAAAAaABIAAAACAAMAAAAcABIAAAACAAMAAAAeABIAAAACAAMAAAAeABQAAAACAAMAAAAcABQAAAACAAMAAAAaABQAAAACAAMAAAAYABQAAAACAAMAAAAWABQAAAACAAMAAAAUABQAAAACAAMAAAASABQAAAACAAMAAAAQABQAAAACAAMAAAAOABQAAAACAAMAAAAMABQAAAACAAMAAAAKABQAAAACAAMAAAAIABQAAAACAAMAAAAGABQAAAACAAMAAAAEABQAAAACAAMAAAACABQAAAACAAMAAAAAABQAAAACAAMAAAAAABYAAAACAAMAAAACABYAAAACAAMAAAAEABYAAAACAAMAAAAGABYAAAACAAMAAAAIABYAAAACAAMAAAAKABYAAAACAAMAAAAMABYAAAACAAMAAAAOABYAAAACAAMAAAAQABYAAAACAAMAAAASABYAAAACAAMAAAAUABYAAAACAAMAAAAWABYAAAACAAMAAAAYABYAAAACAAMAAAAaABYAAAACAAMAAAAcABYAAAACAAMAAAAeABYAAAACAAMAAAAeABgAAAACAAMAAAAcABgAAAACAAMAAAAaABgAAAACAAMAAAAYABgAAAACAAMAAAAWABgAAAACAAMAAAAUABgAAAACAAMAAAASABgAAAACAAMAAAAQABgAAAACAAMAAAAOABgAAAACAAMAAAAMABgAAAACAAMAAAAKABgAAAACAAMAAAAIABgAAAACAAMAAAAEABgAAAACAAMAAAAGABgAAAACAAMAAAACABgAAAACAAMAAAAAABgAAAACAAMAAAAAABoAAAACAAMAAAACABoAAAACAAMAAAAEABoAAAACAAMAAAAGABoAAAACAAMAAAAIABoAAAACAAMAAAAKABoAAAACAAMAAAAMABoAAAACAAMAAAAOABoAAAACAAMAAAAQABoAAAACAAMAAAASABoAAAACAAMAAAAUABoAAAACAAMAAAAWABoAAAACAAMAAAAYABoAAAACAAMAAAAaABoAAAACAAMAAAAcABoAAAACAAMAAAAeABoAAAACAAMAAAAeABwAAAACAAMAAAAcABwAAAACAAMAAAAaABwAAAACAAMAAAAYABwAAAACAAMAAAAWABwAAAACAAMAAAAUABwAAAACAAMAAAASABwAAAACAAMAAAAQABwAAAACAAMAAAAOABwAAAACAAMAAAAMABwAAAACAAMAAAAKABwAAAACAAMAAAAIABwAAAACAAMAAAAGABwAAAACAAMAAAAEABwAAAACAAMAAAACABwAAAACAAMAAAAAABwAAAACAAMAAAAAAB4AAAACAAMAAAACAB4AAAACAAMAAAAEAB4AAAACAAMAAAAGAB4AAAACAAMAAAAIAB4AAAACAAMAAAAKAB4AAAACAAMAAAAMAB4AAAACAAMAAAAOAB4AAAACAAMAAAAQAB4AAAACAAMAAAASAB4AAAACAAMAAAAUAB4AAAACAAMAAAAWAB4AAAACAAMAAAAYAB4AAAACAAMAAAAaAB4AAAACAAMAAAAcAB4AAAACAAMAAAAeAB4AAAACAAMAAAAeACAAAAACAAMAAAAcACAAAAACAAMAAAAaACAAAAACAAMAAAAYACAAAAACAAMAAAAWACAAAAACAAMAAAAUACAAAAACAAMAAAASACAAAAACAAMAAAAQACAAAAACAAMAAAAOACAAAAACAAMAAAAMACAAAAACAAMAAAAKACAAAAACAAMAAAAIACAAAAACAAMAAAAGACAAAAACAAMAAAAEACAAAAACAAMAAAACACAAAAACAAMAAAAAACAAAAACAAMAAAAAACIAAAACAAMAAAACACIAAAACAAMAAAAEACIAAAACAAMAAAAGACIAAAACAAMAAAAIACIAAAACAAMAAAAKACIAAAACAAMAAAAMACIAAAACAAMAAAAOACIAAAACAAMAAAAQACIAAAACAAMAAAASACIAAAACAAMAAAAUACIAAAACAAMAAAAWACIAAAACAAMAAAAYACIAAAACAAMAAAAaACIAAAACAAMAAAAcACIAAAACAAMAAAAeACIAAAACAAMAAAAeACQAAAACAAMAAAAcACQAAAACAAMAAAAaACQAAAACAAMAAAAYACQAAAACAAMAAAAWACQAAAACAAMAAAAUACQAAAACAAMAAAASACQAAAACAAMAAAAQACQAAAACAAMAAAAOACQAAAACAAMAAAAMACQAAAACAAMAAAAKACQAAAACAAMAAAAIACQAAAACAAMAAAAGACQAAAACAAMAAAAEACQAAAACAAMAAAACACQAAAACAAMAAAAAACQAAAACAAMAAAAAACYAAAABAAEAAAAeACgAAAADAAEAAAAAACgAAAAEAAEAAAAAAAQAAAAAAAIAAAAeAAQAAAAAAAIAAAACAAQAAAAAAAIAAAAEAAQAAAAAAAIAAAAGAAQAAAAAAAIAAAACAAIAAAAAAAIAAAAEAAIAAAAAAAIAAAAGAAIAAAAAAAIAAAAIAAQAAAAAAAIAAAAIAAIAAAAAAAIAAAAKAAIAAAAAAAIAAAAKAAQAAAAAAAIAAAAMAAQAAAAAAAIAAAAMAAIAAAAAAAIAAAAOAAIAAAAAAAIAAAAOAAQAAAAAAAIAAAAQAAQAAAAAAAIAAAAQAAIAAAAAAAIAAAASAAIAAAAAAAIAAAASAAQAAAAAAAIAAAAUAAQAAAAAAAIAAAAUAAIAAAAAAAIAAAAWAAIAAAAAAAIAAAAWAAQAAAAAAAIAAAAYAAQAAAAAAAIAAAAYAAIAAAAAAAIAAAAaAAIAAAAAAAIAAAAaAAQAAAAAAAIAAAAcAAIAAAAAAAIAAAAcAAQAAAAAAAIAAAAQACYAAAACAAMAAAAQACgAAAACAAMAAAA=") tile_set = SubResource("TileSet_jr8qv") [node name="Walls" type="TileMapLayer" parent="Map" unique_id=142135081] @@ -177,11 +179,6 @@ z_index = 2 tile_map_data = PackedByteArray("AAAAAAAAAAACAAAAAAACAAAAAAABAAEAAAAEAAAAAAABAAEAAAAGAAAAAAABAAEAAAAIAAAAAAABAAEAAAAKAAAAAAABAAEAAAAMAAAAAAABAAEAAAAOAAAAAAABAAEAAAAQAAAAAAABAAEAAAASAAAAAAABAAEAAAAUAAAAAAABAAEAAAAWAAAAAAABAAEAAAAYAAAAAAABAAEAAAAaAAAAAAABAAEAAAAcAAAAAAABAAEAAAAeAAAAAAAAAAAAAAAAAAIAAAAEAAAAAAAeAAIAAAADAAAAAAAeAAQAAAADAAAAAAAeAAYAAAADAAAAAAAeAAgAAAADAAAAAAAeAAoAAAADAAAAAAAeAAwAAAADAAAAAAAeAA4AAAADAAAAAAAeABAAAAADAAAAAAAeABIAAAADAAAAAAAeABQAAAADAAAAAAAeABYAAAADAAAAAAAeABgAAAADAAAAAAAeABoAAAADAAAAAAAeABwAAAADAAAAAAAeAB4AAAADAAAAAAAeACAAAAADAAAAAAAeACIAAAADAAAAAAAeACQAAAADAAAAAAAcACYAAAABAAEAAAAaACYAAAABAAEAAAAYACYAAAABAAEAAAAWACYAAAABAAEAAAAUACYAAAABAAEAAAAMACYAAAABAAEAAAAKACYAAAABAAEAAAAAAAQAAAAEAAAAAAAAAAYAAAAEAAAAAAAAAAgAAAAEAAAAAAAAAAoAAAAEAAAAAAAAAAwAAAAEAAAAAAAAAA4AAAAEAAAAAAAAABAAAAAEAAAAAAAAABIAAAAEAAAAAAAAABQAAAAEAAAAAAAAABYAAAAEAAAAAAAAABgAAAAEAAAAAAAAABoAAAAEAAAAAAAAABwAAAAEAAAAAAAAAB4AAAAEAAAAAAAAACAAAAAEAAAAAAAAACIAAAAEAAAAAAAAACQAAAAEAAAAAAAIACYAAAABAAEAAAAGACYAAAABAAEAAAAEACYAAAABAAEAAAACACYAAAABAAEAAAAAACYAAAACAAEAAAAeACcAAAADAAEAAAAeACYAAAADAAEAAAAOACYAAAABAAEAAAASACYAAAABAAEAAAAAACcAAAAEAAEAAAASACgAAAAAAAIAAAAUACgAAAAAAAIAAAAWACgAAAAAAAIAAAAYACgAAAAAAAIAAAAaACgAAAAAAAIAAAAcACgAAAAAAAIAAAAOACgAAAAAAAIAAAAMACgAAAAAAAIAAAAKACgAAAAAAAIAAAAIACgAAAAAAAIAAAAGACgAAAAAAAIAAAAEACgAAAAAAAIAAAACACgAAAAAAAIAAAA=") tile_set = SubResource("TileSet_jr8qv") -[node name="Door" type="TileMapLayer" parent="Map" unique_id=382416981] -z_index = 2 -tile_map_data = PackedByteArray("AAAQACcAAAADAAIAAAAAACYAAAAEAAEAAAAeACYAAAADAAEAAAA=") -tile_set = SubResource("TileSet_jr8qv") - [node name="Windows" type="TileMapLayer" parent="Map" unique_id=836194583] z_index = 5 tile_map_data = PackedByteArray("AAADAAEAAAAAAAQAAAAbAAEAAAAAAAQAAAAHAAEAAAAAAAYAAAAXAAEAAAAAAAYAAAAXAAMAAAAEAAUAAAAXAAUAAAAEAAUAAAAXAAcAAAAEAAUAAAAHAAMAAAAEAAUAAAAHAAUAAAAEAAUAAAAHAAcAAAAEAAUAAAAHAAkAAAAEAAYAAAAXAAkAAAAEAAYAAAADAAMAAAACAAUAAAADAAUAAAACAAUAAAADAAcAAAACAAUAAAAbAAMAAAACAAUAAAAbAAUAAAACAAUAAAAbAAcAAAACAAUAAAAbAAkAAAACAAYAAAADAAkAAAACAAYAAAAPAAEAAAAAAAQAAAAPAAMAAAACAAUAAAAPAAUAAAACAAUAAAAPAAcAAAACAAUAAAAPAAkAAAACAAYAAAA=") @@ -228,4 +225,13 @@ position = Vector2(456, 199) [node name="Player" parent="." unique_id=628518902 instance=ExtResource("2_n70cd")] z_index = 1 -position = Vector2(262, 239) +position = Vector2(248, 103) + +[node name="Door" parent="." unique_id=1014453167 instance=ExtResource("11_squor")] +z_index = 10 +position = Vector2(264, 632) + +[node name="LoadingZone" parent="." unique_id=2123510357 instance=ExtResource("13_2edww")] +z_index = 4096 +position = Vector2(263, 652) +scale = Vector2(2, 1.2) diff --git a/levels/loading_zone.gd b/levels/loading_zone.gd new file mode 100644 index 0000000..228f85c --- /dev/null +++ b/levels/loading_zone.gd @@ -0,0 +1,28 @@ +# loading_zone.gd +extends Area2D + +@export var target_scene: String = "res://levels/atelier/atelier.tscn" +@export var fade_duration: float = 0.6 + +@onready var fade_rect: ColorRect = $TransitionLayer/FadeRect + +var _transitioning := false + +func _ready() -> void: + fade_rect.modulate.a = 0.0 + body_entered.connect(_on_body_entered) + +func _on_body_entered(body: Node2D) -> void: + print("Body entered") + if _transitioning: + return + if body.is_in_group("player"): + _transitioning = true + _start_transition() + +func _start_transition() -> void: + var tween := create_tween() + tween.tween_property(fade_rect, "modulate:a", 1.0, fade_duration) + tween.tween_callback(func(): + get_tree().change_scene_to_file(target_scene) + ) diff --git a/levels/loading_zone.gd.uid b/levels/loading_zone.gd.uid new file mode 100644 index 0000000..c60bd63 --- /dev/null +++ b/levels/loading_zone.gd.uid @@ -0,0 +1 @@ +uid://de0qobntuks5f diff --git a/levels/loading_zone.tscn b/levels/loading_zone.tscn new file mode 100644 index 0000000..f2ef494 --- /dev/null +++ b/levels/loading_zone.tscn @@ -0,0 +1,23 @@ +[gd_scene format=3 uid="uid://b1peufx15gr0v"] + +[ext_resource type="Script" uid="uid://de0qobntuks5f" path="res://levels/loading_zone.gd" id="1_tolmd"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_re8oc"] + +[node name="LoadingZone" type="Area2D" unique_id=2123510357] +collision_layer = 32 +collision_mask = 2 +script = ExtResource("1_tolmd") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=289173289] +shape = SubResource("RectangleShape2D_re8oc") + +[node name="TransitionLayer" type="CanvasLayer" parent="." unique_id=1179968082] + +[node name="FadeRect" type="ColorRect" parent="TransitionLayer" unique_id=820434324] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +color = Color(0, 0, 0, 1)