#ifndef PKE_GAME_SETTINGS_HPP #define PKE_GAME_SETTINGS_HPP #include "level-types.hpp" #include "pk.h" #include #include struct GameSettings { const char *executablePath; bool isGameRunning = true; bool isGamePaused = false; bool isShowingEditor = true; bool isRenderingDebug = false; bool isSimulationPaused = false; std::chrono::steady_clock steadyClock; int64_t targetFPS = 144; int64_t minFPS = 20; double deltaPerFrame = 1.0 / double(targetFPS); double minimumDeltaPerFrame = 1.0 / double(minFPS); struct editor { bool isUsingDebugCamera = false; bool isShowingConsole = true; bool isShowingEntityList = true; bool isShowingSceneEditor = true; bool isShowingUBO = true; } editorSettings; struct graphics { bool isFramerateUnlocked = false; bool isWaitingForVsync = true; } graphicsSettings; struct memory { struct pk_membucket *bkt = nullptr; } mem; struct engineArgs { const char *pluginPath = nullptr; const char *projectPath = nullptr; const char *sceneName = nullptr; } args; struct runtime { // current level LevelHandle activeLevel = LevelHandle_MAX; // level to start loading LevelHandle nextLevel = LevelHandle_MAX; // level to unload LevelHandle previousLevel = LevelHandle_MAX; const char *sceneName = nullptr; bool shouldLoadScene = false; bool shouldSaveScene = false; } rt; }; extern GameSettings pkeSettings; #endif /* PKE_GAME_SETTINGS_HPP */