define_buttons: modificada logica de final per a poder mostrar la animació d'eixida

This commit is contained in:
2025-08-08 17:32:30 +02:00
parent a191a296f8
commit 3b07b2e130
4 changed files with 64 additions and 28 deletions

View File

@@ -53,9 +53,27 @@ void DefineButtons::render() {
}
void DefineButtons::update() {
if (enabled_ && window_message_) {
if (!enabled_) {
return;
}
// Actualizar la ventana siempre
if (window_message_) {
window_message_->update();
}
// Manejar la secuencia de cierre si ya terminamos
if (finished_ && message_shown_) {
message_timer_++;
// Después del delay, iniciar animación de cierre (solo una vez)
if (message_timer_ > MESSAGE_DISPLAY_FRAMES && !closing_) {
if (window_message_) {
window_message_->hide(); // Iniciar animación de cierre
}
closing_ = true;
}
}
}
void DefineButtons::checkEvents(const SDL_Event &event) {
@@ -149,21 +167,33 @@ void DefineButtons::clearButtons() {
}
void DefineButtons::checkEnd() {
if (finished_) {
if (finished_ && !message_shown_) {
bindButtons(options_gamepad_);
input_->saveGamepadConfigFromGamepad(options_gamepad_->instance);
input_->resetInputStates();
// Mostrar mensaje de finalización brevemente
// Mostrar mensaje de finalización
if (window_message_) {
window_message_->clearTexts();
window_message_->addText(Lang::getText("[DEFINE_BUTTONS] CONFIGURATION_COMPLETE"));
}
// Se deshabilitará desde el ServiceMenu después de un breve delay
// Solo marcar que ya mostramos el mensaje
message_shown_ = true;
message_timer_ = 0;
}
}
bool DefineButtons::isReadyToClose() const {
// Solo está listo para cerrar si:
// 1. Terminó
// 2. Ya mostró el mensaje
// 3. Está cerrando
// 4. La ventana ya no está visible (animación terminada)
return finished_ && message_shown_ && closing_ &&
(!window_message_ || !window_message_->isVisible());
}
void DefineButtons::updateWindowMessage() {
if (!window_message_ || !options_gamepad_) {
return;