VoxelEngine/src/Mainloop.cpp
2024-12-10 18:41:39 +03:00

37 lines
969 B
C++

#include "Mainloop.hpp"
#include "debug/Logger.hpp"
#include "engine.hpp"
#include "frontend/screens/MenuScreen.hpp"
#include "frontend/screens/LevelScreen.hpp"
#include "window/Window.hpp"
#include "world/Level.hpp"
static debug::Logger logger("mainloop");
Mainloop::Mainloop(Engine& engine) : engine(engine) {
}
void Mainloop::run() {
auto& time = engine.getTime();
engine.setLevelConsumer([this](auto level) {
engine.setScreen(std::make_shared<LevelScreen>(&engine, std::move(level)));
});
logger.info() << "starting menu screen";
engine.setScreen(std::make_shared<MenuScreen>(&engine));
logger.info() << "main loop started";
while (!Window::isShouldClose()){
time.update(Window::time());
engine.updateFrontend();
if (!Window::isIconified()) {
engine.renderFrame();
}
engine.postUpdate();
engine.nextFrame();
}
logger.info() << "main loop stopped";
}