claude: mogut initBalloonFormations() a un fitxer extern

This commit is contained in:
2025-07-20 20:21:14 +02:00
parent f6228ae0c1
commit 228968c728
7 changed files with 620 additions and 321 deletions

View File

@@ -1,8 +1,12 @@
#pragma once
#include <vector>
#include "balloon.h" // Para BALLOON_VELX_NEGATIVE, BALLOON_VELX_POSITIVE
#include <fstream>
#include <map>
#include <optional>
#include <sstream>
#include <string>
#include <vector>
// --- Constantes de configuración ---
constexpr int NUMBER_OF_BALLOON_FORMATIONS = 100;
@@ -32,14 +36,14 @@ struct BalloonFormationUnit {
std::vector<BalloonFormationParams> init; // Vector con todas las inicializaciones de los globos de la formación
// Constructor con parámetros
BalloonFormationUnit(int num_balloons, const std::vector<BalloonFormationParams> &init_params)
BalloonFormationUnit(int num_balloons, const std::vector<BalloonFormationParams>& init_params)
: number_of_balloons(num_balloons), init(init_params) {}
// Constructor por defecto
BalloonFormationUnit() : number_of_balloons(0) {}
};
using BalloonFormationPool = std::vector<const BalloonFormationUnit *>;
using BalloonFormationPool = std::vector<const BalloonFormationUnit*>;
// --- Clase BalloonFormations ---
class BalloonFormations {
@@ -52,9 +56,9 @@ class BalloonFormations {
~BalloonFormations() = default;
// --- Getters ---
auto getPool(int pool) -> const BalloonFormationPool & { return balloon_formation_pool_.at(pool); }
auto getSet(int pool, int set) -> const BalloonFormationUnit & { return *balloon_formation_pool_.at(pool).at(set); }
[[nodiscard]] auto getSet(int set) const -> const BalloonFormationUnit & { return balloon_formation_.at(set); }
auto getPool(int pool) -> const BalloonFormationPool& { return balloon_formation_pool_.at(pool); }
auto getSet(int pool, int set) -> const BalloonFormationUnit& { return *balloon_formation_pool_.at(pool).at(set); }
[[nodiscard]] auto getSet(int set) const -> const BalloonFormationUnit& { return balloon_formation_.at(set); }
private:
// --- Datos ---
@@ -62,6 +66,14 @@ class BalloonFormations {
std::vector<BalloonFormationPool> balloon_formation_pool_; // Conjuntos de formaciones enemigas
// --- Métodos internos de inicialización ---
void initBalloonFormations();
void initBalloonFormationPools();
void initBalloonFormations(); // Inicializa la lista principal de formaciones de globos disponibles
void initBalloonFormationPools(); // Prepara las estructuras de agrupamiento o reutilización de formaciones (pools)
auto loadFormationsFromFile(const std::string& filename, const std::map<std::string, int>& variables) -> bool; // Carga las formaciones desde un archivo, evaluando variables dinámicas
auto parseBalloonLine(const std::string& line, const std::map<std::string, int>& 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, int>& variables) -> int; // Evalúa expresiones matemáticas con variables definidas (complejas)
auto evaluateSimpleExpression(const std::string& expr, const std::map<std::string, int>& variables) -> int; // 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
};