afegida estructura per al modo quiosco
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,3 +1,4 @@
|
||||
.cache/
|
||||
.vscode/
|
||||
*data/config/config.yaml
|
||||
*stats.txt
|
||||
|
||||
@@ -88,4 +88,11 @@ constexpr int GAMEPAD_BUTTON_RIGHT = SDL_GAMEPAD_BUTTON_DPAD_RIGHT; // Botón d
|
||||
constexpr int GAMEPAD_BUTTON_JUMP = SDL_GAMEPAD_BUTTON_WEST; // Botón salto por defecto
|
||||
} // namespace Controls
|
||||
|
||||
// --- KIOSK ---
|
||||
namespace Kiosk {
|
||||
constexpr bool ENABLED = false; // Modo kiosko desactivado por defecto
|
||||
constexpr const char* TEXT = ""; // Texto del modo kiosko por defecto
|
||||
constexpr bool INFINITE_LIVES = false; // Vidas infinitas en modo kiosko desactivadas por defecto
|
||||
} // namespace Kiosk
|
||||
|
||||
} // namespace Defaults
|
||||
|
||||
@@ -454,6 +454,37 @@ void loadGamepadControlsFromYaml(const fkyaml::node& yaml) {
|
||||
}
|
||||
}
|
||||
|
||||
// Carga configuración del modo kiosko desde YAML
|
||||
void loadKioskConfigFromYaml(const fkyaml::node& yaml) {
|
||||
if (yaml.contains("kiosk")) {
|
||||
const auto& k = yaml["kiosk"];
|
||||
|
||||
if (k.contains("enabled")) {
|
||||
try {
|
||||
kiosk.enabled = k["enabled"].get_value<bool>();
|
||||
} catch (...) {
|
||||
kiosk.enabled = Defaults::Kiosk::ENABLED;
|
||||
}
|
||||
}
|
||||
|
||||
if (k.contains("text")) {
|
||||
try {
|
||||
kiosk.text = k["text"].get_value<std::string>();
|
||||
} catch (...) {
|
||||
kiosk.text = Defaults::Kiosk::TEXT;
|
||||
}
|
||||
}
|
||||
|
||||
if (k.contains("infinite_lives")) {
|
||||
try {
|
||||
kiosk.infinite_lives = k["infinite_lives"].get_value<bool>();
|
||||
} catch (...) {
|
||||
kiosk.infinite_lives = Defaults::Kiosk::INFINITE_LIVES;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Crea e inicializa las opciones del programa
|
||||
void init() {
|
||||
#ifdef _DEBUG
|
||||
@@ -516,6 +547,7 @@ auto loadFromFile() -> bool {
|
||||
loadVideoConfigFromYaml(yaml);
|
||||
loadKeyboardControlsFromYaml(yaml);
|
||||
loadGamepadControlsFromYaml(yaml);
|
||||
loadKioskConfigFromYaml(yaml);
|
||||
|
||||
if (console) {
|
||||
std::cout << "Config file loaded successfully\n\n";
|
||||
@@ -598,6 +630,14 @@ auto saveToFile() -> bool {
|
||||
file << " button_right: " << gamepadButtonToString(gamepad_controls.button_right) << "\n";
|
||||
file << " button_jump: " << gamepadButtonToString(gamepad_controls.button_jump) << "\n";
|
||||
|
||||
// KIOSK
|
||||
file << "\n";
|
||||
file << "# KIOSK MODE\n";
|
||||
file << "kiosk:\n";
|
||||
file << " enabled: " << (kiosk.enabled ? "true" : "false") << "\n";
|
||||
file << " text: \"" << kiosk.text << "\"\n";
|
||||
file << " infinite_lives: " << (kiosk.infinite_lives ? "true" : "false") << "\n";
|
||||
|
||||
file.close();
|
||||
|
||||
if (console) {
|
||||
|
||||
@@ -53,6 +53,13 @@ struct Stats {
|
||||
std::string worst_nightmare{Defaults::Stats::WORST_NIGHTMARE}; // Habitación con más muertes acumuladas
|
||||
};
|
||||
|
||||
// Estructura para el modo kiosko
|
||||
struct Kiosk {
|
||||
bool enabled{Defaults::Kiosk::ENABLED}; // Indica si el modo kiosko está activo
|
||||
std::string text{Defaults::Kiosk::TEXT}; // Texto a mostrar en el modo kiosko
|
||||
bool infinite_lives{Defaults::Kiosk::INFINITE_LIVES}; // Indica si el jugador tiene vidas infinitas en modo kiosko
|
||||
};
|
||||
|
||||
// Estructura con opciones de la ventana
|
||||
struct Window {
|
||||
std::string caption{Texts::WINDOW_CAPTION}; // Texto que aparece en la barra de título de la ventana
|
||||
@@ -117,6 +124,7 @@ inline Window window{}; // Opciones relativas a la ventana
|
||||
inline Audio audio{}; // Opciones relativas al audio
|
||||
inline KeyboardControls keyboard_controls{}; // Teclas usadas para jugar
|
||||
inline GamepadControls gamepad_controls{}; // Botones del gamepad usados para jugar
|
||||
inline Kiosk kiosk{}; // Opciones del modo kiosko
|
||||
|
||||
// Ruta completa del fichero de configuración (establecida mediante setConfigFile)
|
||||
inline std::string config_file_path{};
|
||||
|
||||
Reference in New Issue
Block a user