diff --git a/source/game.cpp b/source/game.cpp index 6366b00..a48762f 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -898,16 +898,16 @@ void Game::deployEnemyFormation() lastEnemyDeploy = set; - const stage_t stage = enemyFormations->getStage(currentStage) - const int numEnemies = enemyFormations->stage[currentStage].enemyPool->set[set]->numberOfEnemies; + const stage_t stage = enemyFormations->getStage(currentStage); + const int numEnemies = stage.enemyPool->set[set]->numberOfEnemies; for (int i = 0; i < numEnemies; ++i) { - createBalloon(enemyFormations->stage[currentStage].enemyPool->set[set]->init[i].x, - enemyFormations->stage[currentStage].enemyPool->set[set]->init[i].y, - enemyFormations->stage[currentStage].enemyPool->set[set]->init[i].kind, - enemyFormations->stage[currentStage].enemyPool->set[set]->init[i].velX, + createBalloon(stage.enemyPool->set[set]->init[i].x, + stage.enemyPool->set[set]->init[i].y, + stage.enemyPool->set[set]->init[i].kind, + stage.enemyPool->set[set]->init[i].velX, enemySpeed, - enemyFormations->stage[currentStage].enemyPool->set[set]->init[i].creationCounter); + stage.enemyPool->set[set]->init[i].creationCounter); } enemyDeployCounter = 300; @@ -918,7 +918,7 @@ void Game::deployEnemyFormation() // Aumenta el poder de la fase void Game::increaseStageCurrentPower(int power) { - enemyFormations->stage[currentStage].currentPower += power; + currentPower += power; } // Actualiza el valor de hiScore en caso necesario @@ -985,19 +985,19 @@ void Game::renderPlayers() // Actualiza las variables de la fase void Game::updateStage() { - if (enemyFormations->stage[currentStage].currentPower >= enemyFormations->stage[currentStage].powerToComplete) + if (currentPower >= enemyFormations->getStage(currentStage).powerToComplete) { // Cambio de fase currentStage++; + currentPower = 0; lastStageReached = currentStage; if (currentStage == 10) - { // Ha llegado al final el juego - gameCompleted = true; // Marca el juego como completado - currentStage = 9; // Deja el valor dentro de los limites - enemyFormations->stage[currentStage].currentPower = 0; // Deja el poder a cero para que no vuelva a entrar en esta condición - destroyAllBalloons(); // Destruye a todos los enemigos - enemyFormations->stage[currentStage].currentPower = 0; // Vuelve a dejar el poder a cero, por lo que hubiera podido subir al destruir todos lo globos - menaceCurrent = 255; // Sube el nivel de amenaza para que no cree mas globos + { // Ha llegado al final el juego + gameCompleted = true; // Marca el juego como completado + currentStage = 9; // Deja el valor dentro de los limites + destroyAllBalloons(); // Destruye a todos los enemigos + currentPower = 0; // Vuelve a dejar el poder a cero, por lo que hubiera podido subir al destruir todos lo globos + menaceCurrent = 255; // Sube el nivel de amenaza para que no cree mas globos for (auto player : players) { // Añade un millon de puntos a los jugadores que queden vivos if (player->isAlive()) @@ -1186,7 +1186,7 @@ void Game::decBalloonSpeed() // Actualiza la velocidad de los globos en funcion del poder acumulado de la fase void Game::updateBalloonSpeed() { - const float percent = (float)enemyFormations->stage[currentStage].currentPower / (float)enemyFormations->stage[currentStage].powerToComplete; + const float percent = (float)currentPower / (float)enemyFormations->getStage(currentStage).powerToComplete; if (enemySpeed == BALLOON_SPEED_1) { if (percent > 0.2f) @@ -2374,7 +2374,7 @@ void Game::renderMessages() // STAGE NUMBER if (stageBitmapCounter < STAGE_COUNTER) { - const int stageNum = enemyFormations->stage[currentStage].number; + const int stageNum = enemyFormations->getStage(currentStage).number; std::string text; if (stageNum == 10) @@ -2383,7 +2383,7 @@ void Game::renderMessages() } else { // X fases restantes - text = std::to_string(11 - enemyFormations->stage[currentStage].number) + lang->getText(38); + text = std::to_string(11 - stageNum) + lang->getText(38); } if (!gameCompleted) @@ -2763,8 +2763,8 @@ void Game::updateScoreboard() scoreboard->setMult2(players[1]->getScoreMultiplier()); // Resto de marcador - scoreboard->setStage(enemyFormations->stage[currentStage].number); - scoreboard->setPower((float)enemyFormations->stage[currentStage].currentPower / (float)enemyFormations->stage[currentStage].powerToComplete); + scoreboard->setStage(enemyFormations->getStage(currentStage).number); + scoreboard->setPower((float)currentPower / (float)enemyFormations->getStage(currentStage).powerToComplete); scoreboard->setHiScore(hiScore); scoreboard->setHiScoreName(hiScoreName);