68 lines
2.2 KiB
C++
68 lines
2.2 KiB
C++
#pragma once
|
|
|
|
#include <SDL2/SDL.h>
|
|
#include "common/utils.h"
|
|
#include "const.h"
|
|
#include "balloon.h"
|
|
|
|
#define NUMBER_OF_ENEMY_FORMATIONS 100
|
|
#define MAX_NUMBER_OF_ENEMIES_IN_A_FORMATION 50
|
|
|
|
// Estructuras
|
|
struct enemyInits_t
|
|
{
|
|
int x; // Posición en el eje X donde crear al enemigo
|
|
int y; // Posición en el eje Y donde crear al enemigo
|
|
float velX; // Velocidad inicial en el eje X
|
|
int kind; // Tipo de enemigo
|
|
int creationCounter; // Temporizador para la creación del enemigo
|
|
};
|
|
|
|
struct enemyFormation_t // Contiene la información de una formación enemiga
|
|
{
|
|
int numberOfEnemies; // Cantidad de enemigos que forman la formación
|
|
enemyInits_t init[MAX_NUMBER_OF_ENEMIES_IN_A_FORMATION]; // Vector con todas las inicializaciones de los enemigos de la formación
|
|
};
|
|
|
|
struct enemyPool_t
|
|
{
|
|
enemyFormation_t *set[10]; // Conjunto de formaciones enemigas
|
|
};
|
|
|
|
struct stage_t // Contiene todas las variables relacionadas con una fase
|
|
{
|
|
enemyPool_t *enemyPool; // El conjunto de formaciones enemigas de la fase
|
|
int powerToComplete; // Cantidad de poder que se necesita para completar la fase
|
|
int maxMenace; // Umbral máximo de amenaza de la fase
|
|
int minMenace; // Umbral mínimo de amenaza de la fase
|
|
int number; // Número de fase
|
|
};
|
|
|
|
// Clase EnemyFormations, para gestionar las formaciones enemigas
|
|
class EnemyFormations
|
|
{
|
|
private:
|
|
// Variables
|
|
stage_t stage[10]; // Variable con los datos de cada pantalla
|
|
enemyFormation_t enemyFormation[NUMBER_OF_ENEMY_FORMATIONS]; // Vector con todas las formaciones enemigas
|
|
enemyPool_t enemyPool[10]; // Variable con los diferentes conjuntos de formaciones enemigas
|
|
|
|
// Inicializa las formaciones enemigas
|
|
void initEnemyFormations();
|
|
|
|
// Inicializa los conjuntos de formaciones
|
|
void initEnemyPools();
|
|
|
|
// Inicializa las fases del juego
|
|
void initGameStages();
|
|
|
|
public:
|
|
// Constructor
|
|
EnemyFormations();
|
|
|
|
// Destructor
|
|
~EnemyFormations();
|
|
|
|
// Devuelve una fase
|
|
stage_t getStage(int index);
|
|
}; |