fix: el nom apareixia duplicat en la tabla de records

This commit is contained in:
2025-08-10 20:36:13 +02:00
parent 0fc709f6d5
commit 659a4ced44
4 changed files with 23 additions and 22 deletions

View File

@@ -1172,12 +1172,8 @@ void Game::updateScoreboard() {
scoreboard_->update();
}
// Añade una puntuación a la tabla de records
void Game::addScoreToScoreBoard(const std::shared_ptr<Player> &player) {
const auto ENTRY = HiScoreEntry(trim(player->getLastEnterName()), player->getScore(), player->get1CC());
auto manager = std::make_unique<ManageHiScoreTable>(Options::settings.hi_score_table);
Options::settings.glowing_entries.at(static_cast<int>(player->getId()) - 1) = manager->add(ENTRY);
manager->saveToFile(Asset::get()->get("score.bin"));
// Pone en el marcador el nombre del primer jugador de la tabla
void Game::updateHiScoreName() {
hi_score_.name = Options::settings.hi_score_table.front().name;
}
@@ -1443,8 +1439,8 @@ void Game::handleNameInput(const std::shared_ptr<Player> &player) {
player->setPlayingState(Player::State::CONTINUE);
} else if (player->getEnterNamePositionOverflow()) {
player->setInput(Input::Action::START);
addScoreToScoreBoard(player);
player->setPlayingState(Player::State::SHOWING_NAME);
updateHiScoreName();
} else {
player->setInput(Input::Action::RIGHT);
}
@@ -1464,8 +1460,8 @@ void Game::handleNameInput(const std::shared_ptr<Player> &player) {
player->setPlayingState(Player::State::CONTINUE);
} else {
player->setInput(Input::Action::START);
addScoreToScoreBoard(player);
player->setPlayingState(Player::State::SHOWING_NAME);
updateHiScoreName();
}
}
}

View File

@@ -267,10 +267,10 @@ class Game {
void evaluateAndSetMenace(); // Calcula y establece amenaza según globos activos
// --- Puntuación y marcador ---
void updateHiScore(); // Actualiza el récord máximo si es necesario
void updateScoreboard(); // Actualiza la visualización del marcador
void addScoreToScoreBoard(const std::shared_ptr<Player> &player); // Añade puntuación del jugador al marcador
void initScoreboard(); // Inicializa el sistema de puntuación
void updateHiScore(); // Actualiza el récord máximo si es necesario
void updateScoreboard(); // Actualiza la visualización del marcador
void updateHiScoreName(); // Pone en el marcador el nombre del primer jugador de la tabla
void initScoreboard(); // Inicializa el sistema de puntuación
// --- Modo demostración ---
void initDemo(Player::Id player_id); // Inicializa variables para el modo demostración