feat(entities): migrar la configuració dels 3 enemics a data/entities/<type>/*.yaml
This commit is contained in:
@@ -13,41 +13,10 @@ namespace Defaults::Enemies {
|
||||
constexpr float ANGULAR_DAMPING = 0.0F;
|
||||
} // namespace Body
|
||||
|
||||
// Pentagon (esquivador - zigzag evasion)
|
||||
namespace Pentagon {
|
||||
constexpr float SPEED = 35.0F; // px/s (slightly slower)
|
||||
constexpr float MASS = 5.0F; // Masa estándar
|
||||
constexpr float ANGLE_CHANGE_PROB = 0.20F; // 20% per wall hit (frequent zigzag)
|
||||
constexpr float ANGLE_CHANGE_MAX = 1.0F; // Max random angle change (rad)
|
||||
constexpr float ZIGZAG_PROB_PER_SECOND = 0.8F; // Probabilidad de zigzag por segundo
|
||||
constexpr float ROTATION_DELTA_MIN = 0.75F; // Min visual rotation (rad/s) [+50%]
|
||||
constexpr float ROTATION_DELTA_MAX = 3.75F; // Max visual rotation (rad/s) [+50%]
|
||||
constexpr const char* SHAPE_FILE = "enemy_pentagon.shp";
|
||||
} // namespace Pentagon
|
||||
|
||||
// Square (perseguidor - tracks player)
|
||||
namespace Square {
|
||||
constexpr float SPEED = 40.0F; // px/s (medium speed)
|
||||
constexpr float MASS = 8.0F; // Más pesado, "tanque"
|
||||
constexpr float TRACKING_STRENGTH = 0.5F; // Interpolation toward player (0.0-1.0)
|
||||
constexpr float TRACKING_INTERVAL = 1.0F; // Seconds between angle updates
|
||||
constexpr float ROTATION_DELTA_MIN = 0.3F; // Slow rotation [+50%]
|
||||
constexpr float ROTATION_DELTA_MAX = 1.5F; // [+50%]
|
||||
constexpr const char* SHAPE_FILE = "enemy_square.shp";
|
||||
} // namespace Square
|
||||
|
||||
// Molinillo (agressiu - fast straight lines, proximity spin-up)
|
||||
namespace Pinwheel {
|
||||
constexpr float SPEED = 50.0F; // px/s (fastest)
|
||||
constexpr float MASS = 4.0F; // Más liviano, ágil
|
||||
constexpr float ANGLE_CHANGE_PROB = 0.05F; // 5% per wall hit (rare direction change)
|
||||
constexpr float ANGLE_CHANGE_MAX = 0.3F; // Small angle adjustments
|
||||
constexpr float ROTATION_DELTA_MIN = 3.0F; // Base rotation (rad/s) [+50%]
|
||||
constexpr float ROTATION_DELTA_MAX = 6.0F; // [+50%]
|
||||
constexpr float ROTATION_DELTA_PROXIMITY_MULTIPLIER = 3.0F; // Spin-up multiplier when near ship
|
||||
constexpr float PROXIMITY_DISTANCE = 100.0F; // Distance threshold (px)
|
||||
constexpr const char* SHAPE_FILE = "enemy_pinwheel.shp";
|
||||
} // namespace Pinwheel
|
||||
// NOTA: els paràmetres per tipus (Pentagon/Square/Pinwheel) i el Scoring
|
||||
// viuen ara a data/entities/{pentagon,square,pinwheel}/*.yaml i s'accedeixen
|
||||
// via EnemyRegistry::get(EnemyType). Aquí només queden els paràmetres
|
||||
// compartits entre tots els tipus (animació, wounded, spawn).
|
||||
|
||||
// Animation parameters (shared)
|
||||
namespace Animation {
|
||||
@@ -92,11 +61,4 @@ namespace Defaults::Enemies {
|
||||
constexpr float INVULNERABILITY_SCALE_END = 1.0F; // Full size
|
||||
} // namespace Spawn
|
||||
|
||||
// Scoring system (puntuación per type de enemy)
|
||||
namespace Scoring {
|
||||
constexpr int PENTAGON_SCORE = 100; // Pentágono (esquivador, 35 px/s)
|
||||
constexpr int SQUARE_SCORE = 150; // Square (perseguidor, 40 px/s)
|
||||
constexpr int PINWHEEL_SCORE = 200; // Molinillo (agressiu, 50 px/s)
|
||||
} // namespace Scoring
|
||||
|
||||
} // namespace Defaults::Enemies
|
||||
|
||||
@@ -9,7 +9,7 @@ namespace Defaults::Entities {
|
||||
constexpr int MAX_BULLETS = 50;
|
||||
|
||||
// SHIP_RADIUS migrat a data/entities/player/player.yaml (physics.collision_radius).
|
||||
constexpr float ENEMY_RADIUS = 20.0F;
|
||||
// ENEMY_RADIUS migrat a data/entities/<type>/<type>.yaml (physics.collision_radius).
|
||||
constexpr float BULLET_RADIUS = 3.0F;
|
||||
|
||||
} // namespace Defaults::Entities
|
||||
|
||||
@@ -14,11 +14,10 @@ namespace Defaults::Palette {
|
||||
// brillantor perceptual sota el bloom (sense alterar la identitat de color).
|
||||
// El canal dominant es manté a 255 a cada color per maximitzar la saturació
|
||||
// visible quan el halo s'expandeix.
|
||||
constexpr SDL_Color SHIP = {.r = 255, .g = 255, .b = 255, .a = 255}; // Blanco neutro
|
||||
constexpr SDL_Color BULLET = {.r = 155, .g = 255, .b = 175, .a = 255}; // Verde laser
|
||||
constexpr SDL_Color PENTAGON = {.r = 0, .g = 255, .b = 255, .a = 255}; // Cyan pur "esquivador"
|
||||
constexpr SDL_Color SQUARE = {.r = 255, .g = 0, .b = 0, .a = 255}; // Roig pur "tank"
|
||||
constexpr SDL_Color PINWHEEL = {.r = 255, .g = 0, .b = 255, .a = 255}; // Magenta pur "agressiu"
|
||||
constexpr SDL_Color WOUNDED = {.r = 255, .g = 220, .b = 60, .a = 255}; // Dorado: enemigo herido
|
||||
// SHIP s'ha migrat a data/entities/player/player.yaml (colors.normal).
|
||||
// PENTAGON, SQUARE, PINWHEEL i WOUNDED han migrat a cada enemy YAML
|
||||
// (colors.normal i colors.wounded).
|
||||
// BULLET es queda compartit fins a la migració del bullet a YAML.
|
||||
|
||||
} // namespace Defaults::Palette
|
||||
|
||||
Reference in New Issue
Block a user