75 lines
2.9 KiB
C++
75 lines
2.9 KiB
C++
#pragma once
|
|
|
|
#include "balloon.h"
|
|
|
|
constexpr int NUMBER_OF_BALLOON_FORMATIONS = 100;
|
|
constexpr int MAX_NUMBER_OF_BALLOONS_IN_A_FORMATION = 50;
|
|
constexpr int NUMBER_OF_SETS_PER_POOL = 10;
|
|
constexpr int NUMBER_OF_STAGES = 10;
|
|
|
|
// Estructuras
|
|
struct BalloonFormationParams
|
|
{
|
|
int x = 0; // Posición en el eje X donde crear el globo
|
|
int y = 0; // Posición en el eje Y donde crear el globo
|
|
float vel_x = 0.0f; // Velocidad inicial en el eje X
|
|
BalloonType type = BalloonType::BALLOON; // Tipo de globo
|
|
BalloonSize size = BalloonSize::SIZE1; // Tamaño de globo
|
|
int creation_counter = 0; // Temporizador para la creación del globo
|
|
|
|
// Constructor por defecto
|
|
BalloonFormationParams() = default;
|
|
|
|
// Constructor con parámetros
|
|
BalloonFormationParams(int x_val, int y_val, float vel_x_val, BalloonType type_val, BalloonSize size_val, int creation_counter_val)
|
|
: x(x_val), y(y_val), vel_x(vel_x_val), type(type_val), size(size_val), creation_counter(creation_counter_val) {}
|
|
};
|
|
|
|
struct BalloonFormationUnit // Contiene la información de una formación enemiga
|
|
{
|
|
int number_of_balloons; // Cantidad de globos que forman la formación
|
|
BalloonFormationParams init[MAX_NUMBER_OF_BALLOONS_IN_A_FORMATION]; // Vector con todas las inicializaciones de los globos de la formación
|
|
};
|
|
|
|
struct BalloonFormationPool
|
|
{
|
|
BalloonFormationUnit set[NUMBER_OF_SETS_PER_POOL]; // Conjunto de formaciones de globos
|
|
};
|
|
|
|
struct Stage // Contiene todas las variables relacionadas con una fase
|
|
{
|
|
BalloonFormationPool balloon_pool; // El conjunto de formaciones de globos de la fase
|
|
int power_to_complete; // Cantidad de poder que se necesita para completar la fase
|
|
int max_menace; // Umbral máximo de amenaza de la fase
|
|
int min_menace; // Umbral mínimo de amenaza de la fase
|
|
int number; // Número de fase
|
|
};
|
|
|
|
// Clase BalloonFormations, para gestionar las formaciones de globos
|
|
class BalloonFormations
|
|
{
|
|
private:
|
|
// Variables
|
|
Stage stage_[NUMBER_OF_STAGES]; // Variable con los datos de cada pantalla
|
|
BalloonFormationUnit balloon_formation_[NUMBER_OF_BALLOON_FORMATIONS]; // Vector con todas las formaciones enemigas
|
|
BalloonFormationPool balloon_formation_pool_[NUMBER_OF_STAGES]; // Variable con los diferentes conjuntos de formaciones enemigas
|
|
|
|
// Inicializa las formaciones enemigas
|
|
void initBalloonFormations();
|
|
|
|
// Inicializa los conjuntos de formaciones
|
|
void initBalloonFormationPools();
|
|
|
|
// Inicializa las fases del juego
|
|
void initGameStages();
|
|
|
|
public:
|
|
// Constructor
|
|
BalloonFormations();
|
|
|
|
// Destructor
|
|
~BalloonFormations() = default;
|
|
|
|
// Devuelve una fase
|
|
Stage getStage(int index) const;
|
|
}; |