#pragma once #include #include // 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 }; // Quins jugadors arrenquen a la GameScene. BOTH és el cas de joc real; // P1 i P2 són només punts d'entrada de dev per provar cada personatge // aïllat. Llegit de `debug.yaml` (clau `starting_players`). enum class StartingPlayers : std::uint8_t { P1, P2, BOTH }; // 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; // Paral·lel a parseStartScene / resolveStartScene per al camp // `starting_players`. El valor per defecte (tant si el fitxer no // existeix com si li manca la clau) és BOTH, que és el cas de joc real. [[nodiscard]] auto parseStartingPlayers(const std::string& yaml_content) -> StartingPlayers; [[nodiscard]] auto resolveStartingPlayers(const std::string& file_path) -> StartingPlayers; // Nom canònic de l'enum (útil per a logs): "LOGO" / "TITLE" / "INTRO" / "GAME". [[nodiscard]] auto toString(StartScene scene) -> const char*; [[nodiscard]] auto toString(StartingPlayers players) -> 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