From d717e73fa8e1c58ff8a3953527c84f8104d2f79b Mon Sep 17 00:00:00 2001 From: TheThomaas Date: Mon, 12 Oct 2026 19:49:26 +0200 Subject: [PATCH] Hide UI elements during battles --- game/ui/hide_during_battle.gd | 33 +++++++++++++++++++++++++++++++ game/ui/hide_during_battle.gd.uid | 1 + game/ui/hud/team_hud.gd | 17 ++++++++++++++++ game/ui/hud/ui.tscn | 4 ++++ 4 files changed, 55 insertions(+) create mode 100644 game/ui/hide_during_battle.gd create mode 100644 game/ui/hide_during_battle.gd.uid diff --git a/game/ui/hide_during_battle.gd b/game/ui/hide_during_battle.gd new file mode 100644 index 0000000..5f831e6 --- /dev/null +++ b/game/ui/hide_during_battle.gd @@ -0,0 +1,33 @@ +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 diff --git a/game/ui/hide_during_battle.gd.uid b/game/ui/hide_during_battle.gd.uid new file mode 100644 index 0000000..f257ee6 --- /dev/null +++ b/game/ui/hide_during_battle.gd.uid @@ -0,0 +1 @@ +uid://c3b263k0gt0ck diff --git a/game/ui/hud/team_hud.gd b/game/ui/hud/team_hud.gd index 44af731..99eebd5 100644 --- a/game/ui/hud/team_hud.gd +++ b/game/ui/hud/team_hud.gd @@ -30,6 +30,7 @@ const COLOR_FAINTED : Color = Color(1.0, 0.4, 0.4) #actions creees automatiquement si elles n'existent pas (croix gauche/droite, fleches du clavier) @export var prev_action : StringName = &"hud_team_prev" @export var next_action : StringName = &"hud_team_next" +@export var hide_during_battle : bool = true #disparait pendant un combat et revient a la fin @export var show_empty_slots : bool = false #false : seulement les icones des pokemon de l'equipe ; true : toujours 6 icones (les vides en Poke Ball pale) @export var show_input_hints : bool = true #icones de touches de part et d'autre des icones @export var portrait_size : float = 120.0 @@ -50,6 +51,8 @@ var _next_icon : TextureRect var _balls : Array[BallIcon] = [] var _ball_signatures : Array = [] var _info_signature : Array = [] +var _hidden_for_battle : bool = false +var _visible_before_battle : bool = true #---------- elements dessines ---------- @@ -105,6 +108,20 @@ class PortraitFrame extends Control: func _ready() -> void: _ensure_actions() _build_ui() + GameData.battle_started.connect(_on_battle_started) + GameData.battle_finished.connect(_on_battle_finished) + if GameData.in_battle: _on_battle_started() + +func _on_battle_started() -> void: + if !hide_during_battle or _hidden_for_battle: return + _visible_before_battle = visible + visible = false + _hidden_for_battle = true + +func _on_battle_finished(_outcome : int, _battle_target : Node) -> void: + if !_hidden_for_battle: return + _hidden_for_battle = false + visible = _visible_before_battle func _ensure_actions() -> void: _ensure_action(prev_action, [_joy_event(JOY_BUTTON_DPAD_LEFT), _key_event(KEY_LEFT)]) diff --git a/game/ui/hud/ui.tscn b/game/ui/hud/ui.tscn index 8d52743..fe38ced 100644 --- a/game/ui/hud/ui.tscn +++ b/game/ui/hud/ui.tscn @@ -3,6 +3,7 @@ [ext_resource type="Script" uid="uid://7hglx6nfu063" path="res://addons/controller_icons/objects/ControllerIconTexture.gd" id="1_4xhdt"] [ext_resource type="Script" uid="uid://rgm6aitwyxdv" path="res://game/ui/hud/save_hud.gd" id="1_euh0j"] [ext_resource type="Script" uid="uid://b3ddqgiawrh5c" path="res://game/ui/hud/team_hud.gd" id="2_lkjh2"] +[ext_resource type="Script" uid="uid://c3b263k0gt0ck" path="res://game/ui/hide_during_battle.gd" id="3_8ujol"] [sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_uyiaf"] @@ -95,6 +96,9 @@ layout_mode = 2 text = "Accepter" label_settings = SubResource("LabelSettings_3agn1") +[node name="HideDuringBattle" type="Node" parent="MarginContainer" unique_id=1229951221] +script = ExtResource("3_8ujol") + [node name="TeamHud" type="Control" parent="." unique_id=687093905] layout_mode = 3 anchors_preset = 15