]> git.localhorst.tv Git - blank.git/blob - src/app/PreloadState.cpp
32d0b3a7fb86b8f630753fdfa854f29250bd6af5
[blank.git] / src / app / PreloadState.cpp
1 #include "PreloadState.hpp"
2
3 #include "Environment.hpp"
4 #include "../world/ChunkLoader.hpp"
5
6 #include <iostream>
7
8
9 namespace blank {
10
11 PreloadState::PreloadState(Environment &env, ChunkLoader &loader)
12 : env(env)
13 , loader(loader)
14 , font(env.assets.LoadFont("DejaVuSans", 24))
15 , progress(font)
16 , total(loader.ToLoad())
17 , per_update(64) {
18         progress.Position(glm::vec3(0.0f), Gravity::CENTER);
19         progress.Template("Preloading chunks: %d/%d (%d%%)");
20 }
21
22
23 void PreloadState::Handle(const SDL_Event &) {
24 }
25
26 void PreloadState::Update(int dt) {
27         loader.LoadN(per_update);
28         if (loader.ToLoad() == 0) {
29                 for (auto &chunk : loader.Loaded()) {
30                         chunk.CheckUpdate();
31                 }
32                 env.state.Pop();
33         } else {
34                 progress.Update(total - loader.ToLoad(), total);
35         }
36 }
37
38 void PreloadState::Render(Viewport &viewport) {
39         progress.Render(viewport);
40 }
41
42 }