blob: c1b8968599a201d57f88383860500fd3b87d7804 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
@tool
class_name Door
extends Area2D
@export var target_room: String:
set(v):
target_room = v
update_configuration_warnings()
@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")
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"
|