diff --git a/source/game.cpp b/source/game.cpp index dc78928..548b31a 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -63,7 +63,7 @@ Game::Game(int playerID, int currentStage, Screen *screen, Asset *asset, Lang *l Game::~Game() { - saveScoreFile(); + //saveScoreFile(); #ifdef RECORDING saveDemoFile(); #endif @@ -690,16 +690,16 @@ bool Game::loadScoreFile() // Establece el valor de la máxima puntuación a partir del vector con los datos if (scoreDataFile[0] == 0) { - hiScore = 10000; + hiScore.score = 10000; } // Comprueba el checksum para ver si se ha modificado el fichero else if (scoreDataFile[0] % 43 == scoreDataFile[1]) { - hiScore = scoreDataFile[0]; + hiScore.score = scoreDataFile[0]; } else { - hiScore = 10000; + hiScore.score = 10000; } return success; @@ -786,8 +786,8 @@ bool Game::loadDemoFile(std::string f, demoKeys_t (*dataFile)[TOTAL_DEMO_DATA]) bool Game::saveScoreFile() { // Almacena la máxima puntuación en el fichero junto con un checksum - scoreDataFile[0] = hiScore; - scoreDataFile[1] = hiScore % 43; + scoreDataFile[0] = hiScore.score; + scoreDataFile[1] = hiScore.score % 43; bool success = true; const std::string p = asset->get("score.bin"); @@ -916,10 +916,10 @@ void Game::updateHiScore() { // Si la puntuación actual es mayor que la máxima puntuación for (auto player : players) - if (player->getScore() > hiScore) + if (player->getScore() > hiScore.score) { // Actualiza la máxima puntuación - hiScore = player->getScore(); + hiScore.score = player->getScore(); // Si se supera la máxima puntuación emite sonido if (hiScoreAchieved == false) @@ -2815,9 +2815,10 @@ void Game::reloadTextures() void Game::setHiScore() { // Carga el fichero de puntos - loadScoreFile(); + //loadScoreFile(); - hiScoreName = ""; + hiScore.score = options->game.hiScoreTable[0].score; + hiScore.name = options->game.hiScoreTable[0].name; } // Actualiza el marcador @@ -2832,8 +2833,8 @@ void Game::updateScoreboard() // Resto de marcador scoreboard->setStage(enemyFormations->getStage(currentStage).number); scoreboard->setPower((float)currentPower / (float)enemyFormations->getStage(currentStage).powerToComplete); - scoreboard->setHiScore(hiScore); - scoreboard->setHiScoreName(hiScoreName); + scoreboard->setHiScore(hiScore.score); + scoreboard->setHiScoreName(hiScore.name); // Lógica del marcador scoreboard->update(); diff --git a/source/game.h b/source/game.h index 5b9ad45..e89ab64 100644 --- a/source/game.h +++ b/source/game.h @@ -166,9 +166,8 @@ private: // Variables Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa Uint32 ticksSpeed; // Velocidad a la que se repiten los bucles del programa - int hiScore; // Puntuación máxima bool hiScoreAchieved; // Indica si se ha superado la puntuación máxima - std::string hiScoreName; // Nombre del jugador que ostenta la máxima puntuación + hiScoreEntry_t hiScore; // Máxima puntuación y nombre de quien la ostenta int currentStage; // Indica la fase actual int stageBitmapCounter; // Contador para el tiempo visible del texto de Stage float stageBitmapPath[STAGE_COUNTER]; // Vector con los puntos Y por donde se desplaza el texto