refactor: Introduce script engine and related services for enhanced scripting capabilities

This commit is contained in:
2026-01-04 15:39:07 +00:00
parent 0a893172c1
commit 41b58afc69
29 changed files with 627 additions and 47 deletions

View File

@@ -0,0 +1,61 @@
#include "script_engine_service.hpp"
#include "../../script/script_engine.hpp"
#include <stdexcept>
#include <utility>
namespace sdl3cpp::services::impl {
ScriptEngineService::ScriptEngineService(const std::filesystem::path& scriptPath,
std::shared_ptr<ILogger> logger,
bool debugEnabled)
: logger_(std::move(logger)),
scriptPath_(scriptPath),
debugEnabled_(debugEnabled) {
}
ScriptEngineService::~ScriptEngineService() {
if (initialized_) {
Shutdown();
}
}
void ScriptEngineService::Initialize() {
if (initialized_) {
return;
}
logger_->TraceFunction(__func__);
engine_ = std::make_unique<script::ScriptEngine>(scriptPath_, debugEnabled_);
initialized_ = true;
logger_->Info("Script engine service initialized");
}
void ScriptEngineService::Shutdown() noexcept {
if (!initialized_) {
return;
}
logger_->TraceFunction(__func__);
engine_.reset();
initialized_ = false;
logger_->Info("Script engine service shutdown");
}
script::ScriptEngine& ScriptEngineService::GetEngine() {
if (!engine_) {
throw std::runtime_error("Script engine service not initialized");
}
return *engine_;
}
std::filesystem::path ScriptEngineService::GetScriptDirectory() const {
if (!engine_) {
throw std::runtime_error("Script engine service not initialized");
}
return engine_->GetScriptDirectory();
}
} // namespace sdl3cpp::services::impl