ja s'ha liat la cosa per no fer pull, ostia

This commit is contained in:
2025-07-24 14:00:05 +02:00
parent 55d5957ff0
commit fa6fbeb09c
8 changed files with 298 additions and 284 deletions

View File

@@ -6,24 +6,24 @@
#include <string> // Para string
#include <vector> // Para vector
#include "balloon.h" // Para BalloonSize, BalloonType
#include "balloon.h" // Para Balloon::Size, Balloon::Type
// --- Constantes de configuración ---
// --- Estructuras de datos ---
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::SIZE_0; // Tamaño de globo
int creation_counter = 0; // Temporizador para la creación del globo
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
Balloon::Type type = Balloon::Type::BALLOON; // Tipo de globo
Balloon::Size size = Balloon::Size::SMALL; // 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)
BalloonFormationParams(int x_val, int y_val, float vel_x_val, Balloon::Type type_val, Balloon::Size 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) {}
};
@@ -68,15 +68,27 @@ class BalloonFormations {
std::vector<BalloonFormationUnit> balloon_formation_; // Vector con todas las formaciones enemigas
std::vector<BalloonFormationPool> balloon_formation_pool_; // Conjuntos de formaciones enemigas
// --- Métodos internos de inicialización ---
void initFormations(); // Inicializa la lista principal de formaciones de globos disponibles
void initFormationPools(); // Prepara las estructuras de agrupamiento o reutilización de formaciones (pools)
// --- Inicialización de formaciones ---
void initFormations(); // Inicializa la lista principal de formaciones de globos disponibles
void initFormationPools(); // Prepara las estructuras de agrupamiento o reutilización de formaciones (pools)
// --- Carga y análisis de datos ---
auto loadFormationsFromFile(const std::string& filename, const std::map<std::string, float>& variables) -> bool; // Carga las formaciones desde un archivo, evaluando variables dinámicas
auto parseBalloonLine(const std::string& line, const std::map<std::string, float>& variables) -> std::optional<BalloonFormationParams>; // Parsea una línea individual del archivo y genera parámetros de formación
auto evaluateExpression(const std::string& expr, const std::map<std::string, float>& variables) -> float; // Evalúa expresiones matemáticas con variables definidas (complejas)
auto evaluateSimpleExpression(const std::string& expr, const std::map<std::string, float>& variables) -> float; // Evalúa expresiones más sencillas (sin paréntesis o operadores avanzados)
static auto trim(const std::string& str) -> std::string; // Elimina espacios en blanco al inicio y fin de una cadena
void createFloaterVariants(); // Genera variantes de globos flotantes según configuración o aleatoriedad
void addTestFormation(); // Añade una formación de prueba para debug o validación en tiempo de desarrollo
void loadDefaultFormations(); // Carga las formaciones por defecto incluidas en el juego si no hay archivo externo
// --- Evaluación de expresiones ---
auto evaluateExpression(const std::string& expr, const std::map<std::string, float>& variables) -> float; // Evalúa expresiones matemáticas con variables definidas (complejas)
auto evaluateSimpleExpression(const std::string& expr, const std::map<std::string, float>& variables) -> float; // Evalúa expresiones más sencillas (sin paréntesis o operadores avanzados)
// --- Utilidades ---
static auto trim(const std::string& str) -> std::string; // Elimina espacios en blanco al inicio y fin de una cadena
// --- Generación de variantes ---
void createFloaterVariants(); // Genera variantes de globos flotantes según configuración o aleatoriedad
void loadDefaultFormations(); // Carga las formaciones por defecto incluidas en el juego si no hay archivo externo
// --- Depuración (solo en modo DEBUG) ---
#ifdef _DEBUG
void addTestFormation(); // Añade una formación de prueba para debug o validación en tiempo de desarrollo
#endif
};