From 74494315303723b6cdac5198d9fc90f334ced778 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Wed, 19 Nov 2025 21:33:12 +0200 Subject: Improve transitions --- door.gd | 39 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) (limited to 'door.gd') diff --git a/door.gd b/door.gd index 9e03186..c1b8968 100644 --- a/door.gd +++ b/door.gd @@ -1,7 +1,40 @@ +@tool +class_name Door extends Area2D -@export var target_room: String +@export var target_room: String: + set(v): + target_room = v + update_configuration_warnings() -func _on_body_entered(_body: Node2D) -> void: +@export var target_door: String: + set(v): + target_door = v + update_configuration_warnings() + +@export_enum("LEFT", "RIGHT", "JUMP_LEFT", "JUMP_RIGHT", "DROP") var exit_towards: String +@export_enum("LEFT", "RIGHT", "JUMP", "DROP") var enter_towards: String + +func _ready(): + update_configuration_warnings() + +func _on_body_entered(player: Player) -> void: var top: Top = get_tree().root.get_node("Top") - top.transition_to_room(target_room) + if not top.is_transitioning(): + player.set_forced_input(enter_towards) + top.transition_to_room(to_room_path(target_room), target_door) + +func _get_configuration_warnings() -> PackedStringArray: + var warnings: PackedStringArray = [] + var room_path: String + if target_room: + room_path = to_room_path(target_room) + if not target_room or not ResourceLoader.exists(room_path): + warnings.append("target_room is not valid (%s does not exist)" % room_path) + if not target_door: + warnings.append("target_door is not valid") + + return warnings + +func to_room_path(room_name: String): + return "res://room_" + room_name + ".tscn" -- cgit v1.3