settings observers lifecycle

This commit is contained in:
MihailRis
2024-04-22 19:10:36 +03:00
parent 201209887f
commit 5b82b18c6f
6 changed files with 75 additions and 43 deletions
+6 -12
View File
@@ -86,8 +86,6 @@ void MenuScreen::draw(float delta) {
batch->flush();
}
static bool backlight;
LevelScreen::LevelScreen(Engine* engine, Level* level) : Screen(engine) {
auto& settings = engine->getSettings();
auto assets = engine->getAssets();
@@ -100,8 +98,12 @@ LevelScreen::LevelScreen(Engine* engine, Level* level) : Screen(engine) {
worldRenderer = std::make_unique<WorldRenderer>(engine, frontend.get(), controller->getPlayer());
hud = std::make_unique<Hud>(engine, frontend.get(), controller->getPlayer());
backlight = settings.graphics.backlight.get();
keepAlive(settings.graphics.backlight.observe([=](bool flag) {
controller->getLevel()->chunks->saveAndClear();
}));
keepAlive(settings.camera.fov.observe([=](double value) {
controller->getPlayer()->camera->setFov(glm::radians(value));
}));
animator = std::make_unique<TextureAnimator>();
animator->addAnimations(assets->getAnimations());
@@ -163,14 +165,6 @@ void LevelScreen::update(float delta) {
camera->up
);
// TODO: subscribe for setting change
EngineSettings& settings = engine->getSettings();
controller->getPlayer()->camera->setFov(glm::radians(settings.camera.fov.get()));
if (settings.graphics.backlight.get() != backlight) {
controller->getLevel()->chunks->saveAndClear();
backlight = settings.graphics.backlight.get();
}
if (!hud->isPause()) {
controller->getLevel()->getWorld()->updateTimers(delta);
animator->update(delta);