corregits bugs de toquetechar vectors i merdes i passats a lists

This commit is contained in:
2025-10-20 12:29:37 +02:00
parent 2b4523d644
commit c8bf9640cf
5 changed files with 62 additions and 63 deletions

View File

@@ -357,7 +357,7 @@ void Game::updateGameStateGameOver(float delta_time) {
updatePathSprites(delta_time);
updateTimeStopped(delta_time);
bullet_manager_->checkCollisions();
cleanVectors();
cleanLists();
if (game_over_timer_ < GAME_OVER_DURATION_S) {
game_over_timer_ += delta_time; // Incremento time-based primero
@@ -391,7 +391,7 @@ void Game::updateGameStateCompleted(float delta_time) {
updateItems(delta_time);
updateSmartSprites(delta_time);
updatePathSprites(delta_time);
cleanVectors();
cleanLists();
// Maneja eventos del juego completado
handleGameCompletedEvents();
@@ -684,16 +684,18 @@ void Game::createItem(ItemType type, float x, float y) {
// Vacia el vector de items
void Game::freeItems() {
if (!items_.empty()) {
for (int i = items_.size() - 1; i >= 0; --i) {
if (!items_[i]->isEnabled()) {
if (items_[i]->getType() == ItemType::COFFEE_MACHINE) {
coffee_machine_enabled_ = false;
}
items_.erase(items_.begin() + i);
std::erase_if(items_, [&](const auto& item) {
if (!item->isEnabled()) {
// Comprobamos si hay que realizar una acción extra
if (item->getType() == ItemType::COFFEE_MACHINE) {
coffee_machine_enabled_ = false;
}
// Devolvemos 'true' para indicar que este elemento debe ser borrado.
return true;
}
}
// Devolvemos 'false' para conservarlo.
return false;
});
}
// Crea un objeto PathSprite
@@ -730,26 +732,18 @@ void Game::createMessage(const std::vector<Path>& paths, const std::shared_ptr<T
path_sprites_.back()->enable();
}
// Vacia el vector de smartsprites
// Vacia la lista de smartsprites
void Game::freeSmartSprites() {
if (!smart_sprites_.empty()) {
for (int i = smart_sprites_.size() - 1; i >= 0; --i) {
if (smart_sprites_[i]->hasFinished()) {
smart_sprites_.erase(smart_sprites_.begin() + i);
}
}
}
std::erase_if(smart_sprites_, [](const auto& sprite) {
return sprite->hasFinished();
});
}
// Vacia el vector de pathsprites
// Vacia la lista de pathsprites
void Game::freePathSprites() {
if (!path_sprites_.empty()) {
for (int i = path_sprites_.size() - 1; i >= 0; --i) {
if (path_sprites_[i]->hasFinished()) {
path_sprites_.erase(path_sprites_.begin() + i);
}
}
}
std::erase_if(path_sprites_, [](const auto& sprite) {
return sprite->hasFinished();
});
}
// Crea un SpriteSmart para arrojar el item café al recibir un impacto
@@ -1822,11 +1816,11 @@ void Game::updateGameStatePlaying(float delta_time) {
updateMenace();
checkAndUpdateBalloonSpeed();
checkState();
cleanVectors();
cleanLists();
}
// Vacía los vectores de elementos deshabilitados
void Game::cleanVectors() {
void Game::cleanLists() {
bullet_manager_->freeBullets();
balloon_manager_->freeBalloons();
freeItems();