redefinir tecles

This commit is contained in:
2026-04-05 00:41:04 +02:00
parent a328681365
commit f8b60cb641
11 changed files with 167 additions and 24 deletions

View File

@@ -110,6 +110,25 @@ namespace Options {
window.fullscreen = node["fullscreen"].get_value<bool>();
}
// Helper: carrega una SDL_Scancode des d'un string (nom SDL de la tecla).
static void loadScancodeField(const fkyaml::node& node, const std::string& key, SDL_Scancode& target) {
if (!node.contains(key)) return;
auto name = node[key].get_value<std::string>();
SDL_Scancode sc = SDL_GetScancodeFromName(name.c_str());
if (sc != SDL_SCANCODE_UNKNOWN) target = sc;
}
static void loadControlsFromYaml(const fkyaml::node& yaml) {
if (yaml.contains("controls")) {
const auto& node = yaml["controls"];
loadScancodeField(node, "up", keys_game.up);
loadScancodeField(node, "down", keys_game.down);
loadScancodeField(node, "left", keys_game.left);
loadScancodeField(node, "right", keys_game.right);
loadScancodeField(node, "menu_toggle", keys_gui.menu_toggle);
}
}
static void loadGameConfigFromYaml(const fkyaml::node& yaml) {
if (!yaml.contains("game")) return;
const auto& node = yaml["game"];
@@ -158,6 +177,7 @@ namespace Options {
loadWindowConfigFromYaml(yaml);
loadAudioConfigFromYaml(yaml);
loadGameConfigFromYaml(yaml);
loadControlsFromYaml(yaml);
std::cout << "Config file loaded successfully\n\n";
return true;
@@ -247,6 +267,16 @@ namespace Options {
file << " habitacio_inicial: " << game.habitacio_inicial << "\n";
file << " piramide_inicial: " << game.piramide_inicial << "\n";
file << " vides: " << game.vides << "\n";
file << "\n";
// CONTROLS
file << "# CONTROLS (noms SDL: \"Up\", \"Down\", \"W\", \"Space\", \"F12\", etc.)\n";
file << "controls:\n";
file << " up: \"" << SDL_GetScancodeName(keys_game.up) << "\"\n";
file << " down: \"" << SDL_GetScancodeName(keys_game.down) << "\"\n";
file << " left: \"" << SDL_GetScancodeName(keys_game.left) << "\"\n";
file << " right: \"" << SDL_GetScancodeName(keys_game.right) << "\"\n";
file << " menu_toggle: \"" << SDL_GetScancodeName(keys_gui.menu_toggle) << "\"\n";
file.close();