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

+4 -8
View File
@@ -1,6 +1,5 @@
#pragma once
#include <functional>
#include <memory>
#include "core/scene/scene.hpp"
@@ -8,16 +7,14 @@
class Text;
// Escena placeholder del logotip. Durada fixa (5 s) o skip amb qualsevol tecla
// no reservada. Quan expira, encadena amb la `SceneFactory` que se li injecta
// al ctor — així l'escena no coneix el tipus concret de la següent, i es pot
// exercir en tests sense arrossegar GameScene.
// no reservada. Quan expira, publica un `ExitRequest` cap a TITLE; Director
// és qui construeix la nova escena (l'escena no coneix els altres tipus i
// es pot exercir en tests sense arrossegar dependències).
class LogoScene : public Scene {
public:
using SceneFactory = std::function<std::unique_ptr<Scene>()>;
static constexpr int DURATION_MS = 5000;
LogoScene(std::shared_ptr<Text> font, SceneFactory next_factory);
explicit LogoScene(std::shared_ptr<Text> font);
~LogoScene() override;
void update(int delta_ms) override;
@@ -25,6 +22,5 @@ class LogoScene : public Scene {
private:
std::shared_ptr<Text> font_;
SceneFactory next_factory_;
int timer_ms_{DURATION_MS};
};