Tales-of-PKMN/game/ui/hide_during_battle.gd

34 lines
1.3 KiB
GDScript

class_name HideDuringBattle
extends Node
#fait disparaitre un element de l'interface pendant un combat et le remet a la fin.
#usage : ajoute ce node comme ENFANT de l'element a cacher (minimap, indicateur de visee, suivi de quete,
#message d'interaction...). Par defaut c'est son parent qui est cache ; sinon, assigne "target".
#marche avec tout node qui a une propriete "visible" : Control, CanvasLayer, Node3D...
#
#si l'element etait deja cache avant le combat, il le reste apres.
@export var target : Node #vide = le parent de ce node
var _was_visible : bool = true
var _hidden_by_us : bool = false
func _ready() -> void:
process_mode = Node.PROCESS_MODE_ALWAYS
if target == null: target = get_parent()
GameData.battle_started.connect(_on_battle_started)
GameData.battle_finished.connect(_on_battle_finished)
if GameData.in_battle: _on_battle_started() #cree pendant un combat
func _on_battle_started() -> void:
if _hidden_by_us or !is_instance_valid(target) or !("visible" in target): return
_was_visible = target.visible
target.visible = false
_hidden_by_us = true
func _on_battle_finished(_outcome : int, _battle_target : Node) -> void:
if !_hidden_by_us: return
_hidden_by_us = false
if is_instance_valid(target) and _was_visible:
target.visible = true