mirror of
https://github.com/johndoe6345789/SDL3CPlusPlus.git
synced 2026-04-30 08:34:59 +00:00
refactor: Introduce script engine and related services for enhanced scripting capabilities
This commit is contained in:
61
src/services/impl/script_engine_service.cpp
Normal file
61
src/services/impl/script_engine_service.cpp
Normal 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
|
||||
Reference in New Issue
Block a user