// main.cpp - Punt d'entrada amb SDL_MAIN_USE_CALLBACKS // © 2026 JailDesigner // // El Director és EL programa: posseeix la configuració, els subsistemes i // l'estat. Aquestes 4 callbacks són la fontaneria mínima que SDL3 demana // per arrencar, processar events, iterar i tancar. #define SDL_MAIN_USE_CALLBACKS 1 #include #include #include #include "core/system/director.hpp" #include "core/system/relaunch.hpp" auto SDL_AppInit(void** appstate, int argc, char* argv[]) -> SDL_AppResult { // Desem argv perquè el menu de servei pugui demanar un reinici en calent // (execv) sense haver de conèixer Director. System::Relaunch::setArgv(argc, argv); auto director = std::make_unique(argc, argv); *appstate = director.release(); return SDL_APP_CONTINUE; } auto SDL_AppEvent(void* appstate, SDL_Event* event) -> SDL_AppResult { auto* director = static_cast(appstate); return director->handleEvent(*event); } auto SDL_AppIterate(void* appstate) -> SDL_AppResult { auto* director = static_cast(appstate); return director->iterate(); } void SDL_AppQuit(void* appstate, SDL_AppResult /*result*/) { // Reabsorbim la propietat: el destructor del Director allibera tot. std::unique_ptr director(static_cast(appstate)); director.reset(); // Si el menu va demanar reinici, fem execv ara que tot esta net. En cas // d'exit no torna; si falla, l'aplicacio surt amb codi d'error. System::Relaunch::execIfRequested(); }