diff --git a/src/frontend/screens.cpp b/src/frontend/screens.cpp index f827c3be..54c1a6ed 100644 --- a/src/frontend/screens.cpp +++ b/src/frontend/screens.cpp @@ -104,7 +104,7 @@ LevelScreen::~LevelScreen() { std::cout << "-- writing world" << std::endl; World* world = level->world; - world->write(level, !engine->getSettings().debug.generatorTestMode); + world->write(level); delete level; delete world; @@ -118,7 +118,7 @@ void LevelScreen::updateHotkeys() { level->player->debug = !level->player->debug; } if (Events::jpressed(keycode::F5)) { - level->chunks->clear(); + level->chunks->saveAndClear(); } } @@ -133,7 +133,7 @@ void LevelScreen::update(float delta) { updateHotkeys(); } if (settings.graphics.backlight != backlight) { - level->chunks->clear(); + level->chunks->saveAndClear(); backlight = settings.graphics.backlight; } level->updatePlayer(delta, !inputLocked, hud->isPause(), !inputLocked); diff --git a/src/voxels/Chunks.cpp b/src/voxels/Chunks.cpp index 227faa25..c8a7d6d0 100644 --- a/src/voxels/Chunks.cpp +++ b/src/voxels/Chunks.cpp @@ -338,10 +338,11 @@ bool Chunks::putChunk(shared_ptr chunk) { return true; } -void Chunks::clear(){ +void Chunks::saveAndClear(){ for (size_t i = 0; i < volume; i++){ Chunk* chunk = chunks[i].get(); if (chunk) { + worldFiles->put(chunk); events->trigger(EVT_CHUNK_HIDDEN, chunk); } chunks[i] = nullptr; diff --git a/src/voxels/Chunks.h b/src/voxels/Chunks.h index 5f9ffa3d..ed29334d 100644 --- a/src/voxels/Chunks.h +++ b/src/voxels/Chunks.h @@ -59,7 +59,7 @@ public: void translate(int x, int z); void resize(int newW, int newD); - void clear(); + void saveAndClear(); }; #endif /* VOXELS_CHUNKS_H_ */ diff --git a/src/world/World.cpp b/src/world/World.cpp index 23db425d..8a1b4029 100644 --- a/src/world/World.cpp +++ b/src/world/World.cpp @@ -28,7 +28,7 @@ World::~World(){ delete wfile; } -void World::write(Level* level, bool writeChunks) { +void World::write(Level* level) { Chunks* chunks = level->chunks; for (size_t i = 0; i < chunks->volume; i++) { diff --git a/src/world/World.h b/src/world/World.h index d5d63f7c..0fa785b5 100644 --- a/src/world/World.h +++ b/src/world/World.h @@ -24,7 +24,7 @@ public: EngineSettings& settings); ~World(); - void write(Level* level, bool writeChunks); + void write(Level* level); Level* load(EngineSettings& settings, const Content* content); };