51 lines
2.3 KiB
C++
51 lines
2.3 KiB
C++
#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 };
|
|
|
|
// 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
|