cleanup Engine.cpp a bit

This commit is contained in:
MihailRis 2025-11-09 19:37:40 +03:00
parent 4bafad708e
commit 01bf474a2b
5 changed files with 47 additions and 34 deletions

View File

@ -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";
}
}

View File

@ -22,4 +22,7 @@ struct Project : Serializable {
dv::value serialize() const override;
void deserialize(const dv::value& src) override;
void loadProjectClientScript();
void loadProjectStartScript();
};

View File

@ -46,28 +46,6 @@
static debug::Logger logger("engine");
static std::unique_ptr<scripting::IClientProjectScript> 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<Process> 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<EngineController>(*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<int>(WindowMode::FULLSCREEN)) {
settings.display.windowMode.set(static_cast<int>(WindowMode::FULLSCREEN));
} else {
settings.display.windowMode.set(static_cast<int>(WindowMode::WINDOWED));
}
windowControl->toggleFullscreen();
}
}

View File

@ -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<int>(WindowMode::FULLSCREEN)) {
windowMode.set(static_cast<int>(WindowMode::FULLSCREEN));
} else {
windowMode.set(static_cast<int>(WindowMode::WINDOWED));
}
}
void WindowControl::nextFrame() {
const auto& settings = engine.getSettings();
auto& window = engine.getWindow();

View File

@ -19,6 +19,8 @@ public:
void nextFrame();
void saveScreenshot();
void toggleFullscreen();
private:
Engine& engine;
};