diff options
Diffstat (limited to 'door.gd')
| -rw-r--r-- | door.gd | 39 |
1 files changed, 36 insertions, 3 deletions
@@ -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" |
