Files
coffee_crisis_arcade_edition/source/enemy_formations.h

63 lines
2.2 KiB
C++

#pragma once
constexpr int NUMBER_OF_ENEMY_FORMATIONS = 100;
constexpr int MAX_NUMBER_OF_ENEMIES_IN_A_FORMATION = 50;
// Estructuras
struct EnemyFormationInit
{
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 vel_x; // Velocidad inicial en el eje X
int kind; // Tipo de enemigo
int creation_counter; // Temporizador para la creación del enemigo
};
struct EnemyFormationUnit // Contiene la información de una formación enemiga
{
int number_of_enemies; // Cantidad de enemigos que forman la formación
EnemyFormationInit init[MAX_NUMBER_OF_ENEMIES_IN_A_FORMATION]; // Vector con todas las inicializaciones de los enemigos de la formación
};
struct EnemyFormationPool
{
EnemyFormationUnit *set[10]; // Conjunto de formaciones enemigas
};
struct Stage // Contiene todas las variables relacionadas con una fase
{
EnemyFormationPool *enemy_pool; // El conjunto de formaciones enemigas 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 EnemyFormations, para gestionar las formaciones enemigas
class EnemyFormations
{
private:
// Variables
Stage stage_[10]; // Variable con los datos de cada pantalla
EnemyFormationUnit enemy_formation_[NUMBER_OF_ENEMY_FORMATIONS]; // Vector con todas las formaciones enemigas
EnemyFormationPool enemy_pool_[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() = default;
// Devuelve una fase
Stage getStage(int index) const;
};