linter
This commit is contained in:
@@ -257,12 +257,201 @@ auto stringToGamepadButton(const std::string& str, int default_value) -> int {
|
||||
}
|
||||
|
||||
auto isValidPalette(const std::string& palette) -> bool {
|
||||
for (const auto& valid : VALID_PALETTES) {
|
||||
if (valid == palette) {
|
||||
return true;
|
||||
return std::ranges::any_of(VALID_PALETTES, [&palette](const auto& valid) { return valid == palette; });
|
||||
}
|
||||
|
||||
// --- Funciones helper para loadFromFile() ---
|
||||
|
||||
// Carga configuración de ventana desde YAML
|
||||
void loadWindowConfigFromYaml(const fkyaml::node& yaml) {
|
||||
if (yaml.contains("window")) {
|
||||
const auto& win = yaml["window"];
|
||||
if (win.contains("zoom")) {
|
||||
try {
|
||||
int val = win["zoom"].get_value<int>();
|
||||
window.zoom = (val > 0) ? val : GameDefaults::WINDOW_ZOOM;
|
||||
} catch (...) {
|
||||
window.zoom = GameDefaults::WINDOW_ZOOM;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Carga configuración de borde desde YAML
|
||||
void loadBorderConfigFromYaml(const fkyaml::node& border) {
|
||||
if (border.contains("enabled")) {
|
||||
try {
|
||||
video.border.enabled = border["enabled"].get_value<bool>();
|
||||
} catch (...) {
|
||||
video.border.enabled = GameDefaults::BORDER_ENABLED;
|
||||
}
|
||||
}
|
||||
|
||||
if (border.contains("width")) {
|
||||
try {
|
||||
auto val = border["width"].get_value<float>();
|
||||
video.border.width = (val > 0) ? val : GameDefaults::BORDER_WIDTH;
|
||||
} catch (...) {
|
||||
video.border.width = GameDefaults::BORDER_WIDTH;
|
||||
}
|
||||
}
|
||||
|
||||
if (border.contains("height")) {
|
||||
try {
|
||||
auto val = border["height"].get_value<float>();
|
||||
video.border.height = (val > 0) ? val : GameDefaults::BORDER_HEIGHT;
|
||||
} catch (...) {
|
||||
video.border.height = GameDefaults::BORDER_HEIGHT;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Carga los campos básicos de configuración de video
|
||||
void loadBasicVideoFieldsFromYaml(const fkyaml::node& vid) {
|
||||
// fullscreen (antes era "mode")
|
||||
if (vid.contains("fullscreen")) {
|
||||
try {
|
||||
video.fullscreen = vid["fullscreen"].get_value<bool>();
|
||||
} catch (...) {
|
||||
video.fullscreen = GameDefaults::VIDEO_FULLSCREEN;
|
||||
}
|
||||
}
|
||||
|
||||
// filter (ahora es string)
|
||||
if (vid.contains("filter")) {
|
||||
try {
|
||||
auto filter_str = vid["filter"].get_value<std::string>();
|
||||
video.filter = stringToFilter(filter_str);
|
||||
} catch (...) {
|
||||
video.filter = GameDefaults::VIDEO_FILTER;
|
||||
}
|
||||
}
|
||||
|
||||
if (vid.contains("shaders")) {
|
||||
try {
|
||||
video.shaders = vid["shaders"].get_value<bool>();
|
||||
} catch (...) {
|
||||
video.shaders = GameDefaults::VIDEO_SHADERS;
|
||||
}
|
||||
}
|
||||
|
||||
if (vid.contains("vertical_sync")) {
|
||||
try {
|
||||
video.vertical_sync = vid["vertical_sync"].get_value<bool>();
|
||||
} catch (...) {
|
||||
video.vertical_sync = GameDefaults::VIDEO_VERTICAL_SYNC;
|
||||
}
|
||||
}
|
||||
|
||||
if (vid.contains("integer_scale")) {
|
||||
try {
|
||||
video.integer_scale = vid["integer_scale"].get_value<bool>();
|
||||
} catch (...) {
|
||||
video.integer_scale = GameDefaults::VIDEO_INTEGER_SCALE;
|
||||
}
|
||||
}
|
||||
|
||||
if (vid.contains("keep_aspect")) {
|
||||
try {
|
||||
video.keep_aspect = vid["keep_aspect"].get_value<bool>();
|
||||
} catch (...) {
|
||||
video.keep_aspect = GameDefaults::VIDEO_KEEP_ASPECT;
|
||||
}
|
||||
}
|
||||
|
||||
if (vid.contains("palette")) {
|
||||
try {
|
||||
auto palette_str = vid["palette"].get_value<std::string>();
|
||||
if (isValidPalette(palette_str)) {
|
||||
video.palette = palette_str;
|
||||
} else {
|
||||
video.palette = GameDefaults::PALETTE_NAME;
|
||||
}
|
||||
} catch (...) {
|
||||
video.palette = GameDefaults::PALETTE_NAME;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Carga configuración de video desde YAML
|
||||
void loadVideoConfigFromYaml(const fkyaml::node& yaml) {
|
||||
if (yaml.contains("video")) {
|
||||
const auto& vid = yaml["video"];
|
||||
loadBasicVideoFieldsFromYaml(vid);
|
||||
|
||||
// Lee border
|
||||
if (vid.contains("border")) {
|
||||
loadBorderConfigFromYaml(vid["border"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Carga controles de teclado desde YAML
|
||||
void loadKeyboardControlsFromYaml(const fkyaml::node& yaml) {
|
||||
if (yaml.contains("keyboard_controls")) {
|
||||
const auto& ctrl = yaml["keyboard_controls"];
|
||||
|
||||
if (ctrl.contains("key_left")) {
|
||||
try {
|
||||
auto key_str = ctrl["key_left"].get_value<std::string>();
|
||||
keyboard_controls.key_left = stringToScancode(key_str, GameDefaults::CONTROL_KEY_LEFT);
|
||||
} catch (...) {
|
||||
keyboard_controls.key_left = GameDefaults::CONTROL_KEY_LEFT;
|
||||
}
|
||||
}
|
||||
|
||||
if (ctrl.contains("key_right")) {
|
||||
try {
|
||||
auto key_str = ctrl["key_right"].get_value<std::string>();
|
||||
keyboard_controls.key_right = stringToScancode(key_str, GameDefaults::CONTROL_KEY_RIGHT);
|
||||
} catch (...) {
|
||||
keyboard_controls.key_right = GameDefaults::CONTROL_KEY_RIGHT;
|
||||
}
|
||||
}
|
||||
|
||||
if (ctrl.contains("key_jump")) {
|
||||
try {
|
||||
auto key_str = ctrl["key_jump"].get_value<std::string>();
|
||||
keyboard_controls.key_jump = stringToScancode(key_str, GameDefaults::CONTROL_KEY_JUMP);
|
||||
} catch (...) {
|
||||
keyboard_controls.key_jump = GameDefaults::CONTROL_KEY_JUMP;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Carga controles de gamepad desde YAML
|
||||
void loadGamepadControlsFromYaml(const fkyaml::node& yaml) {
|
||||
if (yaml.contains("gamepad_controls")) {
|
||||
const auto& gp = yaml["gamepad_controls"];
|
||||
|
||||
if (gp.contains("button_left")) {
|
||||
try {
|
||||
auto button_str = gp["button_left"].get_value<std::string>();
|
||||
gamepad_controls.button_left = stringToGamepadButton(button_str, GameDefaults::GAMEPAD_BUTTON_LEFT);
|
||||
} catch (...) {
|
||||
gamepad_controls.button_left = GameDefaults::GAMEPAD_BUTTON_LEFT;
|
||||
}
|
||||
}
|
||||
|
||||
if (gp.contains("button_right")) {
|
||||
try {
|
||||
auto button_str = gp["button_right"].get_value<std::string>();
|
||||
gamepad_controls.button_right = stringToGamepadButton(button_str, GameDefaults::GAMEPAD_BUTTON_RIGHT);
|
||||
} catch (...) {
|
||||
gamepad_controls.button_right = GameDefaults::GAMEPAD_BUTTON_RIGHT;
|
||||
}
|
||||
}
|
||||
|
||||
if (gp.contains("button_jump")) {
|
||||
try {
|
||||
auto button_str = gp["button_jump"].get_value<std::string>();
|
||||
gamepad_controls.button_jump = stringToGamepadButton(button_str, GameDefaults::GAMEPAD_BUTTON_JUMP);
|
||||
} catch (...) {
|
||||
gamepad_controls.button_jump = GameDefaults::GAMEPAD_BUTTON_JUMP;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// Crea e inicializa las opciones del programa
|
||||
@@ -322,182 +511,11 @@ auto loadFromFile() -> bool {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Lee window
|
||||
if (yaml.contains("window")) {
|
||||
const auto& win = yaml["window"];
|
||||
if (win.contains("zoom")) {
|
||||
try {
|
||||
int val = win["zoom"].get_value<int>();
|
||||
window.zoom = (val > 0) ? val : GameDefaults::WINDOW_ZOOM;
|
||||
} catch (...) {
|
||||
window.zoom = GameDefaults::WINDOW_ZOOM;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Lee video
|
||||
if (yaml.contains("video")) {
|
||||
const auto& vid = yaml["video"];
|
||||
|
||||
// fullscreen (antes era "mode")
|
||||
if (vid.contains("fullscreen")) {
|
||||
try {
|
||||
video.fullscreen = vid["fullscreen"].get_value<bool>();
|
||||
} catch (...) {
|
||||
video.fullscreen = GameDefaults::VIDEO_FULLSCREEN;
|
||||
}
|
||||
}
|
||||
|
||||
// filter (ahora es string)
|
||||
if (vid.contains("filter")) {
|
||||
try {
|
||||
auto filter_str = vid["filter"].get_value<std::string>();
|
||||
video.filter = stringToFilter(filter_str);
|
||||
} catch (...) {
|
||||
video.filter = GameDefaults::VIDEO_FILTER;
|
||||
}
|
||||
}
|
||||
|
||||
if (vid.contains("shaders")) {
|
||||
try {
|
||||
video.shaders = vid["shaders"].get_value<bool>();
|
||||
} catch (...) {
|
||||
video.shaders = GameDefaults::VIDEO_SHADERS;
|
||||
}
|
||||
}
|
||||
|
||||
if (vid.contains("vertical_sync")) {
|
||||
try {
|
||||
video.vertical_sync = vid["vertical_sync"].get_value<bool>();
|
||||
} catch (...) {
|
||||
video.vertical_sync = GameDefaults::VIDEO_VERTICAL_SYNC;
|
||||
}
|
||||
}
|
||||
|
||||
if (vid.contains("integer_scale")) {
|
||||
try {
|
||||
video.integer_scale = vid["integer_scale"].get_value<bool>();
|
||||
} catch (...) {
|
||||
video.integer_scale = GameDefaults::VIDEO_INTEGER_SCALE;
|
||||
}
|
||||
}
|
||||
|
||||
if (vid.contains("keep_aspect")) {
|
||||
try {
|
||||
video.keep_aspect = vid["keep_aspect"].get_value<bool>();
|
||||
} catch (...) {
|
||||
video.keep_aspect = GameDefaults::VIDEO_KEEP_ASPECT;
|
||||
}
|
||||
}
|
||||
|
||||
if (vid.contains("palette")) {
|
||||
try {
|
||||
auto palette_str = vid["palette"].get_value<std::string>();
|
||||
if (isValidPalette(palette_str)) {
|
||||
video.palette = palette_str;
|
||||
} else {
|
||||
video.palette = GameDefaults::PALETTE_NAME;
|
||||
}
|
||||
} catch (...) {
|
||||
video.palette = GameDefaults::PALETTE_NAME;
|
||||
}
|
||||
}
|
||||
|
||||
// Lee border
|
||||
if (vid.contains("border")) {
|
||||
const auto& border = vid["border"];
|
||||
|
||||
if (border.contains("enabled")) {
|
||||
try {
|
||||
video.border.enabled = border["enabled"].get_value<bool>();
|
||||
} catch (...) {
|
||||
video.border.enabled = GameDefaults::BORDER_ENABLED;
|
||||
}
|
||||
}
|
||||
|
||||
if (border.contains("width")) {
|
||||
try {
|
||||
auto val = border["width"].get_value<float>();
|
||||
video.border.width = (val > 0) ? val : GameDefaults::BORDER_WIDTH;
|
||||
} catch (...) {
|
||||
video.border.width = GameDefaults::BORDER_WIDTH;
|
||||
}
|
||||
}
|
||||
|
||||
if (border.contains("height")) {
|
||||
try {
|
||||
auto val = border["height"].get_value<float>();
|
||||
video.border.height = (val > 0) ? val : GameDefaults::BORDER_HEIGHT;
|
||||
} catch (...) {
|
||||
video.border.height = GameDefaults::BORDER_HEIGHT;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Lee keyboard_controls (antes era "controls")
|
||||
if (yaml.contains("keyboard_controls")) {
|
||||
const auto& ctrl = yaml["keyboard_controls"];
|
||||
|
||||
if (ctrl.contains("key_left")) {
|
||||
try {
|
||||
auto key_str = ctrl["key_left"].get_value<std::string>();
|
||||
keyboard_controls.key_left = stringToScancode(key_str, GameDefaults::CONTROL_KEY_LEFT);
|
||||
} catch (...) {
|
||||
keyboard_controls.key_left = GameDefaults::CONTROL_KEY_LEFT;
|
||||
}
|
||||
}
|
||||
|
||||
if (ctrl.contains("key_right")) {
|
||||
try {
|
||||
auto key_str = ctrl["key_right"].get_value<std::string>();
|
||||
keyboard_controls.key_right = stringToScancode(key_str, GameDefaults::CONTROL_KEY_RIGHT);
|
||||
} catch (...) {
|
||||
keyboard_controls.key_right = GameDefaults::CONTROL_KEY_RIGHT;
|
||||
}
|
||||
}
|
||||
|
||||
if (ctrl.contains("key_jump")) {
|
||||
try {
|
||||
auto key_str = ctrl["key_jump"].get_value<std::string>();
|
||||
keyboard_controls.key_jump = stringToScancode(key_str, GameDefaults::CONTROL_KEY_JUMP);
|
||||
} catch (...) {
|
||||
keyboard_controls.key_jump = GameDefaults::CONTROL_KEY_JUMP;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Lee gamepad_controls
|
||||
if (yaml.contains("gamepad_controls")) {
|
||||
const auto& gp = yaml["gamepad_controls"];
|
||||
|
||||
if (gp.contains("button_left")) {
|
||||
try {
|
||||
auto button_str = gp["button_left"].get_value<std::string>();
|
||||
gamepad_controls.button_left = stringToGamepadButton(button_str, GameDefaults::GAMEPAD_BUTTON_LEFT);
|
||||
} catch (...) {
|
||||
gamepad_controls.button_left = GameDefaults::GAMEPAD_BUTTON_LEFT;
|
||||
}
|
||||
}
|
||||
|
||||
if (gp.contains("button_right")) {
|
||||
try {
|
||||
auto button_str = gp["button_right"].get_value<std::string>();
|
||||
gamepad_controls.button_right = stringToGamepadButton(button_str, GameDefaults::GAMEPAD_BUTTON_RIGHT);
|
||||
} catch (...) {
|
||||
gamepad_controls.button_right = GameDefaults::GAMEPAD_BUTTON_RIGHT;
|
||||
}
|
||||
}
|
||||
|
||||
if (gp.contains("button_jump")) {
|
||||
try {
|
||||
auto button_str = gp["button_jump"].get_value<std::string>();
|
||||
gamepad_controls.button_jump = stringToGamepadButton(button_str, GameDefaults::GAMEPAD_BUTTON_JUMP);
|
||||
} catch (...) {
|
||||
gamepad_controls.button_jump = GameDefaults::GAMEPAD_BUTTON_JUMP;
|
||||
}
|
||||
}
|
||||
}
|
||||
// Carga las diferentes secciones de configuración usando funciones helper
|
||||
loadWindowConfigFromYaml(yaml);
|
||||
loadVideoConfigFromYaml(yaml);
|
||||
loadKeyboardControlsFromYaml(yaml);
|
||||
loadGamepadControlsFromYaml(yaml);
|
||||
|
||||
if (console) {
|
||||
std::cout << "Config file loaded successfully\n\n";
|
||||
|
||||
Reference in New Issue
Block a user