* ajout des artefacts avec la pile et l'emplacement de graine * affichage des artefacts dans le vaisseau sur une étagère * ajout des distributeurs d'artefacts dans les régions * affichage des attributs de bases de plantes dans le vaisseau * changement de l'affichage du choix des régions * changement des icônes du détecteur
50 lines
1.2 KiB
GDScript
50 lines
1.2 KiB
GDScript
@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 |