35 lines
775 B
GDScript
35 lines
775 B
GDScript
@tool
|
|
extends Interactable
|
|
class_name Door
|
|
|
|
@export var to_scene_id = ""
|
|
@export var icon : Texture : set = set_icon
|
|
|
|
func _ready():
|
|
if available:
|
|
%AnimatedSprite2D.play("opened")
|
|
else:
|
|
%AnimatedSprite2D.play("closed")
|
|
set_icon()
|
|
|
|
func interact(_p : Player) -> bool:
|
|
if available and to_scene_id:
|
|
interacted.emit(_p)
|
|
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
|