corregit el escalat de finestra i mode fullscreen

This commit is contained in:
2025-12-02 17:10:53 +01:00
parent ec911979fb
commit 0139da4764
4 changed files with 135 additions and 58 deletions

View File

@@ -22,7 +22,7 @@ void init() {
window.width = Defaults::Window::WIDTH;
window.height = Defaults::Window::HEIGHT;
window.fullscreen = false;
window.size_increment = Defaults::Window::SIZE_INCREMENT;
window.zoom_factor = Defaults::Window::BASE_ZOOM;
// Physics
physics.rotation_speed = Defaults::Physics::ROTATION_SPEED;
@@ -90,14 +90,18 @@ static void loadWindowConfigFromYaml(const fkyaml::node& yaml) {
}
}
if (win.contains("size_increment")) {
if (win.contains("zoom_factor")) {
try {
auto val = win["size_increment"].get_value<int>();
window.size_increment =
(val > 0) ? val : Defaults::Window::SIZE_INCREMENT;
auto val = win["zoom_factor"].get_value<float>();
window.zoom_factor = (val >= Defaults::Window::MIN_ZOOM && val <= 10.0f)
? val : Defaults::Window::BASE_ZOOM;
} catch (...) {
window.size_increment = Defaults::Window::SIZE_INCREMENT;
window.zoom_factor = Defaults::Window::BASE_ZOOM;
}
} else {
// Legacy config: infer zoom from width
window.zoom_factor = static_cast<float>(window.width) / Defaults::Window::WIDTH;
window.zoom_factor = std::max(Defaults::Window::MIN_ZOOM, window.zoom_factor);
}
}
}
@@ -360,10 +364,10 @@ auto saveToFile() -> bool {
file << "# FINESTRA\n";
file << "window:\n";
file << " width: " << window.width << "\n";
file << " height: " << window.height << "\n";
file << " width: " << window.width << " # Calculated from zoom_factor\n";
file << " height: " << window.height << " # Calculated from zoom_factor\n";
file << " fullscreen: " << (window.fullscreen ? "true" : "false") << "\n";
file << " size_increment: " << window.size_increment << "\n\n";
file << " zoom_factor: " << window.zoom_factor << " # 0.5x-max (0.1 increments)\n\n";
file << "# FÍSICA (tots els valors en px/s, rad/s, etc.)\n";
file << "physics:\n";