/** * Copyright (c) 2025 Dominic Masters * * This software is released under the MIT License. * https://opensource.org/licenses/MIT */ #include "engine.h" #include "util/memory.h" #include "time/time.h" #include "input/input.h" #include "locale/localemanager.h" #include "display/display.h" #include "scene/scenemanager.h" #include "asset/asset.h" #include "ui/ui.h" #include "rpg/rpg.h" #include "script/scriptmanager.h" #include "debug/debug.h" engine_t ENGINE; errorret_t engineInit(const int32_t argc, const char_t **argv) { memoryZero(&ENGINE, sizeof(engine_t)); ENGINE.running = true; ENGINE.argc = argc; ENGINE.argv = argv; // Init systems. Order is important. timeInit(); inputInit(); errorChain(assetInit()); errorChain(localeManagerInit()); errorChain(scriptManagerInit()); errorChain(displayInit()); errorChain(uiInit()); errorChain(rpgInit()); errorChain(sceneManagerInit()); // Run the initial script. scriptcontext_t ctx; errorChain(scriptContextInit(&ctx)); errorChain(scriptContextExecFile(&ctx, "script/init.dsf")); scriptContextDispose(&ctx); errorOk(); } errorret_t engineUpdate(void) { timeUpdate(); inputUpdate(); errorChain(rpgUpdate()); uiUpdate(); sceneManagerUpdate(); errorChain(displayUpdate()); if(inputPressed(INPUT_ACTION_RAGEQUIT)) ENGINE.running = false; errorOk(); } void engineExit(void) { ENGINE.running = false; } errorret_t engineDispose(void) { localeManagerDispose(); sceneManagerDispose(); rpgDispose(); uiDispose(); errorChain(displayDispose()); assetDispose(); errorOk(); }