From 7749da4a85549d690913d935645acf4ecaffcb75 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Tue, 5 Aug 2025 23:28:52 +0300 Subject: [PATCH] feat: project scripts --- src/engine/Engine.hpp | 4 ++++ src/engine/Mainloop.cpp | 15 +++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/engine/Engine.hpp b/src/engine/Engine.hpp index 8f8683da..a3427c14 100644 --- a/src/engine/Engine.hpp +++ b/src/engine/Engine.hpp @@ -174,4 +174,8 @@ public: devtools::Editor& getEditor() { return *editor; } + + const Project& getProject() { + return *project; + } }; diff --git a/src/engine/Mainloop.cpp b/src/engine/Mainloop.cpp index ecfd17bc..bdde4f53 100644 --- a/src/engine/Mainloop.cpp +++ b/src/engine/Mainloop.cpp @@ -2,8 +2,11 @@ #include "Engine.hpp" #include "debug/Logger.hpp" +#include "devtools/Project.hpp" #include "frontend/screens/MenuScreen.hpp" #include "frontend/screens/LevelScreen.hpp" +#include "interfaces/Process.hpp" +#include "logic/scripting/scripting.hpp" #include "window/Window.hpp" #include "world/Level.hpp" @@ -28,12 +31,24 @@ void Mainloop::run() { )); } }); + + io::path projectScript = "project:project_script.lua"; + std::unique_ptr process; + if (io::exists(projectScript)) { + logger.info() << "starting project script"; + process = scripting::start_coroutine(projectScript); + } else { + logger.warning() << "project script does not exists"; + } logger.info() << "starting menu screen"; engine.setScreen(std::make_shared(engine)); logger.info() << "main loop started"; while (!window.isShouldClose()){ + if (process) { + process->update(); + } time.update(window.time()); engine.updateFrontend(); if (!window.isIconified()) {