]> git.localhorst.tv Git - blank.git/blobdiff - src/app/PreloadState.cpp
split chunk stuff
[blank.git] / src / app / PreloadState.cpp
index 32d0b3a7fb86b8f630753fdfa854f29250bd6af5..7d5f3729735c741657870a879abc92bfff0f986f 100644 (file)
@@ -2,17 +2,16 @@
 
 #include "Environment.hpp"
 #include "../world/ChunkLoader.hpp"
-
-#include <iostream>
+#include "../world/ChunkRenderer.hpp"
 
 
 namespace blank {
 
-PreloadState::PreloadState(Environment &env, ChunkLoader &loader)
+PreloadState::PreloadState(Environment &env, ChunkLoader &loader, ChunkRenderer &render)
 : env(env)
 , loader(loader)
-, font(env.assets.LoadFont("DejaVuSans", 24))
-, progress(font)
+, render(render)
+, progress(env.assets.large_ui_font)
 , total(loader.ToLoad())
 , per_update(64) {
        progress.Position(glm::vec3(0.0f), Gravity::CENTER);
@@ -20,16 +19,17 @@ PreloadState::PreloadState(Environment &env, ChunkLoader &loader)
 }
 
 
-void PreloadState::Handle(const SDL_Event &) {
+void PreloadState::Handle(const SDL_Event &e) {
+       if (e.type == SDL_QUIT) {
+               env.state.PopAll();
+       }
 }
 
 void PreloadState::Update(int dt) {
        loader.LoadN(per_update);
-       if (loader.ToLoad() == 0) {
-               for (auto &chunk : loader.Loaded()) {
-                       chunk.CheckUpdate();
-               }
+       if (loader.ToLoad() <= 0) {
                env.state.Pop();
+               render.Update(render.MissingChunks());
        } else {
                progress.Update(total - loader.ToLoad(), total);
        }