Added ScriptBuilder that gives us access to conditional compilation and metadata attributes.
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2020-02-19 09:07:44 +01:00
parent 93be2ee8a1
commit 6fc6dbd05f
4 changed files with 1389 additions and 3 deletions

View File

@@ -49,7 +49,8 @@ void AngelScripResolver::Initialize(CreatureLib::Battling::BattleLibrary* arg) {
throw CreatureException("Registering print function failed.");
RegisterScriptHandle(_engine);
_mainModule = _engine->GetModule("pkmn", asGM_ALWAYS_CREATE);
_builder.StartNewModule(_engine, "pkmn");
_mainModule = _builder.GetModule();
RegisterTypes();
RegisterExceptionRoutines(_engine);
@@ -131,10 +132,10 @@ CreatureLib::Battling::Script* AngelScripResolver::LoadScript(ScriptCategory cat
return new AngelScriptScript(scriptName, typeInfo, obj, _contextPool);
}
void AngelScripResolver::FinalizeModule() {
int r = _mainModule->Build();
int r = _builder.BuildModule();
if (r < 0)
throw CreatureException("Building Script Module failed.");
}
void AngelScripResolver::CreateScript(const char* name, const char* script) {
_mainModule->AddScriptSection(name, script);
_builder.AddSectionFromMemory(name, script);
}

View File

@@ -3,6 +3,7 @@
#include <CreatureLib/Battling/ScriptHandling/ScriptResolver.hpp>
#include "../../Battling/Library/BattleLibrary.hpp"
#include "../../../extern/angelscript_addons/scriptbuilder/scriptbuilder.h"
#define ANGELSCRIPT_DLL_LIBRARY_IMPORT
#include <angelscript.h>
@@ -15,6 +16,7 @@ private:
asIScriptEngine* _engine = nullptr;
asIScriptModule* _mainModule = nullptr;
ContextPool* _contextPool = nullptr;
CScriptBuilder _builder;
std::unordered_map<std::string, AngelScriptTypeInfo*> _types;
static void MessageCallback(const asSMessageInfo* msg, void* param);