feat(debug): selector d'escena inicial via debug.yaml
Director encadena LOGO → TITLE → INTRO → GAME amb factories injectades al ctor de cada placeholder (sense que cap escena conegui el tipus de la següent). L'escena d'arrencada surt de `debug.yaml` en debug build i és sempre LOGO en release. Comportament: - Release: `debug.yaml` s'ignora; arranca sempre a LOGO. - Debug: es llig `debug.yaml`. Si no existeix, es crea automàticament amb `start_scene: GAME` per no arrossegar 15 s de placeholders al dia a dia de gameplay. Valor invàlid o YAML corrupte → warning + GAME, però el fitxer no es reescriu (respectem l'edició manual). `debug.yaml` viu a `$XDG_CONFIG_HOME/jailgames/aee_2026/`, al costat de `config.yaml`, i queda fora del repo (ajust per màquina de dev).
This commit is contained in:
1 parent
d31483124e
commit
87a9f098b5
4 files changed
+180
-1
No files matched your search
@@ -0,0 +1,36 @@
|
||||
#pragma once
|
||||
|
||||
#include <cstdint>
|
||||
#include <string>
|
||||
|
||||
// Configuració personal de desenvolupament, carregada de `debug.yaml` dins la
|
||||
// carpeta de sistema (`$XDG_CONFIG_HOME/jailgames/aee_2026/debug.yaml`). No es
|
||||
// versiona: cada dev el crea a la seua màquina. Si no existeix, s'aplica el
|
||||
// valor per defecte (GAME) sense warning de nivell error.
|
||||
namespace DebugConfig {
|
||||
|
||||
enum class StartScene : std::uint8_t { LOGO,
|
||||
TITLE,
|
||||
INTRO,
|
||||
GAME };
|
||||
|
||||
// Parseja un contingut YAML en cru. Si no conté `start_scene`, el valor és
|
||||
// desconegut o el YAML és invàlid, retorna GAME. Pura: no fa I/O.
|
||||
[[nodiscard]] auto parseStartScene(const std::string& yaml_content) -> StartScene;
|
||||
|
||||
// Llig el fitxer i delega a parseStartScene. Si el fitxer no existeix
|
||||
// retorna GAME sense warning (és el cas per defecte en una màquina neta);
|
||||
// si existeix però el valor és invàlid, imprimeix un warning i retorna
|
||||
// GAME.
|
||||
[[nodiscard]] auto resolveStartScene(const std::string& file_path) -> StartScene;
|
||||
|
||||
// Nom canònic de l'enum (útil per a logs): "LOGO" / "TITLE" / "INTRO" / "GAME".
|
||||
[[nodiscard]] auto toString(StartScene scene) -> const char*;
|
||||
|
||||
// Si el fitxer no existeix, el crea amb `start_scene: GAME` (el valor
|
||||
// per defecte pensat per al dia a dia de dev). Si ja existeix, no el
|
||||
// toca — preservem qualsevol edició manual de l'usuari. Usat només al
|
||||
// path de debug del Director (el binari release ignora `debug.yaml`).
|
||||
void createDefaultIfMissing(const std::string& file_path);
|
||||
|
||||
} // namespace DebugConfig
|
||||
Reference in new issue
Block a user