afegit fade in al starfield de TITOL

This commit is contained in:
2025-12-04 08:24:08 +01:00
parent cdc4d07394
commit 2caaa29124
2 changed files with 67 additions and 47 deletions

View File

@@ -25,9 +25,10 @@ class EscenaTitol {
private:
// Màquina d'estats per la pantalla de títol
enum class EstatTitol {
INIT, // Pantalla negra inicial (2 segons)
MAIN, // Pantalla de títol amb text
TRANSITION // Transició amb fade-out de música i text parpellejant
STARFIELD_FADE_IN, // Fade-in del starfield (1.5s)
STARFIELD, // Pantalla con el campo de estrellas
MAIN, // Pantalla de títol amb text
TRANSITION_TO_GAME // Transició amb fade-out de música i text parpellejant
};
// Estructura per emmagatzemar informació de cada lletra del títol
@@ -51,16 +52,18 @@ class EscenaTitol {
float y_attack_dinamica_; // Posició Y calculada dinàmicament per "ATTACK!"
// Estat d'animació del logo
float temps_animacio_; // Temps acumulat per animació orbital
std::vector<Punt> posicions_originals_orni_; // Posicions originals de "ORNI"
std::vector<Punt> posicions_originals_attack_; // Posicions originals de "ATTACK!"
float temps_animacio_; // Temps acumulat per animació orbital
std::vector<Punt> posicions_originals_orni_; // Posicions originals de "ORNI"
std::vector<Punt> posicions_originals_attack_; // Posicions originals de "ATTACK!"
// Estat d'arrencada de l'animació
float temps_estat_main_; // Temps acumulat en estat MAIN
bool animacio_activa_; // Flag: true quan animació està activa
float factor_lerp_; // Factor de lerp actual (0.0 → 1.0)
float temps_estat_main_; // Temps acumulat en estat MAIN
bool animacio_activa_; // Flag: true quan animació està activa
float factor_lerp_; // Factor de lerp actual (0.0 → 1.0)
// Constants
static constexpr float BRIGHTNESS_STARFIELD = 1.2f; // Brightness del starfield (>1.0 = més brillant)
static constexpr float DURACIO_FADE_IN = 3.0f; // Duració del fade-in del starfield (1.5 segons)
static constexpr float DURACIO_INIT = 4.0f; // Duració de l'estat INIT (2 segons)
static constexpr float DURACIO_TRANSITION = 1.5f; // Duració de la transició (1.5 segons)
static constexpr float ESCALA_TITULO = 0.6f; // Escala per les lletres del títol (50%)
@@ -71,21 +74,21 @@ class EscenaTitol {
static constexpr int MUSIC_FADE = 1000; // Duracio del fade de la musica del titol al començar a jugar
// Constants d'animació del logo
static constexpr float ORBIT_AMPLITUDE_X = 2.0f*2; // Amplitud oscil·lació horitzontal (píxels)
static constexpr float ORBIT_AMPLITUDE_Y = 1.5f*2; // Amplitud oscil·lació vertical (píxels)
static constexpr float ORBIT_FREQUENCY_X = 0.8f; // Velocitat oscil·lació horitzontal (Hz)
static constexpr float ORBIT_FREQUENCY_Y = 1.2f; // Velocitat oscil·lació vertical (Hz)
static constexpr float ORBIT_PHASE_OFFSET = 1.57f; // Desfasament entre X i Y (90° per circular)
static constexpr float ORBIT_AMPLITUDE_X = 2.0f * 2; // Amplitud oscil·lació horitzontal (píxels)
static constexpr float ORBIT_AMPLITUDE_Y = 1.5f * 2; // Amplitud oscil·lació vertical (píxels)
static constexpr float ORBIT_FREQUENCY_X = 0.8f; // Velocitat oscil·lació horitzontal (Hz)
static constexpr float ORBIT_FREQUENCY_Y = 1.2f; // Velocitat oscil·lació vertical (Hz)
static constexpr float ORBIT_PHASE_OFFSET = 1.57f; // Desfasament entre X i Y (90° per circular)
// Constants d'ombra del logo
static constexpr float SHADOW_DELAY = 0.5f; // Retard temporal de l'ombra (segons)
static constexpr float SHADOW_BRIGHTNESS = 0.4f; // Multiplicador de brillantor de l'ombra (0.0-1.0)
static constexpr float SHADOW_OFFSET_X = 2.0f; // Offset espacial X fix (píxels)
static constexpr float SHADOW_OFFSET_Y = 2.0f; // Offset espacial Y fix (píxels)
static constexpr float SHADOW_DELAY = 0.5f; // Retard temporal de l'ombra (segons)
static constexpr float SHADOW_BRIGHTNESS = 0.4f; // Multiplicador de brillantor de l'ombra (0.0-1.0)
static constexpr float SHADOW_OFFSET_X = 2.0f; // Offset espacial X fix (píxels)
static constexpr float SHADOW_OFFSET_Y = 2.0f; // Offset espacial Y fix (píxels)
// Temporització de l'arrencada de l'animació
static constexpr float DELAY_INICI_ANIMACIO = 10.0f; // 10s estàtic abans d'animar
static constexpr float DURACIO_LERP = 2.0f; // 2s per arribar a amplitud completa
static constexpr float DURACIO_LERP = 2.0f; // 2s per arribar a amplitud completa
// Mètodes privats
void actualitzar(float delta_time);