Adds support for including angelscript files using #include pragma, as long as they're within a set source directory.
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
2021-05-13 12:47:02 +02:00
parent 5c6bbf485f
commit 109042ff52
2 changed files with 36 additions and 5 deletions

View File

@@ -17,16 +17,21 @@ private:
asIScriptEngine* _engine = nullptr;
asIScriptModule* _mainModule = nullptr;
ContextPool* _contextPool = nullptr;
CScriptBuilder _builder;
CScriptBuilder _builder = {};
std::string _sourceDirectory = {};
static void MessageCallback(const asSMessageInfo* msg, void* param);
static void Print(const std::string& str) { std::cout << str << std::endl; }
static void PrintConst(const ArbUt::StringView& str) { Print(std::string(str.std_str())); }
ArbUt::Dictionary<ScriptCategory, ArbUt::Dictionary<ArbUt::StringView, AngelScriptTypeInfo*>> _typeDatabase;
ArbUt::Dictionary<ArbUt::StringView, asITypeInfo*> _baseTypes;
ArbUt::Dictionary<ArbUt::StringView, asITypeInfo*> _itemUseTypes;
ArbUt::Dictionary<const CreatureLib::Library::Item*, AngelScriptItemUseScript*> _itemUseScripts;
static void MessageCallback(const asSMessageInfo* msg, void* param);
static void Print(const std::string& str) { std::cout << str << std::endl; }
static void PrintConst(const ArbUt::StringView& str) { Print(std::string(str.std_str())); }
static i32 IncludeCallback(const char *include, const char *from, CScriptBuilder *builder, void *userParam);
void RegisterTypes();
void
InitializeByteCode(const ArbUt::Dictionary<ScriptCategory, ArbUt::Dictionary<ArbUt::StringView, uint32_t>>& types);
@@ -50,6 +55,7 @@ public:
void Initialize(CreatureLib::Battling::BattleLibrary* library) override { Initialize(library, true); }
void Initialize(CreatureLib::Battling::BattleLibrary* library, bool includeStandard);
void CreateScript(const char* name, const char* script);
inline void SetSourceDirectory(std::string const& path) noexcept { _sourceDirectory = path; }
const asIScriptModule* GetMainModule() const noexcept { return _mainModule; }
void FinalizeModule();