From 75ccddbaa1908d24d0528299947a79b6f1deef22 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Wed, 22 Oct 2025 18:17:58 +0200 Subject: [PATCH] style: ja hi ha un caracter per acabar de posar el nom --- source/director.cpp | 2 +- source/enter_name.cpp | 13 ++++++++++--- source/enter_name.hpp | 17 ++++++++++------- source/player.cpp | 31 ++++++++++++++++++++++++++++--- source/sections/game.cpp | 18 ------------------ 5 files changed, 49 insertions(+), 32 deletions(-) diff --git a/source/director.cpp b/source/director.cpp index a4a282c..79f7560 100644 --- a/source/director.cpp +++ b/source/director.cpp @@ -44,7 +44,7 @@ Director::Director(int argc, std::span argv) { Section::name = Section::Name::GAME; Section::options = Section::Options::GAME_PLAY_1P; #elif _DEBUG - Section::name = Section::Name::HI_SCORE_TABLE; + Section::name = Section::Name::GAME; Section::options = Section::Options::GAME_PLAY_1P; #else // NORMAL GAME Section::name = Section::Name::LOGO; diff --git a/source/enter_name.cpp b/source/enter_name.cpp index da37157..fd9324f 100644 --- a/source/enter_name.cpp +++ b/source/enter_name.cpp @@ -17,24 +17,31 @@ void EnterName::init(const std::string& name) { // Incrementa el índice del carácter seleccionado void EnterName::incIndex() { ++selected_index_; - if (selected_index_ >= static_cast(character_list_.size())) { + if (selected_index_ >= character_list_.size()) { selected_index_ = 0; } } // Decrementa el índice del carácter seleccionado void EnterName::decIndex() { - --selected_index_; - if (selected_index_ < 0) { + if (selected_index_ == 0) { selected_index_ = character_list_.size() - 1; + } else { + --selected_index_; } } // Añade el carácter seleccionado al nombre void EnterName::addCharacter() { + // Si no es el ultimo caracter, lo añade if (name_.length() < MAX_NAME_SIZE) { name_.push_back(character_list_[selected_index_]); } + + // Si el nombre está completo, cambia el caracter seleccionado a el caracter de finalizar + /*if (nameIsFull()) { + forceEndCharSelected(); + }*/ } // Elimina el último carácter del nombre diff --git a/source/enter_name.hpp b/source/enter_name.hpp index 09f85d6..438f9e4 100644 --- a/source/enter_name.hpp +++ b/source/enter_name.hpp @@ -20,19 +20,22 @@ class EnterName { void addCharacter(); // Añade el carácter seleccionado al nombre void removeLastCharacter(); // Elimina el último carácter del nombre - auto getFinalName() -> std::string; // Obtiene el nombre final (o aleatorio si vacío) - [[nodiscard]] auto getCurrentName() const -> std::string { return name_; } // Obtiene el nombre actual en proceso - [[nodiscard]] auto getSelectedCharacter(int offset = 0) const -> std::string; // Devuelve el carácter seleccionado con offset relativo - [[nodiscard]] auto getCarousel(int size) const -> std::string; // Devuelve el carrusel de caracteres (size debe ser impar) - [[nodiscard]] auto getSelectedIndex() const -> int { return selected_index_; } // Obtiene el índice del carácter seleccionado - [[nodiscard]] auto getCharacterList() const -> const std::string& { return character_list_; } // Obtiene la lista completa de caracteres + auto getFinalName() -> std::string; // Obtiene el nombre final (o aleatorio si vacío) + [[nodiscard]] auto getCurrentName() const -> std::string { return name_; } // Obtiene el nombre actual en proceso + [[nodiscard]] auto getSelectedCharacter(int offset = 0) const -> std::string; // Devuelve el carácter seleccionado con offset relativo + [[nodiscard]] auto getCarousel(int size) const -> std::string; // Devuelve el carrusel de caracteres (size debe ser impar) + [[nodiscard]] auto getSelectedIndex() const -> int { return selected_index_; } // Obtiene el índice del carácter seleccionado + [[nodiscard]] auto getCharacterList() const -> const std::string& { return character_list_; } // Obtiene la lista completa de caracteres + [[nodiscard]] auto nameIsFull() const -> bool { return name_.size() == MAX_NAME_SIZE; } // Informa de si el nombre ha alcanzado su limite + [[nodiscard]] auto endCharSelected() const -> bool { return selected_index_ == character_list_.size() - 1; } // Informa de si está seleccionado el caracter de terminar private: // --- Variables de estado --- std::string character_list_; // Lista de caracteres permitidos std::string name_; // Nombre en proceso - int selected_index_ = 0; // Índice del carácter seleccionado en "character_list_" + size_t selected_index_ = 0; // Índice del carácter seleccionado en "character_list_" [[nodiscard]] auto sanitizeName(const std::string& name) const -> std::string; // Valida y limpia el nombre static auto getRandomName() -> std::string; // Devuelve un nombre al azar + void forceEndCharSelected() { selected_index_ = character_list_.size() - 1; } // Establece como seleccionado el caracter de terminar }; \ No newline at end of file diff --git a/source/player.cpp b/source/player.cpp index 948bef2..7e0027e 100644 --- a/source/player.cpp +++ b/source/player.cpp @@ -78,6 +78,7 @@ void Player::setInput(Input::Action action) { setInputPlaying(action); break; } + case State::SHOWING_NAME: case State::ENTERING_NAME: case State::ENTERING_NAME_GAME_COMPLETED: { setInputEnteringName(action); @@ -125,19 +126,43 @@ void Player::setInputPlaying(Input::Action action) { void Player::setInputEnteringName(Input::Action action) { switch (action) { case Input::Action::FIRE_LEFT: - enter_name_->addCharacter(); + if (isShowingName()) { + passShowingName(); + } else { + if (enter_name_->endCharSelected()) { + last_enter_name_ = getRecordName(); + setPlayingState(Player::State::SHOWING_NAME); + playSound("name_input_accept.wav"); + } else { + enter_name_->addCharacter(); + playSound("service_menu_select.wav"); + } + } break; case Input::Action::FIRE_CENTER: - enter_name_->removeLastCharacter(); + if (isShowingName()) { + passShowingName(); + } else { + enter_name_->removeLastCharacter(); + playSound("service_menu_back.wav"); + } break; case Input::Action::RIGHT: enter_name_->incIndex(); + playSound("service_menu_move.wav"); break; case Input::Action::LEFT: enter_name_->decIndex(); + playSound("service_menu_move.wav"); break; case Input::Action::START: - last_enter_name_ = getRecordName(); + if (isShowingName()) { + passShowingName(); + } else { + last_enter_name_ = getRecordName(); + setPlayingState(Player::State::SHOWING_NAME); + playSound("name_input_accept.wav"); + } break; default: break; diff --git a/source/sections/game.cpp b/source/sections/game.cpp index 37df4bc..18951f2 100644 --- a/source/sections/game.cpp +++ b/source/sections/game.cpp @@ -1438,46 +1438,28 @@ void Game::handlePlayerWaitingInput(const std::shared_ptr& player) { // Procesa las entradas para la introducción del nombre del jugador. void Game::handleNameInput(const std::shared_ptr& player) { if (input_->checkAction(Input::Action::FIRE_LEFT, Input::DO_NOT_ALLOW_REPEAT, player->getUsesKeyboard(), player->getGamepad())) { - if (player->isShowingName()) { - player->passShowingName(); - return; - } player->setInput(Input::Action::FIRE_LEFT); - playSound("service_menu_select.wav"); return; } if (input_->checkAction(Input::Action::FIRE_CENTER, Input::DO_NOT_ALLOW_REPEAT, player->getUsesKeyboard(), player->getGamepad()) || input_->checkAction(Input::Action::FIRE_RIGHT, Input::DO_NOT_ALLOW_REPEAT, player->getUsesKeyboard(), player->getGamepad())) { - if (player->isShowingName()) { - player->passShowingName(); - return; - } player->setInput(Input::Action::FIRE_CENTER); - playSound("service_menu_back.wav"); return; } if (input_->checkAction(Input::Action::LEFT, Input::DO_NOT_ALLOW_REPEAT, player->getUsesKeyboard(), player->getGamepad())) { player->setInput(Input::Action::LEFT); - playSound("service_menu_move.wav"); return; } if (input_->checkAction(Input::Action::RIGHT, Input::DO_NOT_ALLOW_REPEAT, player->getUsesKeyboard(), player->getGamepad())) { player->setInput(Input::Action::RIGHT); - playSound("service_menu_move.wav"); return; } if (input_->checkAction(Input::Action::START, Input::DO_NOT_ALLOW_REPEAT, player->getUsesKeyboard(), player->getGamepad())) { - if (player->isShowingName()) { - player->passShowingName(); - return; - } player->setInput(Input::Action::START); - player->setPlayingState(Player::State::SHOWING_NAME); - playSound("name_input_accept.wav"); updateHiScoreName(); } }