34 lines
1.3 KiB
GDScript
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
|