@tool extends Interactable class_name Door @export var to_scene_id = "" @export var icon : Texture : set = set_icon @export var present : bool = false : set = set_present @export var door_id : int func _init(): default_interact_text = "ENTER" func _ready(): if available: %AnimatedSprite2D.play("opened") else: %AnimatedSprite2D.play("closed") set_icon() set_present() func interact(p : Player) -> bool: if available and to_scene_id: p.region.data.entered_door = name interacted.emit(p) p.region.save() SceneManager.change_to_scene_id(to_scene_id) return available func set_available(v : bool): available = v if is_node_ready(): if available: AudioManager.play_sfx("DoorOpen") %AnimatedSprite2D.play("open") else: %AnimatedSprite2D.play("close") func set_icon(i: Texture = icon): icon = i if is_node_ready(): %Icon.texture = icon func set_present(p := present): present = p if present: process_mode = Node.PROCESS_MODE_INHERIT else: process_mode = Node.PROCESS_MODE_DISABLED visible = present