afegida estructura per al modo quiosco
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,3 +1,4 @@
|
|||||||
|
.cache/
|
||||||
.vscode/
|
.vscode/
|
||||||
*data/config/config.yaml
|
*data/config/config.yaml
|
||||||
*stats.txt
|
*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
|
constexpr int GAMEPAD_BUTTON_JUMP = SDL_GAMEPAD_BUTTON_WEST; // Botón salto por defecto
|
||||||
} // namespace Controls
|
} // 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
|
} // 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
|
// Crea e inicializa las opciones del programa
|
||||||
void init() {
|
void init() {
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
@@ -516,6 +547,7 @@ auto loadFromFile() -> bool {
|
|||||||
loadVideoConfigFromYaml(yaml);
|
loadVideoConfigFromYaml(yaml);
|
||||||
loadKeyboardControlsFromYaml(yaml);
|
loadKeyboardControlsFromYaml(yaml);
|
||||||
loadGamepadControlsFromYaml(yaml);
|
loadGamepadControlsFromYaml(yaml);
|
||||||
|
loadKioskConfigFromYaml(yaml);
|
||||||
|
|
||||||
if (console) {
|
if (console) {
|
||||||
std::cout << "Config file loaded successfully\n\n";
|
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_right: " << gamepadButtonToString(gamepad_controls.button_right) << "\n";
|
||||||
file << " button_jump: " << gamepadButtonToString(gamepad_controls.button_jump) << "\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();
|
file.close();
|
||||||
|
|
||||||
if (console) {
|
if (console) {
|
||||||
|
|||||||
@@ -53,6 +53,13 @@ struct Stats {
|
|||||||
std::string worst_nightmare{Defaults::Stats::WORST_NIGHTMARE}; // Habitación con más muertes acumuladas
|
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
|
// Estructura con opciones de la ventana
|
||||||
struct Window {
|
struct Window {
|
||||||
std::string caption{Texts::WINDOW_CAPTION}; // Texto que aparece en la barra de título de la ventana
|
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 Audio audio{}; // Opciones relativas al audio
|
||||||
inline KeyboardControls keyboard_controls{}; // Teclas usadas para jugar
|
inline KeyboardControls keyboard_controls{}; // Teclas usadas para jugar
|
||||||
inline GamepadControls gamepad_controls{}; // Botones del gamepad usados 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)
|
// Ruta completa del fichero de configuración (establecida mediante setConfigFile)
|
||||||
inline std::string config_file_path{};
|
inline std::string config_file_path{};
|
||||||
|
|||||||
Reference in New Issue
Block a user