feat(title-3d): TitleScene3D, SceneType::TITLE_3D i trigger ORNI_TITLE_3D
This commit is contained in:
@@ -24,6 +24,7 @@
|
||||
#include "game/scenes/game_scene.hpp"
|
||||
#include "game/scenes/logo_scene.hpp"
|
||||
#include "game/scenes/title_scene.hpp"
|
||||
#include "game/scenes/title_scene_3d.hpp"
|
||||
#include "global_events.hpp"
|
||||
#include "project.h"
|
||||
#include "scene.hpp"
|
||||
@@ -291,8 +292,17 @@ auto Director::buildScene(SceneType type, SDLManager& sdl, SceneContext& context
|
||||
switch (type) {
|
||||
case SceneType::LOGO:
|
||||
return std::make_unique<LogoScene>(sdl, context);
|
||||
case SceneType::TITLE:
|
||||
case SceneType::TITLE: {
|
||||
// Env var ORNI_TITLE_3D=1 redirigeix la TITLE clàssica cap a la
|
||||
// variant 3D real en proves; en qualsevol altre cas, la 2D.
|
||||
const char* env = std::getenv("ORNI_TITLE_3D");
|
||||
if (env != nullptr && env[0] == '1' && env[1] == '\0') {
|
||||
return std::make_unique<TitleScene3D>(sdl, context);
|
||||
}
|
||||
return std::make_unique<TitleScene>(sdl, context);
|
||||
}
|
||||
case SceneType::TITLE_3D:
|
||||
return std::make_unique<TitleScene3D>(sdl, context);
|
||||
case SceneType::GAME:
|
||||
return std::make_unique<GameScene>(sdl, context);
|
||||
case SceneType::EXIT:
|
||||
|
||||
@@ -9,16 +9,19 @@
|
||||
|
||||
namespace SceneManager {
|
||||
|
||||
// Context de transición entre escenes
|
||||
// Conté l'escena destinació i opciones específiques per aquella escena
|
||||
class SceneContext {
|
||||
public:
|
||||
// Context de transición entre escenes
|
||||
// Conté l'escena destinació i opciones específiques per aquella escena
|
||||
class SceneContext {
|
||||
public:
|
||||
// Tipo de escena del juego
|
||||
enum class SceneType : std::uint8_t {
|
||||
LOGO, // Pantalla de start (logo JAILGAMES)
|
||||
TITLE, // Pantalla de título con menú
|
||||
GAME, // Juego principal (Asteroids)
|
||||
EXIT // Salir del programa
|
||||
LOGO, // Pantalla de start (logo JAILGAMES)
|
||||
TITLE, // Pantalla de título (versió 2D actual). Si l'env var
|
||||
// ORNI_TITLE_3D=1 està activa, Director::buildScene
|
||||
// redirigeix aquest valor a TitleScene3D.
|
||||
TITLE_3D, // Pantalla de títol 3D real (variant en proves)
|
||||
GAME, // Juego principal (Asteroids)
|
||||
EXIT // Salir del programa
|
||||
};
|
||||
|
||||
// Opciones específiques para cada escena
|
||||
@@ -70,14 +73,14 @@ class SceneContext {
|
||||
return match_config_;
|
||||
}
|
||||
|
||||
private:
|
||||
SceneType next_scene_{SceneType::LOGO}; // SceneType a la qual transicionar
|
||||
Option option_{Option::NONE}; // Opción específica per l'escena
|
||||
GameConfig::MatchConfig match_config_; // Configuración de match (jugadors active, mode)
|
||||
};
|
||||
private:
|
||||
SceneType next_scene_{SceneType::LOGO}; // SceneType a la qual transicionar
|
||||
Option option_{Option::NONE}; // Opción específica per l'escena
|
||||
GameConfig::MatchConfig match_config_; // Configuración de match (jugadors active, mode)
|
||||
};
|
||||
|
||||
// Variable global inline per gestionar l'escena actual (backward compatibility)
|
||||
// Sincronitzada con context.nextScene() por el Director
|
||||
inline SceneContext::SceneType actual = SceneContext::SceneType::LOGO;
|
||||
// Variable global inline per gestionar l'escena actual (backward compatibility)
|
||||
// Sincronitzada con context.nextScene() por el Director
|
||||
inline SceneContext::SceneType actual = SceneContext::SceneType::LOGO;
|
||||
|
||||
} // namespace SceneManager
|
||||
|
||||
Reference in New Issue
Block a user