summaryrefslogtreecommitdiffhomepage
path: root/editor/app.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'editor/app.cpp')
-rw-r--r--editor/app.cpp26
1 files changed, 19 insertions, 7 deletions
diff --git a/editor/app.cpp b/editor/app.cpp
index 9023b5ac..a452934f 100644
--- a/editor/app.cpp
+++ b/editor/app.cpp
@@ -28,22 +28,34 @@ app::app(fm_settings&& opts) :
_table{loader.anim_atlas("table", loader.SCENERY_PATH)},
_control_panel(loader.anim_atlas("control-panel", loader.SCENERY_PATH))
{
- world& w = M->world();
- chunk_coords coord{0 ,0};
+ reset_world();
+ auto& w = M->world();
+ constexpr chunk_coords coord{0, 0};
maybe_initialize_chunk_(coord, w[coord]);
reset_camera_offset();
inspectors.reserve(16);
- _character_id = w.make_entity<character>(global_coords{})->id;
}
app::~app() = default;
+void app::reset_world()
+{
+ reset_world(floormat::world{});
+}
+
+void app::reset_world(struct world&& w)
+{
+ _character_id = 0;
+ if (!M)
+ return;
+ auto& w2 = M->reset_world(std::move(w));
+ w2.collect(true);
+ _character_id = w2.make_entity<character>(global_coords{})->id;
+}
+
int app::exec()
{
- int ret = M->exec();
- if (M)
- M->reset_world();
- return ret;
+ return M->exec();
}
static const char* const true_values[] = { "1", "true", "yes", "y", "Y", "on", "ON", "enable", "enabled", };