diff --git a/src/devtools/Project.cpp b/src/devtools/Project.cpp index 881f6cc7..61e99c6a 100644 --- a/src/devtools/Project.cpp +++ b/src/devtools/Project.cpp @@ -1,8 +1,13 @@ #include "Project.hpp" #include "data/dv_util.hpp" +#include "debug/Logger.hpp" +#include "io/io.hpp" +#include "io/path.hpp" #include "logic/scripting/scripting.hpp" +static debug::Logger logger("project"); + Project::~Project() = default; dv::value Project::serialize() const { @@ -18,3 +23,23 @@ void Project::deserialize(const dv::value& src) { src.at("title").get(title); dv::get(src, "base_packs", basePacks); } + +void Project::loadProjectClientScript() { + io::path scriptFile = "project:project_client.lua"; + if (io::exists(scriptFile)) { + logger.info() << "starting project client script"; + clientScript = scripting::load_client_project_script(scriptFile); + } else { + logger.warning() << "project client script does not exists"; + } +} + +void Project::loadProjectStartScript() { + io::path scriptFile = "project:start.lua"; + if (io::exists(scriptFile)) { + logger.info() << "starting project start script"; + setupCoroutine = scripting::start_app_script(scriptFile); + } else { + logger.warning() << "project start script does not exists"; + } +} diff --git a/src/devtools/Project.hpp b/src/devtools/Project.hpp index 68093ada..f0851b30 100644 --- a/src/devtools/Project.hpp +++ b/src/devtools/Project.hpp @@ -22,4 +22,7 @@ struct Project : Serializable { dv::value serialize() const override; void deserialize(const dv::value& src) override; + + void loadProjectClientScript(); + void loadProjectStartScript(); }; diff --git a/src/engine/Engine.cpp b/src/engine/Engine.cpp index 7f920833..150b8b02 100644 --- a/src/engine/Engine.cpp +++ b/src/engine/Engine.cpp @@ -46,28 +46,6 @@ static debug::Logger logger("engine"); -static std::unique_ptr load_project_client_script() { - io::path scriptFile = "project:project_client.lua"; - if (io::exists(scriptFile)) { - logger.info() << "starting project client script"; - return scripting::load_client_project_script(scriptFile); - } else { - logger.warning() << "project client script does not exists"; - } - return nullptr; -} - -static std::unique_ptr load_project_start_script() { - io::path scriptFile = "project:start.lua"; - if (io::exists(scriptFile)) { - logger.info() << "starting project start script"; - return scripting::start_app_script(scriptFile); - } else { - logger.warning() << "project start script does not exists"; - } - return nullptr; -} - Engine::Engine() = default; Engine::~Engine() = default; @@ -146,7 +124,7 @@ void Engine::initialize(CoreParameters coreParameters) { logger.info() << "engine version: " << ENGINE_VERSION_STRING; if (params.headless) { - logger.info() << "headless mode is enabled"; + logger.info() << "engine runs in headless mode"; } if (params.projectFolder.empty()) { params.projectFolder = params.resFolder; @@ -154,6 +132,9 @@ void Engine::initialize(CoreParameters coreParameters) { paths.setResourcesFolder(params.resFolder); paths.setUserFilesFolder(params.userFolder); paths.setProjectFolder(params.projectFolder); + if (!params.scriptFile.empty()) { + paths.setScriptFolder(params.scriptFile.parent_path()); + } paths.prepare(); loadProject(); @@ -172,10 +153,6 @@ void Engine::initialize(CoreParameters coreParameters) { ); } } - - if (!params.scriptFile.empty()) { - paths.setScriptFolder(params.scriptFile.parent_path()); - } loadSettings(); controller = std::make_unique(*this); @@ -201,9 +178,9 @@ void Engine::initialize(CoreParameters coreParameters) { langs::setup(lang, paths.resPaths.collectRoots()); }, true)); - project->setupCoroutine = load_project_start_script(); + project->loadProjectStartScript(); if (!params.headless) { - project->clientScript = load_project_client_script(); + project->loadProjectClientScript(); } } @@ -241,11 +218,7 @@ void Engine::updateHotkeys() { gui->toggleDebug(); } if (input->jpressed(Keycode::F11)) { - if (settings.display.windowMode.get() != static_cast(WindowMode::FULLSCREEN)) { - settings.display.windowMode.set(static_cast(WindowMode::FULLSCREEN)); - } else { - settings.display.windowMode.set(static_cast(WindowMode::WINDOWED)); - } + windowControl->toggleFullscreen(); } } diff --git a/src/engine/WindowControl.cpp b/src/engine/WindowControl.cpp index edf0a6e7..8557c5be 100644 --- a/src/engine/WindowControl.cpp +++ b/src/engine/WindowControl.cpp @@ -67,6 +67,16 @@ void WindowControl::saveScreenshot() { logger.info() << "saved screenshot as " << filename.string(); } +void WindowControl::toggleFullscreen() { + auto& settings = engine.getSettings(); + auto& windowMode = settings.display.windowMode; + if (windowMode.get() != static_cast(WindowMode::FULLSCREEN)) { + windowMode.set(static_cast(WindowMode::FULLSCREEN)); + } else { + windowMode.set(static_cast(WindowMode::WINDOWED)); + } +} + void WindowControl::nextFrame() { const auto& settings = engine.getSettings(); auto& window = engine.getWindow(); diff --git a/src/engine/WindowControl.hpp b/src/engine/WindowControl.hpp index 807d9758..f3b7c8bc 100644 --- a/src/engine/WindowControl.hpp +++ b/src/engine/WindowControl.hpp @@ -19,6 +19,8 @@ public: void nextFrame(); void saveScreenshot(); + + void toggleFullscreen(); private: Engine& engine; };