corregits bugs de toquetechar vectors i merdes i passats a lists
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include <memory> // Para shared_ptr, unique_ptr
|
||||
#include <string> // Para string
|
||||
#include <vector> // Para vector
|
||||
#include <list> // Para list
|
||||
|
||||
#include "bullet.hpp" // for Bullet
|
||||
#include "demo.hpp" // for Demo
|
||||
@@ -121,9 +122,9 @@ class Game {
|
||||
SDL_Texture* canvas_; // Textura para dibujar la zona de juego
|
||||
|
||||
std::vector<std::shared_ptr<Player>> players_; // Vector con los jugadores
|
||||
std::vector<std::unique_ptr<Item>> items_; // Vector con los items
|
||||
std::vector<std::unique_ptr<SmartSprite>> smart_sprites_; // Vector con los smartsprites
|
||||
std::vector<std::unique_ptr<PathSprite>> path_sprites_; // Vector con los pathsprites
|
||||
std::list<std::unique_ptr<Item>> items_; // Vector con los items
|
||||
std::list<std::unique_ptr<SmartSprite>> smart_sprites_; // Vector con los smartsprites
|
||||
std::list<std::unique_ptr<PathSprite>> path_sprites_; // Vector con los pathsprites
|
||||
|
||||
std::vector<std::shared_ptr<Texture>> item_textures_; // Vector con las texturas de los items
|
||||
std::vector<std::vector<std::shared_ptr<Texture>>> player_textures_; // Vector con todas las texturas de los jugadores
|
||||
@@ -210,7 +211,7 @@ class Game {
|
||||
void handleEvents(); // Procesa los eventos del sistema en cola
|
||||
void checkState(); // Verifica y actualiza el estado actual del juego
|
||||
void setState(State state); // Cambia el estado del juego
|
||||
void cleanVectors(); // Limpia vectores de elementos deshabilitados
|
||||
void cleanLists(); // Limpia vectores de elementos deshabilitados
|
||||
|
||||
// --- Gestión de estados del juego ---
|
||||
void updateGameStates(float delta_time); // Actualiza todos los estados del juego
|
||||
|
||||
Reference in New Issue
Block a user