X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fapp%2FUnloadState.cpp;h=43aae056f27727ebc036e75d69dc044549dcec6f;hb=38a4cffc0b6aa58e49d24c06aad7bee14cb6515d;hp=49801bfbc5dcaab19ed7a48d6c994d25959e8ccb;hpb=29ee0558fdd951b25f41005ed721241b1f28aefa;p=blank.git diff --git a/src/app/UnloadState.cpp b/src/app/UnloadState.cpp index 49801bf..43aae05 100644 --- a/src/app/UnloadState.cpp +++ b/src/app/UnloadState.cpp @@ -1,27 +1,38 @@ #include "UnloadState.hpp" #include "Environment.hpp" +#include "../io/WorldSave.hpp" #include "../world/ChunkLoader.hpp" -#include "../world/WorldSave.hpp" namespace blank { -UnloadState::UnloadState(Environment &env, ChunkLoader &loader) +UnloadState::UnloadState( + Environment &env, + ChunkStore &chunks, + const WorldSave &save) : env(env) -, loader(loader) -, font(env.assets.LoadFont("DejaVuSans", 24)) -, progress(font) -, cur(loader.Loaded().begin()) -, end(loader.Loaded().end()) +, chunks(chunks) +, save(save) +, progress(env.assets.large_ui_font) +, cur(chunks.begin()) +, end(chunks.end()) , done(0) -, total(loader.Loaded().size()) +, total(chunks.NumLoaded()) , per_update(64) { progress.Position(glm::vec3(0.0f), Gravity::CENTER); progress.Template("Unloading chunks: %d/%d (%d%%)"); } +void UnloadState::OnResume() { + cur = chunks.begin(); + end = chunks.end(); + done = 0; + total = chunks.NumLoaded(); +} + + void UnloadState::Handle(const SDL_Event &) { // ignore everything } @@ -29,7 +40,7 @@ void UnloadState::Handle(const SDL_Event &) { void UnloadState::Update(int dt) { for (std::size_t i = 0; i < per_update && cur != end; ++i, ++cur, ++done) { if (cur->ShouldUpdateSave()) { - loader.SaveFile().Write(*cur); + save.Write(*cur); } } if (cur == end) {