42 lines
1.3 KiB
C++
42 lines
1.3 KiB
C++
// escena_titol.hpp - Pantalla de títol del joc
|
|
// Mostra missatge "PRESS BUTTON TO PLAY" i copyright
|
|
// © 2025 Port a C++20
|
|
|
|
#pragma once
|
|
|
|
#include <SDL3/SDL.h>
|
|
|
|
#include <memory>
|
|
|
|
#include "../../core/graphics/starfield.hpp"
|
|
#include "../../core/graphics/vector_text.hpp"
|
|
#include "../../core/rendering/sdl_manager.hpp"
|
|
#include "core/defaults.hpp"
|
|
|
|
class EscenaTitol {
|
|
public:
|
|
explicit EscenaTitol(SDLManager& sdl);
|
|
void executar(); // Bucle principal de l'escena
|
|
|
|
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
|
|
};
|
|
|
|
SDLManager& sdl_;
|
|
Graphics::VectorText text_; // Sistema de text vectorial
|
|
std::unique_ptr<Graphics::Starfield> starfield_; // Camp d'estrelles de fons
|
|
EstatTitol estat_actual_; // Estat actual de la màquina
|
|
float temps_acumulat_; // Temps acumulat per l'estat INIT
|
|
|
|
// Constants
|
|
static constexpr float DURACIO_INIT = 2.0f; // Duració de l'estat INIT (2 segons)
|
|
|
|
// Mètodes privats
|
|
void actualitzar(float delta_time);
|
|
void dibuixar();
|
|
void processar_events(const SDL_Event& event);
|
|
};
|