More aggressive sanitization. Loads of integer definition fixes
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -7,12 +7,12 @@
|
||||
class AngelScriptResolver;
|
||||
|
||||
class AngelScriptEvolutionScript final : public PkmnLib::Battling::EvolutionScript {
|
||||
asIScriptObject* _scriptObject;
|
||||
AngelScriptResolver* _resolver;
|
||||
asIScriptObject* non_null _scriptObject;
|
||||
AngelScriptResolver* non_null _resolver;
|
||||
|
||||
struct FunctionInfo {
|
||||
bool Exists = false;
|
||||
asIScriptFunction* Function = nullptr;
|
||||
asIScriptFunction* nullable Function = nullptr;
|
||||
};
|
||||
|
||||
#define EVO_SCRIPT_HOOK_FUNCTION(name, decl) FunctionInfo __##name = Initialize(decl);
|
||||
@@ -30,7 +30,7 @@ class AngelScriptEvolutionScript final : public PkmnLib::Battling::EvolutionScri
|
||||
"const Pokemon@ pokemon)");
|
||||
|
||||
public:
|
||||
AngelScriptEvolutionScript(asIScriptObject* scriptObject, AngelScriptResolver* resolver)
|
||||
AngelScriptEvolutionScript(asIScriptObject* non_null scriptObject, AngelScriptResolver* non_null resolver)
|
||||
: _scriptObject(scriptObject), _resolver(resolver) {}
|
||||
|
||||
~AngelScriptEvolutionScript() {
|
||||
@@ -41,7 +41,7 @@ public:
|
||||
|
||||
void DoesEvolveFromLevelUp(const ArbUt::BorrowedPtr<const PkmnLib::Library::EvolutionData>& evolution,
|
||||
const ArbUt::BorrowedPtr<const PkmnLib::Battling::Pokemon>& pokemon,
|
||||
bool* out) const override;
|
||||
bool* non_null out) const override;
|
||||
};
|
||||
|
||||
#endif // PKMNLIB_ANGELSCRIPTEVOLUTIONSCRIPT_HPP
|
||||
|
||||
@@ -321,6 +321,9 @@ void AngelScriptResolver::RegisterScriptType(asITypeInfo* typeInfo, const ArbUt:
|
||||
}
|
||||
}
|
||||
void AngelScriptResolver::CreateScript(const std::string& name, const std::string& script) {
|
||||
if (script.empty()) {
|
||||
return;
|
||||
}
|
||||
EnsureGreater(_builder.AddSectionFromMemory(name.c_str(), script.c_str()), 0);
|
||||
}
|
||||
void AngelScriptResolver::WriteByteCodeToFile(const char* file, bool stripDebugInfo) {
|
||||
|
||||
@@ -6,18 +6,18 @@
|
||||
|
||||
class FileByteCodeStream : public IPkmnBinaryStream {
|
||||
private:
|
||||
FILE* _file;
|
||||
FILE* non_null _file;
|
||||
size_t _readPosition = 0;
|
||||
|
||||
public:
|
||||
explicit FileByteCodeStream(FILE* file, size_t bound) : IPkmnBinaryStream(bound), _file(file) {}
|
||||
explicit FileByteCodeStream(FILE* non_null file, size_t bound) : IPkmnBinaryStream(bound), _file(file) {}
|
||||
|
||||
int Write(const void* ptr, asUINT size) override {
|
||||
int Write(const void* non_null ptr, asUINT size) override {
|
||||
if (size == 0)
|
||||
return 0;
|
||||
return fwrite(ptr, size, 1, _file);
|
||||
}
|
||||
int Read(void* ptr, asUINT size) override {
|
||||
int Read(void* non_null ptr, asUINT size) override {
|
||||
if (size == 0)
|
||||
return 0;
|
||||
if (_readPosition + size >= _angelScriptBound) {
|
||||
|
||||
@@ -14,9 +14,9 @@ protected:
|
||||
|
||||
public:
|
||||
virtual void WriteTypes(
|
||||
const ArbUt::Dictionary<ScriptCategory, ArbUt::Dictionary<ArbUt::StringView, AngelScriptTypeInfo*>>& types,
|
||||
const ArbUt::Dictionary<ArbUt::StringView, asITypeInfo*>& itemUseTypes,
|
||||
const ArbUt::Dictionary<ArbUt::StringView, asITypeInfo*>& evolutionTypes) {
|
||||
const ArbUt::Dictionary<ScriptCategory, ArbUt::Dictionary<ArbUt::StringView, AngelScriptTypeInfo* non_null>>& types,
|
||||
const ArbUt::Dictionary<ArbUt::StringView, asITypeInfo* non_null>& itemUseTypes,
|
||||
const ArbUt::Dictionary<ArbUt::StringView, asITypeInfo* non_null>& evolutionTypes) {
|
||||
// We serialize our types in the format
|
||||
// "[category(byte)][name(str)]\2[decl(str)]\2[name(str)]\2[decl(str)]\1[category(byte)]...."
|
||||
|
||||
@@ -73,7 +73,7 @@ public:
|
||||
Write("\1", sizeof(char));
|
||||
}
|
||||
|
||||
virtual ArbUt::Dictionary<i16, ArbUt::Dictionary<ArbUt::StringView, uint32_t>> ReadTypes() {
|
||||
virtual ArbUt::Dictionary<i16, ArbUt::Dictionary<ArbUt::StringView, u32>> ReadTypes() {
|
||||
_angelScriptBound = SIZE_MAX;
|
||||
ArbUt::Dictionary<i16, ArbUt::Dictionary<ArbUt::StringView, uint32_t>> types;
|
||||
i16 categoryArr[1];
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
class MemoryByteCodeStream : public IPkmnBinaryStream {
|
||||
private:
|
||||
uint8_t* _out;
|
||||
uint8_t* non_null _out;
|
||||
size_t _index = 0;
|
||||
size_t _size = 0;
|
||||
size_t _capacity = 0;
|
||||
@@ -15,14 +15,14 @@ private:
|
||||
public:
|
||||
MemoryByteCodeStream()
|
||||
: IPkmnBinaryStream(SIZE_MAX), _out((uint8_t*)malloc(MEM_STEPS * sizeof(uint8_t))), _capacity(MEM_STEPS){};
|
||||
MemoryByteCodeStream(uint8_t* in, size_t size) : IPkmnBinaryStream(SIZE_MAX), _out(in), _size(size) {}
|
||||
MemoryByteCodeStream(uint8_t* non_null in, size_t size) : IPkmnBinaryStream(SIZE_MAX), _out(in), _size(size) {}
|
||||
|
||||
uint8_t* GetOut() const { return _out; }
|
||||
uint8_t* non_null GetOut() const { return _out; }
|
||||
size_t GetWrittenSize() const { return _size; }
|
||||
|
||||
void SetAngelScriptBound(size_t bound) noexcept { _angelScriptBound = bound; }
|
||||
|
||||
int Write(const void* ptr, asUINT size) final {
|
||||
int Write(const void* non_null ptr, asUINT size) final {
|
||||
if (size == 0)
|
||||
return 0;
|
||||
auto initialSize = _size;
|
||||
@@ -42,14 +42,14 @@ public:
|
||||
return size;
|
||||
}
|
||||
|
||||
void WriteToPosition(const void* ptr, asUINT size, size_t position) {
|
||||
void WriteToPosition(const void* non_null ptr, asUINT size, size_t position) {
|
||||
auto start = reinterpret_cast<const uint8_t*>(ptr);
|
||||
for (asUINT index = 0; index < size; index++) {
|
||||
_out[position + index] = *(start + index);
|
||||
}
|
||||
}
|
||||
|
||||
int Read(void* ptr, asUINT size) final {
|
||||
int Read(void* non_null ptr, asUINT size) final {
|
||||
if (size == 0)
|
||||
return 0;
|
||||
auto toRead = size;
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
#ifndef PKMNLIB_BASICSCRIPTCLASS_HPP
|
||||
#define PKMNLIB_BASICSCRIPTCLASS_HPP
|
||||
|
||||
#include <CreatureLib/Defines.hpp>
|
||||
#include <angelscript.h>
|
||||
|
||||
class BasicScriptClass {
|
||||
public:
|
||||
static void Register(asIScriptEngine* engine);
|
||||
static void Register(asIScriptEngine* non_null engine);
|
||||
};
|
||||
|
||||
#endif // PKMNLIB_BASICSCRIPTCLASS_HPP
|
||||
|
||||
@@ -1,24 +1,22 @@
|
||||
#include "RegisterBattleClass.hpp"
|
||||
#include <CreatureLib/Battling/Models/Battle.hpp>
|
||||
#include <CreatureLib/Battling/Models/BattleSide.hpp>
|
||||
#include <type_traits>
|
||||
#include <scripthandle/scripthandle.h>
|
||||
#include <type_traits>
|
||||
#include "../../../../Battling/Battle/Battle.hpp"
|
||||
#include "../../../../Battling/Pokemon/Pokemon.hpp"
|
||||
#include "../../AngelScriptResolver.hpp"
|
||||
#include "../../AngelScriptScript.hpp"
|
||||
#include "../../AngelscriptUserdata.hpp"
|
||||
#include "../HelperFile.hpp"
|
||||
#include "../NativeArray.hpp"
|
||||
|
||||
void RegisterBattleClass::Register(asIScriptEngine* engine) {
|
||||
void RegisterBattleClass::Register(asIScriptEngine* non_null engine) {
|
||||
RegisterChoiceQueue(engine);
|
||||
RegisterBattleRandom(engine);
|
||||
RegisterBattleSide(engine);
|
||||
RegisterBattle(engine);
|
||||
}
|
||||
|
||||
void RegisterBattleClass::RegisterChoiceQueue(asIScriptEngine* engine) {
|
||||
void RegisterBattleClass::RegisterChoiceQueue(asIScriptEngine* non_null engine) {
|
||||
[[maybe_unused]] int r = engine->RegisterObjectType("ChoiceQueue", 0, asOBJ_REF | asOBJ_NOCOUNT);
|
||||
Ensure(r >= 0);
|
||||
r = engine->RegisterObjectMethod("ChoiceQueue", "bool MovePokemonChoiceNext(Pokemon@ target)",
|
||||
@@ -33,7 +31,7 @@ void RegisterBattleClass::RegisterChoiceQueue(asIScriptEngine* engine) {
|
||||
Ensure(r >= 0);
|
||||
}
|
||||
|
||||
void RegisterBattleClass::RegisterBattleRandom(asIScriptEngine* engine) {
|
||||
void RegisterBattleClass::RegisterBattleRandom(asIScriptEngine* non_null engine) {
|
||||
[[maybe_unused]] int r = engine->RegisterObjectType("BattleRandom", 0, asOBJ_REF | asOBJ_NOCOUNT);
|
||||
Ensure(r >= 0);
|
||||
r = engine->RegisterObjectMethod("BattleRandom",
|
||||
@@ -54,15 +52,20 @@ void RegisterBattleClass::RegisterBattleRandom(asIScriptEngine* engine) {
|
||||
Ensure(r >= 0);
|
||||
}
|
||||
|
||||
CreatureLib::Battling::BattleSide* GetBattleSideWrapper(PkmnLib::Battling::Battle* battle, u8 index) {
|
||||
CreatureLib::Battling::BattleSide* GetBattleSideWrapper(PkmnLib::Battling::Battle* non_null battle, u8 index) {
|
||||
EnsureNotNull(battle);
|
||||
return battle->GetSides()[index];
|
||||
}
|
||||
|
||||
CreatureLib::Battling::BattleParty* GetPartyWrapper(PkmnLib::Battling::Battle* battle, u8 index) {
|
||||
CreatureLib::Battling::BattleParty* GetPartyWrapper(PkmnLib::Battling::Battle* non_null battle, u8 index) {
|
||||
EnsureNotNull(battle);
|
||||
return battle->GetParties()[index];
|
||||
}
|
||||
|
||||
CreatureLib::Battling::BattleParty* FindPartyWrapper(PkmnLib::Battling::Battle* battle, PkmnLib::Battling::Pokemon* p) {
|
||||
CreatureLib::Battling::BattleParty* FindPartyWrapper(PkmnLib::Battling::Battle* non_null battle,
|
||||
PkmnLib::Battling::Pokemon* non_null p) {
|
||||
EnsureNotNull(battle);
|
||||
EnsureNotNull(p);
|
||||
auto v = battle->FindPartyForCreature(p);
|
||||
if (v.HasValue()) {
|
||||
return v.GetValue();
|
||||
@@ -70,7 +73,8 @@ CreatureLib::Battling::BattleParty* FindPartyWrapper(PkmnLib::Battling::Battle*
|
||||
return {};
|
||||
}
|
||||
|
||||
static CScriptHandle Battle_AddVolatileWrapper(PkmnLib::Battling::Battle* obj, const ArbUt::StringView& name) {
|
||||
static CScriptHandle Battle_AddVolatileWrapper(PkmnLib::Battling::Battle* non_null obj, const ArbUt::StringView& name) {
|
||||
EnsureNotNull(obj);
|
||||
auto handle = CScriptHandle();
|
||||
auto* resolver = static_cast<AngelScriptResolver*>(obj->GetLibrary()->GetScriptResolver().get());
|
||||
auto script = static_cast<AngelScriptScript*>(obj->AddVolatileScript(name))->GetRawAngelscriptObject();
|
||||
@@ -78,7 +82,8 @@ static CScriptHandle Battle_AddVolatileWrapper(PkmnLib::Battling::Battle* obj, c
|
||||
return handle;
|
||||
}
|
||||
|
||||
static CScriptHandle Battle_GetVolatileWrapper(PkmnLib::Battling::Battle* obj, const ArbUt::StringView& name) {
|
||||
static CScriptHandle Battle_GetVolatileWrapper(PkmnLib::Battling::Battle* non_null obj, const ArbUt::StringView& name) {
|
||||
EnsureNotNull(obj);
|
||||
auto handle = CScriptHandle();
|
||||
auto* resolver = static_cast<AngelScriptResolver*>(obj->GetLibrary()->GetScriptResolver().get());
|
||||
auto* s = static_cast<AngelScriptScript*>(obj->GetVolatileScript(name).GetValue());
|
||||
@@ -90,8 +95,9 @@ static CScriptHandle Battle_GetVolatileWrapper(PkmnLib::Battling::Battle* obj, c
|
||||
return handle;
|
||||
}
|
||||
|
||||
static CScriptHandle BattleSide_AddVolatileWrapper(CreatureLib::Battling::BattleSide* obj,
|
||||
static CScriptHandle BattleSide_AddVolatileWrapper(CreatureLib::Battling::BattleSide* non_null obj,
|
||||
const ArbUt::StringView& name) {
|
||||
EnsureNotNull(obj);
|
||||
auto handle = CScriptHandle();
|
||||
auto* resolver = static_cast<AngelScriptResolver*>(obj->GetBattle()->GetLibrary()->GetScriptResolver().get());
|
||||
auto script = static_cast<AngelScriptScript*>(obj->AddVolatileScript(name))->GetRawAngelscriptObject();
|
||||
@@ -99,31 +105,37 @@ static CScriptHandle BattleSide_AddVolatileWrapper(CreatureLib::Battling::Battle
|
||||
return handle;
|
||||
}
|
||||
|
||||
static CScriptHandle BattleSide_GetVolatileWrapper(CreatureLib::Battling::BattleSide* obj,
|
||||
static CScriptHandle BattleSide_GetVolatileWrapper(CreatureLib::Battling::BattleSide* non_null obj,
|
||||
const ArbUt::StringView& name) {
|
||||
EnsureNotNull(obj);
|
||||
auto handle = CScriptHandle();
|
||||
auto* resolver = static_cast<AngelScriptResolver*>(obj->GetBattle()->GetLibrary()->GetScriptResolver().get());
|
||||
auto* s = static_cast<AngelScriptScript*>(obj->GetVolatileScript(name).GetValue());
|
||||
if (s == nullptr) {
|
||||
auto s = obj->GetVolatileScript(name).ForceAs<AngelScriptScript>();
|
||||
if (!s.HasValue()) {
|
||||
return handle;
|
||||
}
|
||||
auto* script = s->GetRawAngelscriptObject();
|
||||
auto* script = s.GetValue()->GetRawAngelscriptObject();
|
||||
handle.Set(script, resolver->GetBaseType("PkmnScript"));
|
||||
return handle;
|
||||
}
|
||||
|
||||
static bool Battle_HasVolatileWrapper(PkmnLib::Battling::Battle* obj, const ArbUt::StringView& name) {
|
||||
static bool Battle_HasVolatileWrapper(PkmnLib::Battling::Battle* non_null obj, const ArbUt::StringView& name) {
|
||||
EnsureNotNull(obj);
|
||||
return obj->HasVolatileScript(name);
|
||||
}
|
||||
static bool BattleSide_HasVolatileWrapper(CreatureLib::Battling::BattleSide* obj, const ArbUt::StringView& name) {
|
||||
static bool BattleSide_HasVolatileWrapper(CreatureLib::Battling::BattleSide* non_null obj,
|
||||
const ArbUt::StringView& name) {
|
||||
EnsureNotNull(obj);
|
||||
return obj->HasVolatileScript(name);
|
||||
}
|
||||
|
||||
static u8 GetPokemonIndexWrapper(CreatureLib::Battling::BattleSide* obj, PkmnLib::Battling::Pokemon* pokemon) {
|
||||
static u8 GetPokemonIndexWrapper(CreatureLib::Battling::BattleSide* non_null obj, PkmnLib::Battling::Pokemon* pokemon) {
|
||||
EnsureNotNull(obj);
|
||||
return obj->GetCreatureIndex(pokemon);
|
||||
}
|
||||
|
||||
static PkmnLib::Battling::Pokemon* GetPokemonWrapper(CreatureLib::Battling::BattleSide* obj, u8 index) {
|
||||
static PkmnLib::Battling::Pokemon* GetPokemonWrapper(CreatureLib::Battling::BattleSide* non_null obj, u8 index) {
|
||||
EnsureNotNull(obj);
|
||||
return dynamic_cast<PkmnLib::Battling::Pokemon*>(obj->GetCreature(index).GetValue());
|
||||
}
|
||||
|
||||
|
||||
@@ -1,15 +1,17 @@
|
||||
#ifndef PKMNLIB_REGISTERBATTLECLASS_HPP
|
||||
#define PKMNLIB_REGISTERBATTLECLASS_HPP
|
||||
|
||||
#include <CreatureLib/Defines.hpp>
|
||||
#include <angelscript.h>
|
||||
|
||||
class RegisterBattleClass {
|
||||
static void RegisterChoiceQueue(asIScriptEngine* engine);
|
||||
static void RegisterBattle(asIScriptEngine* engine);
|
||||
static void RegisterBattleSide(asIScriptEngine* engine);
|
||||
static void RegisterBattleRandom(asIScriptEngine* engine);
|
||||
static void RegisterChoiceQueue(asIScriptEngine* non_null engine);
|
||||
static void RegisterBattle(asIScriptEngine* non_null engine);
|
||||
static void RegisterBattleSide(asIScriptEngine* non_null engine);
|
||||
static void RegisterBattleRandom(asIScriptEngine* non_null engine);
|
||||
|
||||
public:
|
||||
static void Register(asIScriptEngine* engine);
|
||||
static void Register(asIScriptEngine* non_null engine);
|
||||
};
|
||||
|
||||
#endif // PKMNLIB_REGISTERBATTLECLASS_HPP
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
#ifndef PKMNLIB_REGISTERBATTLEHISTORY_HPP
|
||||
#define PKMNLIB_REGISTERBATTLEHISTORY_HPP
|
||||
|
||||
#include <CreatureLib/Defines.hpp>
|
||||
#include <angelscript.h>
|
||||
class RegisterBattleHistory {
|
||||
static void RegisterHistoryElement(asIScriptEngine* engine);
|
||||
static void RegisterHistoryHolder(asIScriptEngine* engine);
|
||||
static void RegisterHistoryElement(asIScriptEngine* non_null engine);
|
||||
static void RegisterHistoryHolder(asIScriptEngine* non_null engine);
|
||||
|
||||
public:
|
||||
static void Register(asIScriptEngine* engine);
|
||||
static void Register(asIScriptEngine* non_null engine);
|
||||
};
|
||||
|
||||
#endif // PKMNLIB_REGISTERBATTLEHISTORY_HPP
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
#ifndef PKMNLIB_REGISTERBATTLELIBRARY_HPP
|
||||
#define PKMNLIB_REGISTERBATTLELIBRARY_HPP
|
||||
|
||||
#include <CreatureLib/Defines.hpp>
|
||||
#include <angelscript.h>
|
||||
|
||||
class RegisterBattleLibrary {
|
||||
static void RegisterDamageLibrary(asIScriptEngine* engine);
|
||||
static void RegisterLibrary(asIScriptEngine* engine);
|
||||
static void RegisterDamageLibrary(asIScriptEngine* non_null engine);
|
||||
static void RegisterLibrary(asIScriptEngine* non_null engine);
|
||||
|
||||
public:
|
||||
static void Register(asIScriptEngine* engine);
|
||||
static void Register(asIScriptEngine* non_null engine);
|
||||
};
|
||||
|
||||
#endif // PKMNLIB_REGISTERBATTLELIBRARY_HPP
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
#ifndef PKMNLIB_REGISTEREXECUTINGATTACK_HPP
|
||||
#define PKMNLIB_REGISTEREXECUTINGATTACK_HPP
|
||||
|
||||
#include <CreatureLib/Defines.hpp>
|
||||
#include <angelscript.h>
|
||||
|
||||
class RegisterExecutingAttack {
|
||||
static void RegisterHitData(asIScriptEngine* engine);
|
||||
static void RegisterExecutingAttackType(asIScriptEngine* engine);
|
||||
static void RegisterHitData(asIScriptEngine* non_null engine);
|
||||
static void RegisterExecutingAttackType(asIScriptEngine* non_null engine);
|
||||
|
||||
public:
|
||||
static void Register(asIScriptEngine* engine);
|
||||
static void Register(asIScriptEngine* non_null engine);
|
||||
};
|
||||
|
||||
#endif // PKMNLIB_REGISTEREXECUTINGATTACK_HPP
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
#ifndef PKMNLIB_REGISTERPARTY_HPP
|
||||
#define PKMNLIB_REGISTERPARTY_HPP
|
||||
|
||||
#include <CreatureLib/Defines.hpp>
|
||||
#include <angelscript.h>
|
||||
class RegisterParty {
|
||||
static void RegisterPartyClass(asIScriptEngine* engine);
|
||||
static void RegisterBattleParty(asIScriptEngine* engine);
|
||||
static void RegisterPartyClass(asIScriptEngine* non_null engine);
|
||||
static void RegisterBattleParty(asIScriptEngine* non_null engine);
|
||||
|
||||
public:
|
||||
static void Register(asIScriptEngine* engine);
|
||||
static void Register(asIScriptEngine* non_null engine);
|
||||
};
|
||||
|
||||
#endif // PKMNLIB_REGISTERPARTY_HPP
|
||||
|
||||
@@ -73,12 +73,15 @@ static const ArbUt::StringView& GetActiveAbilityWrapper(PkmnLib::Battling::Pokem
|
||||
static size_t GetTypesLengthWrapper(PkmnLib::Battling::Pokemon* p) { return p->GetTypes().size(); }
|
||||
static uint8_t GetTypeWrapper(PkmnLib::Battling::Pokemon* p, size_t index) { return p->GetTypes()[index]; }
|
||||
|
||||
#if defined(__clang__)
|
||||
// Angelscript aligns this wrong (aligned on 4 bytes, wants 8). While this is a slight performance hit, we can ignore it for now.
|
||||
[[clang::no_sanitize("alignment")]]
|
||||
#endif
|
||||
static CScriptHandle AddVolatileWrapper(PkmnLib::Battling::Pokemon* obj, const ArbUt::StringView& name) {
|
||||
auto handle = CScriptHandle();
|
||||
auto* resolver = static_cast<AngelScriptResolver*>(obj->GetLibrary()->GetScriptResolver().get());
|
||||
auto script = static_cast<AngelScriptScript*>(obj->AddVolatileScript(name))->GetRawAngelscriptObject();
|
||||
handle.Set(script, resolver->GetBaseType("PkmnScript"));
|
||||
return handle;
|
||||
auto* script = static_cast<AngelScriptScript*>(obj->AddVolatileScript(name))->GetRawAngelscriptObject();
|
||||
|
||||
return {script, resolver->GetBaseType("PkmnScript")};
|
||||
}
|
||||
|
||||
static bool HasTypeStringWrapper(PkmnLib::Battling::Pokemon* p, const ArbUt::StringView& sv) {
|
||||
@@ -190,7 +193,7 @@ void RegisterPokemonClass::RegisterPokemonType(asIScriptEngine* engine) {
|
||||
r = engine->RegisterObjectMethod("Pokemon", "bool HasVolatile(const constString &in name) const",
|
||||
asMETHOD(PkmnLib::Battling::Pokemon, HasVolatileScript), asCALL_THISCALL);
|
||||
Ensure(r >= 0);
|
||||
r = engine->RegisterObjectMethod("Pokemon", "ref@ AddVolatile(const constString &in name)",
|
||||
r = engine->RegisterObjectMethod("Pokemon", "ref AddVolatile(const constString &in name)",
|
||||
asFUNCTION(AddVolatileWrapper), asCALL_CDECL_OBJFIRST);
|
||||
Ensure(r >= 0);
|
||||
r = engine->RegisterObjectMethod(
|
||||
|
||||
@@ -1,16 +1,17 @@
|
||||
#ifndef PKMNLIB_REGISTERPOKEMONCLASS_HPP
|
||||
#define PKMNLIB_REGISTERPOKEMONCLASS_HPP
|
||||
|
||||
#include <CreatureLib/Defines.hpp>
|
||||
#include <angelscript.h>
|
||||
|
||||
class RegisterPokemonClass {
|
||||
static void RegisterDamageSource(asIScriptEngine* engine);
|
||||
static void RegisterMoveLearnMethod(asIScriptEngine* engine);
|
||||
static void RegisterLearnedAttack(asIScriptEngine* engine);
|
||||
static void RegisterPokemonType(asIScriptEngine* engine);
|
||||
static void RegisterDamageSource(asIScriptEngine* non_null engine);
|
||||
static void RegisterMoveLearnMethod(asIScriptEngine* non_null engine);
|
||||
static void RegisterLearnedAttack(asIScriptEngine* non_null engine);
|
||||
static void RegisterPokemonType(asIScriptEngine* non_null engine);
|
||||
|
||||
public:
|
||||
static void Register(asIScriptEngine* engine);
|
||||
static void Register(asIScriptEngine* non_null engine);
|
||||
};
|
||||
|
||||
#endif // PKMNLIB_REGISTERPOKEMONCLASS_HPP
|
||||
|
||||
@@ -1,17 +1,18 @@
|
||||
#ifndef PKMNLIB_REGISTERTURNCHOICES_HPP
|
||||
#define PKMNLIB_REGISTERTURNCHOICES_HPP
|
||||
|
||||
#include <CreatureLib/Defines.hpp>
|
||||
#include <angelscript.h>
|
||||
|
||||
class RegisterTurnChoices {
|
||||
static void RegisterTurnChoiceKindEnum(asIScriptEngine* engine);
|
||||
static void RegisterBaseTurnChoice(asIScriptEngine* engine);
|
||||
static void RegisterMoveTurnChoice(asIScriptEngine* engine);
|
||||
static void RegisterSwitchTurnChoice(asIScriptEngine* engine);
|
||||
static void RegisterFleeTurnChoice(asIScriptEngine* engine);
|
||||
static void RegisterTurnChoiceKindEnum(asIScriptEngine* non_null engine);
|
||||
static void RegisterBaseTurnChoice(asIScriptEngine* non_null engine);
|
||||
static void RegisterMoveTurnChoice(asIScriptEngine* non_null engine);
|
||||
static void RegisterSwitchTurnChoice(asIScriptEngine* non_null engine);
|
||||
static void RegisterFleeTurnChoice(asIScriptEngine* non_null engine);
|
||||
|
||||
public:
|
||||
static void Register(asIScriptEngine* engine);
|
||||
static void Register(asIScriptEngine* non_null engine);
|
||||
};
|
||||
|
||||
#endif // PKMNLIB_REGISTERTURNCHOICES_HPP
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
#ifndef PKMNLIB_CONSTSTRING_HPP
|
||||
#define PKMNLIB_CONSTSTRING_HPP
|
||||
|
||||
#include <CreatureLib/Defines.hpp>
|
||||
#include <angelscript.h>
|
||||
|
||||
class ConstStringRegister {
|
||||
public:
|
||||
static void Register(asIScriptEngine* engine);
|
||||
static void Register(asIScriptEngine* non_null engine);
|
||||
};
|
||||
|
||||
#endif // PKMNLIB_CONSTSTRING_HPP
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
#ifndef PKMNLIB_REGISTEREFFECTPARAMETER_HPP
|
||||
#define PKMNLIB_REGISTEREFFECTPARAMETER_HPP
|
||||
|
||||
#include <CreatureLib/Defines.hpp>
|
||||
#include <angelscript.h>
|
||||
|
||||
class RegisterEffectParameter {
|
||||
public:
|
||||
static void Register(asIScriptEngine* engine);
|
||||
static void Register(asIScriptEngine* non_null engine);
|
||||
};
|
||||
|
||||
#endif // PKMNLIB_REGISTEREFFECTPARAMETER_HPP
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
#ifndef PKMNLIB_REGISTERGROWTHRATETYPES_HPP
|
||||
#define PKMNLIB_REGISTERGROWTHRATETYPES_HPP
|
||||
|
||||
#include <CreatureLib/Defines.hpp>
|
||||
#include <angelscript.h>
|
||||
|
||||
class RegisterGrowthRateTypes {
|
||||
static void RegisterGrowthRateType(asIScriptEngine* engine);
|
||||
static void RegisterGrowthRateLibrary(asIScriptEngine* engine);
|
||||
static void RegisterGrowthRateType(asIScriptEngine* non_null engine);
|
||||
static void RegisterGrowthRateLibrary(asIScriptEngine* non_null engine);
|
||||
|
||||
public:
|
||||
static void Register(asIScriptEngine* engine);
|
||||
static void Register(asIScriptEngine* non_null engine);
|
||||
};
|
||||
|
||||
#endif // PKMNLIB_REGISTERGROWTHRATETYPES_HPP
|
||||
|
||||
@@ -1,16 +1,17 @@
|
||||
#ifndef PKMNLIB_REGISTERITEMTYPES_HPP
|
||||
#define PKMNLIB_REGISTERITEMTYPES_HPP
|
||||
|
||||
#include <CreatureLib/Defines.hpp>
|
||||
#include <angelscript.h>
|
||||
|
||||
class RegisterItemTypes {
|
||||
static void RegisterItemCategoryEnum(asIScriptEngine* engine);
|
||||
static void RegisterBattleItemCategoryEnum(asIScriptEngine* engine);
|
||||
static void RegisterItemType(asIScriptEngine* engine);
|
||||
static void RegisterItemLibrary(asIScriptEngine* engine);
|
||||
static void RegisterItemCategoryEnum(asIScriptEngine* non_null engine);
|
||||
static void RegisterBattleItemCategoryEnum(asIScriptEngine* non_null engine);
|
||||
static void RegisterItemType(asIScriptEngine* non_null engine);
|
||||
static void RegisterItemLibrary(asIScriptEngine* non_null engine);
|
||||
|
||||
public:
|
||||
static void Register(asIScriptEngine* engine);
|
||||
static void Register(asIScriptEngine* non_null engine);
|
||||
};
|
||||
|
||||
#endif // PKMNLIB_REGISTERITEMTYPES_HPP
|
||||
|
||||
@@ -1,16 +1,17 @@
|
||||
#ifndef PKMNLIB_REGISTERMOVETYPES_HPP
|
||||
#define PKMNLIB_REGISTERMOVETYPES_HPP
|
||||
|
||||
#include <CreatureLib/Defines.hpp>
|
||||
#include <angelscript.h>
|
||||
|
||||
class RegisterMoveTypes {
|
||||
static void RegisterMoveCategory(asIScriptEngine* engine);
|
||||
static void RegisterMoveTarget(asIScriptEngine* engine);
|
||||
static void RegisterMoveType(asIScriptEngine* engine);
|
||||
static void RegisterMoveLibrary(asIScriptEngine* engine);
|
||||
static void RegisterMoveCategory(asIScriptEngine* non_null engine);
|
||||
static void RegisterMoveTarget(asIScriptEngine* non_null engine);
|
||||
static void RegisterMoveType(asIScriptEngine* non_null engine);
|
||||
static void RegisterMoveLibrary(asIScriptEngine* non_null engine);
|
||||
|
||||
public:
|
||||
static void Register(asIScriptEngine* engine);
|
||||
static void Register(asIScriptEngine* non_null engine);
|
||||
};
|
||||
|
||||
#endif // PKMNLIB_REGISTERMOVETYPES_HPP
|
||||
|
||||
@@ -1,19 +1,20 @@
|
||||
#ifndef PKMNLIB_REGISTERSPECIESTYPES_HPP
|
||||
#define PKMNLIB_REGISTERSPECIESTYPES_HPP
|
||||
|
||||
#include <CreatureLib/Defines.hpp>
|
||||
#include <angelscript.h>
|
||||
|
||||
class RegisterSpeciesTypes {
|
||||
public:
|
||||
static void Register(asIScriptEngine* engine);
|
||||
static void Register(asIScriptEngine* non_null engine);
|
||||
|
||||
private:
|
||||
static void RegisterGenderEnum(asIScriptEngine* engine);
|
||||
static void RegisterStatisticEnum(asIScriptEngine* engine);
|
||||
static void RegisterSpeciesType(asIScriptEngine* engine);
|
||||
static void RegisterFormeType(asIScriptEngine* engine);
|
||||
static void RegisterEvolutionData(asIScriptEngine* engine);
|
||||
static void RegisterSpeciesLibrary(asIScriptEngine* engine);
|
||||
static void RegisterGenderEnum(asIScriptEngine* non_null engine);
|
||||
static void RegisterStatisticEnum(asIScriptEngine* non_null engine);
|
||||
static void RegisterSpeciesType(asIScriptEngine* non_null engine);
|
||||
static void RegisterFormeType(asIScriptEngine* non_null engine);
|
||||
static void RegisterEvolutionData(asIScriptEngine* non_null engine);
|
||||
static void RegisterSpeciesLibrary(asIScriptEngine* non_null engine);
|
||||
};
|
||||
|
||||
#endif // PKMNLIB_REGISTERSPECIESTYPES_HPP
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
#ifndef PKMNLIB_REGISTERSTATICLIBRARYTYPES_HPP
|
||||
#define PKMNLIB_REGISTERSTATICLIBRARYTYPES_HPP
|
||||
|
||||
#include <CreatureLib/Defines.hpp>
|
||||
#include <angelscript.h>
|
||||
|
||||
class RegisterStaticLibraryTypes {
|
||||
static void RegisterLibrarySettingsType(asIScriptEngine* engine);
|
||||
static void RegisterLibraryType(asIScriptEngine* engine);
|
||||
static void RegisterLibrarySettingsType(asIScriptEngine* non_null engine);
|
||||
static void RegisterLibraryType(asIScriptEngine* non_null engine);
|
||||
|
||||
public:
|
||||
static void Register(asIScriptEngine* engine);
|
||||
static void Register(asIScriptEngine* non_null engine);
|
||||
};
|
||||
|
||||
#endif // PKMNLIB_REGISTERSTATICLIBRARYTYPES_HPP
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
#ifndef PKMNLIB_REGISTERTYPELIBRARY_HPP
|
||||
#define PKMNLIB_REGISTERTYPELIBRARY_HPP
|
||||
|
||||
#include <CreatureLib/Defines.hpp>
|
||||
#include <angelscript.h>
|
||||
|
||||
class RegisterTypeLibrary {
|
||||
static void RegisterTypeLibraryType(asIScriptEngine* engine);
|
||||
static void RegisterTypeLibraryType(asIScriptEngine* non_null engine);
|
||||
|
||||
public:
|
||||
static void Register(asIScriptEngine* engine);
|
||||
static void Register(asIScriptEngine* non_null engine);
|
||||
};
|
||||
|
||||
#endif // PKMNLIB_REGISTERTYPELIBRARY_HPP
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
template <typename T> class NativeArray {
|
||||
private:
|
||||
const T* _array;
|
||||
const T* non_null _array;
|
||||
std::atomic<u64> _refCount;
|
||||
|
||||
void AddRef() { _refCount++; }
|
||||
@@ -20,13 +20,13 @@ private:
|
||||
~NativeArray() = default;
|
||||
|
||||
public:
|
||||
explicit NativeArray(const T* array) : _array(array), _refCount(1) {}
|
||||
explicit NativeArray(const T* non_null array) : _array(array), _refCount(1) {}
|
||||
|
||||
size_t Length() const { return _array->Count(); }
|
||||
|
||||
[[nodiscard]] void* At(size_t index) { return _array->At(index).GetRaw(); }
|
||||
[[nodiscard]] void* nullable At(size_t index) { return _array->At(index).GetRaw(); }
|
||||
|
||||
static void Register(asIScriptEngine* engine) {
|
||||
static void Register(asIScriptEngine* non_null engine) {
|
||||
Ensure(engine->RegisterObjectType("narray<class T>", sizeof(NativeArray), asOBJ_REF | asOBJ_TEMPLATE) >= 0);
|
||||
|
||||
Ensure(engine->RegisterObjectBehaviour("narray<T>", asBEHAVE_ADDREF, "void f()", asMETHOD(NativeArray, AddRef),
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
#ifndef PKMNLIB_REFCAST_HPP
|
||||
#define PKMNLIB_REFCAST_HPP
|
||||
template <class A, class B> B* refCast(A* a) {
|
||||
#include <CreatureLib/Defines.hpp>
|
||||
|
||||
template <class A, class B> B* nullable refCast(A* nullable a) {
|
||||
if (!a)
|
||||
return 0;
|
||||
B* b = dynamic_cast<B*>(a);
|
||||
|
||||
Reference in New Issue
Block a user