diff options
| author | WBoerenkamps <wrj.boerenkamps@student.avans.nl> | 2024-11-09 12:58:26 +0100 | 
|---|---|---|
| committer | WBoerenkamps <wrj.boerenkamps@student.avans.nl> | 2024-11-09 12:58:26 +0100 | 
| commit | d3ed3f4daa335bb881dbcf55aa425c602ddbd2f4 (patch) | |
| tree | 0211b5963380fd67a97c07416bf08fb1ad060754 /src/crepe/api/LoopManager.cpp | |
| parent | 0feda3d123ff99a1b9e41837482268bebfd9140a (diff) | |
changed variables
Diffstat (limited to 'src/crepe/api/LoopManager.cpp')
| -rw-r--r-- | src/crepe/api/LoopManager.cpp | 61 | 
1 files changed, 61 insertions, 0 deletions
diff --git a/src/crepe/api/LoopManager.cpp b/src/crepe/api/LoopManager.cpp new file mode 100644 index 0000000..746e9ce --- /dev/null +++ b/src/crepe/api/LoopManager.cpp @@ -0,0 +1,61 @@ + + +#include "../system/RenderSystem.h" +#include "../system/ScriptSystem.h" + +#include "LoopManager.h" +#include "LoopTimer.h" + +namespace crepe { + +void LoopManager::process_input() { +    SDLContext::get_instance().handle_events(this->gameRunning); +} +void LoopManager::start(){ +    this->setup(); +    this->loop(); +} +void LoopManager::set_running(bool running) { this->gameRunning = running; } + +void LoopManager::fixed_update() { +} + +void LoopManager::loop() { +    LoopTimer & timer = LoopTimer::getInstance(); +    timer.start(); + +    while (gameRunning) { +        timer.update(); + +        while (timer.get_lag() >= timer.get_fixed_delta_time()) { +            process_input(); +            fixed_update(); +            timer.advance_fixed_update(); +        } + +        update(); +        render(); + +        timer.enforce_frame_rate(); +    } +} + + +void LoopManager::setup() { +    this->gameRunning = true; +    LoopTimer::getInstance().start(); +    LoopTimer::getInstance().set_fps(60); +} + +void LoopManager::render() { +    if (gameRunning) { +        RenderSystem::get_instance().update(); +    } +} + +void LoopManager::update() { +    LoopTimer & timer = LoopTimer::getInstance(); +    ScriptSystem::get_instance().update(); +} + +} // namespace crepe  |