treballant en el starfield

This commit is contained in:
2025-12-02 21:19:43 +01:00
parent f795c86a38
commit 98c90e6075
5 changed files with 58 additions and 5 deletions

View File

@@ -17,6 +17,24 @@ EscenaTitol::EscenaTitol(SDLManager& sdl)
estat_actual_(EstatTitol::INIT),
temps_acumulat_(0.0f) {
std::cout << "Escena Titol: Inicialitzant...\n";
// Crear starfield de fons
Punt centre_pantalla{
Defaults::Game::WIDTH / 2.0f,
Defaults::Game::HEIGHT / 2.0f};
SDL_FRect area_completa{
0, 0,
static_cast<float>(Defaults::Game::WIDTH),
static_cast<float>(Defaults::Game::HEIGHT)};
starfield_ = std::make_unique<Graphics::Starfield>(
sdl_.obte_renderer(),
centre_pantalla,
area_completa,
100, // densitat: 100 estrelles
30.0f // velocitat base: 30 px/s
);
}
void EscenaTitol::executar() {
@@ -76,6 +94,11 @@ void EscenaTitol::executar() {
}
void EscenaTitol::actualitzar(float delta_time) {
// Actualitzar starfield (sempre actiu)
if (starfield_) {
starfield_->actualitzar(delta_time);
}
switch (estat_actual_) {
case EstatTitol::INIT:
temps_acumulat_ += delta_time;
@@ -90,12 +113,17 @@ void EscenaTitol::actualitzar(float delta_time) {
}
void EscenaTitol::dibuixar() {
// En l'estat INIT, no dibuixar res (pantalla negra)
// Dibuixar starfield de fons (sempre, en tots els estats)
if (starfield_) {
starfield_->dibuixar();
}
// En l'estat INIT, només mostrar starfield (sense text)
if (estat_actual_ == EstatTitol::INIT) {
return;
}
// Estat MAIN: Dibuixar text de títol i copyright
// Estat MAIN: Dibuixar text de títol i copyright (sobre el starfield)
if (estat_actual_ == EstatTitol::MAIN) {
// Text principal centrat (vertical i horitzontalment)
const std::string main_text = "PRESS BUTTON TO PLAY";

View File

@@ -6,6 +6,9 @@
#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"
@@ -23,9 +26,10 @@ class EscenaTitol {
};
SDLManager& sdl_;
Graphics::VectorText text_; // Sistema de text vectorial
EstatTitol estat_actual_; // Estat actual de la màquina
float temps_acumulat_; // Temps acumulat per l'estat INIT
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)