diff --git a/dev/tests/example.lua b/dev/tests/example.lua index 1ebe6b06..89302aa4 100644 --- a/dev/tests/example.lua +++ b/dev/tests/example.lua @@ -1,8 +1,6 @@ test.set_setting("chunks.load-distance", 3) test.set_setting("chunks.load-speed", 1) -test.quit() - test.reconfig_packs({"base"}, {}) test.new_world("demo", "2019", "core:default") local pid1 = player.create("Xerxes") diff --git a/src/Mainloop.cpp b/src/Mainloop.cpp index eae4c501..a12434ef 100644 --- a/src/Mainloop.cpp +++ b/src/Mainloop.cpp @@ -20,14 +20,14 @@ void Mainloop::run() { // destroy LevelScreen and run quit callbacks engine.setScreen(nullptr); // create and go to menu screen - engine.setScreen(std::make_shared(&engine)); + engine.setScreen(std::make_shared(engine)); } else { - engine.setScreen(std::make_shared(&engine, std::move(level))); + engine.setScreen(std::make_shared(engine, std::move(level))); } }); logger.info() << "starting menu screen"; - engine.setScreen(std::make_shared(&engine)); + engine.setScreen(std::make_shared(engine)); logger.info() << "main loop started"; while (!Window::isShouldClose()){ diff --git a/src/ServerMainloop.cpp b/src/ServerMainloop.cpp index dd50f089..3d05f55b 100644 --- a/src/ServerMainloop.cpp +++ b/src/ServerMainloop.cpp @@ -69,7 +69,7 @@ void ServerMainloop::run() { void ServerMainloop::setLevel(std::unique_ptr level) { if (level == nullptr) { controller->onWorldQuit(); - engine.getPaths()->setCurrentWorldFolder(fs::path()); + engine.getPaths().setCurrentWorldFolder(fs::path()); controller = nullptr; } else { controller = std::make_unique( diff --git a/src/engine.cpp b/src/engine.cpp index 095d744c..2f8466d6 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -87,7 +87,7 @@ Engine::Engine(CoreParameters coreParameters) auto resdir = paths.getResourcesFolder(); - controller = std::make_unique(this); + controller = std::make_unique(*this); if (!params.headless) { if (Window::initialize(&settings.display)){ throw initialize_error("could not initialize window"); @@ -101,7 +101,7 @@ Engine::Engine(CoreParameters coreParameters) gui = std::make_unique(); if (ENGINE_DEBUG_BUILD) { - menus::create_version_label(this); + menus::create_version_label(*this); } } audio::initialize(settings.audio.enabled.get() && !params.headless); @@ -118,7 +118,7 @@ Engine::Engine(CoreParameters coreParameters) paths.getResourcesFolder() )); } - keepAlive(settings.ui.language.observe([=](auto lang) { + keepAlive(settings.ui.language.observe([this](auto lang) { setLanguage(lang); }, true)); @@ -447,7 +447,7 @@ void Engine::setScreen(std::shared_ptr screen) { void Engine::setLanguage(std::string locale) { langs::setup(paths.getResourcesFolder(), std::move(locale), contentPacks); if (gui) { - gui->getMenu()->setPageLoader(menus::create_page_loader(this)); + gui->getMenu()->setPageLoader(menus::create_page_loader(*this)); } } @@ -502,8 +502,8 @@ std::vector& Engine::getBasePacks() { return basePacks; } -EnginePaths* Engine::getPaths() { - return &paths; +EnginePaths& Engine::getPaths() { + return paths; } ResPaths* Engine::getResPaths() { diff --git a/src/engine.hpp b/src/engine.hpp index 39792624..f10fb3a0 100644 --- a/src/engine.hpp +++ b/src/engine.hpp @@ -131,7 +131,7 @@ public: EngineSettings& getSettings(); /// @brief Get engine filesystem paths source - EnginePaths* getPaths(); + EnginePaths& getPaths(); /// @brief Get engine resource paths controller ResPaths* getResPaths(); diff --git a/src/files/engine_paths.cpp b/src/files/engine_paths.cpp index 26857331..0ecea7b8 100644 --- a/src/files/engine_paths.cpp +++ b/src/files/engine_paths.cpp @@ -132,7 +132,7 @@ std::filesystem::path EnginePaths::getSettingsFile() const { return userFilesFolder / SETTINGS_FILE; } -std::vector EnginePaths::scanForWorlds() { +std::vector EnginePaths::scanForWorlds() const { std::vector folders; auto folder = getWorldsFolder(); @@ -189,7 +189,7 @@ std::tuple EnginePaths::parsePath(std::string_view pat std::filesystem::path EnginePaths::resolve( const std::string& path, bool throwErr -) { +) const { auto [prefix, filename] = EnginePaths::parsePath(path); if (prefix.empty()) { throw files_access_error("no entry point specified"); diff --git a/src/files/engine_paths.hpp b/src/files/engine_paths.hpp index c5289243..61be1757 100644 --- a/src/files/engine_paths.hpp +++ b/src/files/engine_paths.hpp @@ -39,9 +39,9 @@ public: void setContentPacks(std::vector* contentPacks); - std::vector scanForWorlds(); + std::vector scanForWorlds() const; - std::filesystem::path resolve(const std::string& path, bool throwErr = true); + std::filesystem::path resolve(const std::string& path, bool throwErr = true) const; static std::tuple parsePath(std::string_view view); diff --git a/src/frontend/debug_panel.cpp b/src/frontend/debug_panel.cpp index d1ad6231..a5607803 100644 --- a/src/frontend/debug_panel.cpp +++ b/src/frontend/debug_panel.cpp @@ -42,7 +42,7 @@ static std::shared_ptr