refactor(scenes): flux centralitzat amb SceneId+ExitRequest; TitleScene attract → LOGO amb fade-to-black

This commit is contained in:
JailDesigner committed 2026-05-06 18:33:31 +02:00
1 parent 25ce524470
commit b6d6ee471c
17 files changed
+368 -121

No files matched your search

+20
View File
@@ -6,7 +6,11 @@
#include <memory>
#include <string>
#include "game/scenes/scene_flow.hpp"
class Scene;
class Surface;
class Text;
class Director {
public:
@@ -20,9 +24,25 @@ class Director {
std::unique_ptr<Scene> current_scene_;
std::uint64_t last_ticks_ms_{0};
// Recursos compartits per la fabricació d'escenes. S'instancien una
// vegada al ctor (parsejant fnt's, retenint shared_ptrs del
// Resource::Cache) i `buildScene` els passa pel valor a cada nova
// escena. No són `static`/Meyers perquè depenen de l'inici d'SDL i
// de Resource::Cache.
std::shared_ptr<Text> placeholder_text_;
std::shared_ptr<Text> menu_title_text_;
std::shared_ptr<Surface> title_bg_surface_;
std::shared_ptr<Surface> mini_logo_surface_;
void createSystemFolder();
void processEvents();
static void processGamepadEvents();
static void processMenuInput();
void switchSceneIfRequested();
// Fabrica una escena nova a partir d'un identificador i els seus
// paràmetres. És l'únic punt del codi que coneix com construir cada
// tipus concret d'escena, així les escenes només declaren `ExitRequest`
// i no s'enllacen entre si.
[[nodiscard]] auto buildScene(SceneId id, const SceneParams& params) -> std::unique_ptr<Scene>;
};