canvi de pc

This commit is contained in:
2024-11-06 17:22:16 +01:00
parent caf04e3a7e
commit d902bb9088
5 changed files with 107 additions and 163 deletions

View File

@@ -44,6 +44,7 @@ Game::Game(int player_id, int current_stage, bool demo)
background_(std::make_unique<Background>()),
canvas_(SDL_CreateTexture(renderer_, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, param.game.play_area.rect.w, param.game.play_area.rect.h)),
fade_(std::make_unique<Fade>()),
balloon_manager_(std::make_unique<BalloonManager>(*this)),
current_stage_(current_stage)
{
// Pasa variables
@@ -171,9 +172,6 @@ void Game::setResources()
}
}
// Aumenta el poder de la fase
void Game::increaseStageCurrentPower(int power) { current_power_ += power; }
// Actualiza el valor de hiScore en caso necesario
void Game::updateHiScore()
{
@@ -1781,4 +1779,33 @@ void Game::cleanVectors()
freeItems();
freeSmartSprites();
freePathSprites();
}
// Gestiona el nivel de amenaza
void Game::updateMenace()
{
const auto stage = balloon_formations_->getStage(current_stage_);
const float percent = current_power_ / stage.power_to_complete;
const int difference = stage.max_menace - stage.min_menace;
// Aumenta el nivel de amenaza en función de la puntuación
menace_threshold_ = stage.min_menace + (difference * percent);
// Si el nivel de amenza es inferior al umbral
if (menace_current_ < menace_threshold_)
{
// Crea una formación de enemigos
balloon_manager_->deployBalloonFormation();
// Recalcula el nivel de amenaza con el nuevo globo
evaluateAndSetMenace();
}
}
// Calcula y establece el valor de amenaza en funcion de los globos activos
void Game::evaluateAndSetMenace()
{
menace_current_ = std::accumulate(
balloons_.begin(), balloons_.end(), 0, [](int sum, const auto &balloon)
{ return sum + (balloon->isEnabled() ? balloon->getMenace() : 0); });
}