Compare commits

...

2 commits

Author SHA1 Message Date
TheThomaas d717e73fa8 Hide UI elements during battles 2026-10-12 19:49:26 +02:00
TheThomaas 97380291eb Add battle_started signal 2026-10-12 19:48:59 +02:00
6 changed files with 57 additions and 0 deletions

View file

@ -65,6 +65,7 @@ func start_encounter(encounter : BattleEncounter, enemy_pos : Vector3, sent : Se
_running = true
GameData.in_battle = true
GameData.battle_started.emit() #les elements d'interface (TeamHUD...) se cachent ici, avant la pause du monde
get_tree().paused = true
battle_started.emit()

View file

@ -3,6 +3,7 @@ extends Node
signal selected_pokemon_changed
signal battle_requested(sent : SentPokemon, target : Node) #emis par ThrowState : BattleLauncher s'y branche
signal battle_started #emis par BattleLauncher au debut d'un combat (avant la pause du monde)
signal battle_finished(outcome : int, target : Node) #emis par BattleLauncher (outcome = valeur de Battle.Outcome)
signal save_started

View file

@ -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

View file

@ -0,0 +1 @@
uid://c3b263k0gt0ck

View file

@ -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)])

View file

@ -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