45 lines
2.3 KiB
C++
45 lines
2.3 KiB
C++
// playfield.hpp - Configuració del fons del playfield (graella, sub-graella, animació)
|
|
// © 2026 JailDesigner
|
|
|
|
#pragma once
|
|
|
|
namespace Defaults::Playfield {
|
|
|
|
// Estructura de la graella (cel·les omplen tota la PLAYAREA)
|
|
constexpr int COLUMNS = 16; // cell_w = PLAYAREA.w / 16
|
|
constexpr int ROWS = 8; // cell_h = PLAYAREA.h / 8
|
|
constexpr int SUBDIVISIONS = 4; // cada cel·la principal es divideix en N subcel·les
|
|
|
|
// Brillo respecte al color global (border = 1.0)
|
|
constexpr float GRID_BRIGHTNESS = 0.15F;
|
|
constexpr float SUBGRID_BRIGHTNESS = 0.05F;
|
|
|
|
// Animació de creació amb timer intern del Playfield.
|
|
// L'animació total cobreix tot l'INIT_HUD (3 s). Cada línia es pinta en
|
|
// LINE_GROWTH_DURATION_S; els spawns es distribueixen amb sweep des del
|
|
// centre perquè verticals i horitzontals propaguen cap als extrems.
|
|
constexpr float LINE_GROWTH_DURATION_S = 0.4F;
|
|
constexpr float TOTAL_ANIMATION_DURATION_S = 3.0F; // = Defaults::Game::INIT_HUD_DURATION
|
|
|
|
// Cap brillant de la línia mentre creix (extrem que avança).
|
|
constexpr float HEAD_LENGTH_PX = 8.0F; // longitud en píxels lògics del tram brillant
|
|
constexpr float HEAD_BRIGHTNESS = 0.0F; // brillo del cap (= border)
|
|
|
|
// Orbit (oscil·lació transversal de la línia quan la nau hi passa a prop).
|
|
constexpr float ORBIT_AMPLITUDE_MAX_PX = 3.0F; // desplaçament transversal màxim
|
|
constexpr float ORBIT_DECAY_PER_S = 4.0F; // decaiment de l'amplitud (px/s)
|
|
constexpr float ORBIT_FREQ_HZ = 8.0F; // freqüència del sin
|
|
constexpr float ORBIT_PROXIMITY_PX = 12.0F; // distància max de la línia per excitar-la
|
|
constexpr float ORBIT_SHIP_SPEED_THRESHOLD = 60.0F; // velocitat mínima per excitar (px/s)
|
|
|
|
// Pulse (reacció a fireworks: punt brillant que es propaga al llarg de la
|
|
// línia a partir del punt de spawn).
|
|
constexpr int MAX_PULSES_PER_LINE = 2;
|
|
constexpr float PULSE_LIFETIME_S = 1.0F; // temps total fins desaparèixer
|
|
constexpr float PULSE_SPREAD_PER_S = 300.0F; // px/s de propagació (cap a cada extrem)
|
|
constexpr unsigned char PULSE_COLOR_R = 180;
|
|
constexpr unsigned char PULSE_COLOR_G = 230;
|
|
constexpr unsigned char PULSE_COLOR_B = 255;
|
|
|
|
} // namespace Defaults::Playfield
|