From af8da12e0eb64ee62bdfb5bb26c790fbb8b4d480 Mon Sep 17 00:00:00 2001 From: McafeeHater Date: Mon, 4 May 2026 16:15:49 +0200 Subject: [PATCH] Refactor main loop and improve error handling --- main.cpp | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/main.cpp b/main.cpp index a775b52..e492e0e 100644 --- a/main.cpp +++ b/main.cpp @@ -126,7 +126,7 @@ int main() // todo -iwad param, build iwad dirs, choose iwad file - fmt::print("Initializing wad files\n"); + fmt::print("Initializing WAD files\n"); const auto [iwad_path, iwad] = core::find_iwad(); @@ -140,29 +140,33 @@ int main() auto menu_sys = menu::system(iwad, game_sys); auto gfx_sys = grfx::system({}, data); +bool running = true; - core::event_queue events; - while (true) +while (running) +{ + sdl_get_events(events); + + while (const auto e = events.pop()) + { + if (std::holds_alternative(*e)) { - sdl_get_events(events); + running = false; + break; + } - process_events(events, menu_sys, game_sys); + if (!menu_sys.handle_event(*e)) + game_sys.handle_event(*e); + } - game_sys.tick(); + if (!running) break; - game_sys.draw(gfx_sys, data); + game_sys.tick(); - menu_sys.draw(gfx_sys, data); - gfx_sys.update(); - } - } - catch (std::exception& e) - { - fmt::print("Shut down due to error: {}\n", e.what()); - return -1; - } - catch (...) - { + game_sys.draw(gfx_sys, data); + menu_sys.draw(gfx_sys, data); + + gfx_sys.update(); +} fmt::print("Shut down due to unknown error\n"); return -1; }