tune(stages): stage 1 a 50 enemics i puja el cap de validació a 200

This commit is contained in:
2026-05-21 18:58:33 +02:00
parent 1c1fd1273b
commit 7646daef3d
2 changed files with 50 additions and 50 deletions
+3 -3
View File
@@ -9,11 +9,11 @@ metadata:
stages: stages:
# STAGE 1: Tutorial - Only pentagons, slow speed # STAGE 1: Tutorial - Only pentagons, slow speed
- stage_id: 1 - stage_id: 1
total_enemies: 5 total_enemies: 50
spawn_config: spawn_config:
mode: "progressive" mode: "progressive"
initial_delay: 2.0 initial_delay: 0.3
spawn_interval: 3.0 spawn_interval: 0.4
enemy_distribution: enemy_distribution:
pentagon: 100 pentagon: 100
cuadrado: 0 cuadrado: 0
+47 -47
View File
@@ -10,46 +10,46 @@
namespace StageSystem { namespace StageSystem {
// Tipo de mode de spawn // Tipo de mode de spawn
enum class ModeSpawn : std::uint8_t { enum class ModeSpawn : std::uint8_t {
PROGRESSIVE, // Spawn progressiu con intervals PROGRESSIVE, // Spawn progressiu con intervals
IMMEDIATE, // Todos los enemigos de cop IMMEDIATE, // Todos los enemigos de cop
WAVE // Onades de 3-5 enemigos (futura extensió) WAVE // Onades de 3-5 enemigos (futura extensió)
}; };
// Configuración de spawn // Configuración de spawn
struct ConfigSpawn { struct ConfigSpawn {
ModeSpawn mode; ModeSpawn mode;
float delay_inicial; // Segons antes del primer spawn float delay_inicial; // Segons antes del primer spawn
float interval_spawn; // Segons entre spawns consecutius float interval_spawn; // Segons entre spawns consecutius
}; };
// Distribució de type de enemigos (percentatges) // Distribució de type de enemigos (percentatges)
struct DistribucioEnemics { struct DistribucioEnemics {
uint8_t pentagon; // 0-100 uint8_t pentagon; // 0-100
uint8_t cuadrado; // 0-100 uint8_t cuadrado; // 0-100
uint8_t molinillo; // 0-100 uint8_t molinillo; // 0-100
// Suma ha de ser 100, validat en StageLoader // Suma ha de ser 100, validat en StageLoader
}; };
// Multiplicadors de dificultat // Multiplicadors de dificultat
struct MultiplicadorsDificultat { struct MultiplicadorsDificultat {
float velocity; // 0.5-2.0 típic float velocity; // 0.5-2.0 típic
float rotation; // 0.5-2.0 típic float rotation; // 0.5-2.0 típic
float tracking_strength; // 0.0-1.5 (aplicat a Cuadrado) float tracking_strength; // 0.0-1.5 (aplicat a Cuadrado)
}; };
// Metadades del file YAML // Metadades del file YAML
struct MetadataStages { struct MetadataStages {
std::string version; std::string version;
uint8_t total_stages; uint8_t total_stages;
std::string descripcio; std::string descripcio;
}; };
// Configuración completa de un stage // Configuración completa de un stage
struct StageConfig { struct StageConfig {
uint8_t stage_id; // 1-10 uint8_t stage_id; // 1-10
uint8_t total_enemies; // 5-15 uint8_t total_enemies; // 1-200 (el cap simultani en pantalla el marca MAX_ORNIS)
ConfigSpawn config_spawn; ConfigSpawn config_spawn;
DistribucioEnemics distribucio; DistribucioEnemics distribucio;
MultiplicadorsDificultat multiplicadors; MultiplicadorsDificultat multiplicadors;
@@ -59,13 +59,13 @@ struct StageConfig {
// stage_id es uint8_t: el rango superior (<=255) está garantizado por // stage_id es uint8_t: el rango superior (<=255) está garantizado por
// el tipo; basta con confirmar que no es 0 (sentinela "sin asignar"). // el tipo; basta con confirmar que no es 0 (sentinela "sin asignar").
return stage_id >= 1 && return stage_id >= 1 &&
total_enemies > 0 && total_enemies <= 15 && total_enemies > 0 && total_enemies <= 200 &&
distribucio.pentagon + distribucio.cuadrado + distribucio.molinillo == 100; distribucio.pentagon + distribucio.cuadrado + distribucio.molinillo == 100;
} }
}; };
// Configuración completa del sistema (carregada desde YAML) // Configuración completa del sistema (carregada desde YAML)
struct StageSystemConfig { struct StageSystemConfig {
MetadataStages metadata; MetadataStages metadata;
std::vector<StageConfig> stages; // Índex [0] = stage 1 std::vector<StageConfig> stages; // Índex [0] = stage 1
@@ -76,26 +76,26 @@ struct StageSystemConfig {
} }
return &stages[stage_id - 1]; return &stages[stage_id - 1];
} }
}; };
// Constants per messages de transición // Constants per messages de transición
namespace Constants { namespace Constants {
// Pool de messages per start de level (selecció aleatòria) // Pool de messages per start de level (selecció aleatòria)
inline constexpr std::array<const char*, 12> MISSATGES_LEVEL_START = { inline constexpr std::array<const char*, 12> MISSATGES_LEVEL_START = {
"ORNI ALERT!", "ORNI ALERT!",
"INCOMING ORNIS!", "INCOMING ORNIS!",
"ROLLING THREAT!", "ROLLING THREAT!",
"ENEMY WAVE!", "ENEMY WAVE!",
"WAVE OF ORNIS DETECTED!", "WAVE OF ORNIS DETECTED!",
"NEXT SWARM APPROACHING!", "NEXT SWARM APPROACHING!",
"BRACE FOR THE NEXT WAVE!", "BRACE FOR THE NEXT WAVE!",
"ANOTHER ATTACK INCOMING!", "ANOTHER ATTACK INCOMING!",
"SENSORS DETECT HOSTILE ORNIS...", "SENSORS DETECT HOSTILE ORNIS...",
"UNIDENTIFIED ROLLING OBJECTS INBOUND!", "UNIDENTIFIED ROLLING OBJECTS INBOUND!",
"ENEMY FORCES MOBILIZING!", "ENEMY FORCES MOBILIZING!",
"PREPARE FOR IMPACT!"}; "PREPARE FOR IMPACT!"};
constexpr const char* MISSATGE_LEVEL_COMPLETED = "GOOD JOB COMMANDER!"; constexpr const char* MISSATGE_LEVEL_COMPLETED = "GOOD JOB COMMANDER!";
} // namespace Constants } // namespace Constants
} // namespace StageSystem } // namespace StageSystem