100 lines
3.5 KiB
C++
100 lines
3.5 KiB
C++
#pragma once
|
|
|
|
#include "balloon.h"
|
|
class BalloonFormations; // lines 16-16
|
|
class Explosions; // lines 18-18
|
|
|
|
class BalloonManager
|
|
{
|
|
private:
|
|
std::vector<std::shared_ptr<Balloon>> balloons_; // Vector con los globos
|
|
std::unique_ptr<Explosions> explosions_; // Objeto para dibujar explosiones
|
|
std::unique_ptr<BalloonFormations> balloon_formations_; // Objeto para gestionar las oleadas enemigas
|
|
|
|
std::vector<std::shared_ptr<Texture>> balloon_textures_; // Vector con las texturas de los globos
|
|
std::vector<std::shared_ptr<Texture>> explosions_textures_; // Vector con las texturas de las explosiones
|
|
|
|
std::vector<std::vector<std::string>> balloon_animations_; // Vector con las animaciones de los globos
|
|
std::vector<std::vector<std::string>> explosions_animations_; // Vector con las animaciones de las explosiones
|
|
|
|
float balloon_speed_; // Velocidad a la que se mueven los enemigos
|
|
float default_balloon_speed_; // Velocidad base de los enemigos, sin incrementar
|
|
int balloon_deploy_counter_ = 0; // Cuando se lanza una formación, se le da un valor y no sale otra hasta que llegue a cero
|
|
int balloons_popped_ = 0; // Lleva la cuenta de los globos explotados
|
|
bool power_ball_enabled_ = false; // Indica si hay una powerball ya activa
|
|
int power_ball_counter_ = 0; // Contador de formaciones enemigas entre la aparicion de una PowerBall y otra
|
|
int last_balloon_deploy_ = 0; // Guarda cual ha sido la última formación desplegada para no repetir;
|
|
|
|
// Inicializa
|
|
void init();
|
|
|
|
public:
|
|
// Constructor
|
|
BalloonManager();
|
|
|
|
// Destructor
|
|
~BalloonManager() = default;
|
|
|
|
// Actualiza
|
|
void update();
|
|
|
|
// Renderiza los globos
|
|
void renderBalloons();
|
|
|
|
// Vacia del vector de globos los globos que ya no sirven
|
|
void freeBalloons();
|
|
|
|
// Crea una formación de enemigos
|
|
void deployBalloonFormation();
|
|
|
|
// Actualiza la variable enemyDeployCounter
|
|
void updateBalloonDeployCounter();
|
|
|
|
// Indica si se puede crear una powerball
|
|
bool canPowerBallBeCreated();
|
|
|
|
// Calcula el poder actual de los globos en pantalla
|
|
int calculateScreenPower();
|
|
|
|
// Crea un globo nuevo en el vector de globos
|
|
std::shared_ptr<Balloon> createBalloon(float x, int y, BalloonType type, BalloonSize size, float velx, float speed, int creation_timer);
|
|
|
|
// Crea un globo a partir de otro globo
|
|
void createChildBalloon(const std::shared_ptr<Balloon> &balloon, const std::string &direction);
|
|
|
|
// Crea una PowerBall
|
|
void createPowerBall();
|
|
|
|
// Establece la velocidad de los globos
|
|
void setBalloonSpeed(float speed);
|
|
|
|
// Actualiza la velocidad de los globos en funcion del poder acumulado de la fase
|
|
void checkAndUpdateBalloonSpeed();
|
|
|
|
// Explosiona un globo. Lo destruye y crea otros dos si es el caso
|
|
void popBalloon(std::shared_ptr<Balloon> balloon);
|
|
|
|
// Explosiona un globo. Lo destruye = no crea otros globos
|
|
void destroyBalloon(std::shared_ptr<Balloon> &balloon);
|
|
|
|
// Destruye todos los globos
|
|
void destroyAllBalloons();
|
|
|
|
// Detiene todos los globos
|
|
void stopAllBalloons();
|
|
|
|
// Pone en marcha todos los globos
|
|
void startAllBalloons();
|
|
|
|
// Cambia el color de todos los globos
|
|
void reverseColorsToAllBalloons();
|
|
|
|
// Cambia el color de todos los globos
|
|
void normalColorsToAllBalloons();
|
|
|
|
// Recarga las texturas
|
|
void reLoad();
|
|
|
|
// Crea dos globos gordos
|
|
void createTwoBigBalloons();
|
|
}; |