/** * 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 "display/display.h" #include "scene/scenemanager.h" #include "asset/assetmanager.h" #include "ui/ui.h" #include "rpg/rpg.h" engine_t ENGINE; asset_t *outAsset; ref_t outRef; errorret_t engineInit(void) { memoryZero(&ENGINE, sizeof(engine_t)); ENGINE.running = true; // Init systems. Order is important. timeInit(); inputInit(); errorChain(assetManagerInit()); errorChain(displayInit()); errorChain(uiInit()); errorChain(rpgInit()); errorChain(sceneManagerInit()); errorOk(); } errorret_t engineUpdate(void) { timeUpdate(); inputUpdate(); assetManagerUpdate(); rpgUpdate(); uiUpdate(); sceneManagerUpdate(); errorChain(displayUpdate()); if(inputPressed(INPUT_ACTION_RAGEQUIT)) ENGINE.running = false; errorOk(); } void engineExit(void) { ENGINE.running = false; } errorret_t engineDispose(void) { sceneManagerDispose(); rpgDispose(); uiDispose(); errorChain(displayDispose()); assetManagerDispose(); errorOk(); }