Fixed different sized enums being a problem for AngelScript, minor fixes for Item class
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:
@@ -39,6 +39,13 @@ void RegisterMoveTypes::RegisterMoveTarget(asIScriptEngine* engine) {
|
||||
REGISTER_ENUM_VALUE(MoveTarget, CreatureLib::Library::AttackTarget, Self)
|
||||
}
|
||||
|
||||
// Hack to handle AngelScript not recognizing different sized enums on fields, and returning invalid values due to it.
|
||||
#define ENUM__SIZE_WRAPPER(name, type, func) \
|
||||
int32_t name(type* obj) { return static_cast<int32_t>(obj->func()); }
|
||||
|
||||
ENUM__SIZE_WRAPPER(Move_CategoryWrapper, PkmnLib::Library::MoveData, GetCategory)
|
||||
ENUM__SIZE_WRAPPER(Move_TargetWrapper, PkmnLib::Library::MoveData, GetTarget)
|
||||
|
||||
void RegisterMoveTypes::RegisterMoveType(asIScriptEngine* engine) {
|
||||
[[maybe_unused]] int r = engine->RegisterObjectType("MoveData", 0, asOBJ_REF | asOBJ_NOCOUNT);
|
||||
assert(r >= 0);
|
||||
@@ -49,7 +56,7 @@ void RegisterMoveTypes::RegisterMoveType(asIScriptEngine* engine) {
|
||||
asMETHOD(PkmnLib::Library::MoveData, GetType), asCALL_THISCALL);
|
||||
assert(r >= 0);
|
||||
r = engine->RegisterObjectMethod("MoveData", "MoveCategory get_Category() const property",
|
||||
asMETHOD(PkmnLib::Library::MoveData, GetCategory), asCALL_THISCALL);
|
||||
asFUNCTION(Move_CategoryWrapper), asCALL_CDECL_OBJLAST);
|
||||
assert(r >= 0);
|
||||
r = engine->RegisterObjectMethod("MoveData", "uint8 get_BasePower() const property",
|
||||
asMETHOD(PkmnLib::Library::MoveData, GetBasePower), asCALL_THISCALL);
|
||||
@@ -61,10 +68,10 @@ void RegisterMoveTypes::RegisterMoveType(asIScriptEngine* engine) {
|
||||
asMETHOD(PkmnLib::Library::MoveData, GetBaseUsages), asCALL_THISCALL);
|
||||
assert(r >= 0);
|
||||
r = engine->RegisterObjectMethod("MoveData", "MoveTarget get_Target() const property",
|
||||
asMETHOD(PkmnLib::Library::MoveData, GetTarget), asCALL_THISCALL);
|
||||
asFUNCTION(Move_TargetWrapper), asCALL_CDECL_OBJLAST);
|
||||
assert(r >= 0);
|
||||
r = engine->RegisterObjectMethod("MoveData", "int8 get_Priority() const property",
|
||||
asMETHOD(PkmnLib::Library::MoveData, GetTarget), asCALL_THISCALL);
|
||||
asMETHOD(PkmnLib::Library::MoveData, GetPriority), asCALL_THISCALL);
|
||||
assert(r >= 0);
|
||||
r = engine->RegisterObjectMethod("MoveData", "bool HasFlag(const string &in flag) const",
|
||||
asMETHOD(PkmnLib::Library::MoveData, HasFlag), asCALL_THISCALL);
|
||||
@@ -76,7 +83,6 @@ void RegisterMoveTypes::RegisterMoveLibrary(asIScriptEngine* engine) {
|
||||
r = engine->RegisterObjectMethod("MoveLibrary", "const MoveData@ GetMove(const string &in name) const",
|
||||
asMETHOD(PkmnLib::Library::MoveLibrary, GetMove), asCALL_THISCALL);
|
||||
assert(r >= 0);
|
||||
|
||||
}
|
||||
|
||||
#undef REGISTER_ENUM_VALUE
|
||||
@@ -3,7 +3,13 @@
|
||||
|
||||
#include <Library/Items/Item.hpp>
|
||||
namespace PkmnLib::Library {
|
||||
class Item : public CreatureLib::Library::Item {};
|
||||
class Item : public CreatureLib::Library::Item {
|
||||
public:
|
||||
Item(std::string name, CreatureLib::Library::ItemCategory category,
|
||||
CreatureLib::Library::BattleItemCategory battleCategory, int32_t price,
|
||||
std::unordered_set<std::string> flags)
|
||||
: CreatureLib::Library::Item(name, category, battleCategory, price, flags) {}
|
||||
};
|
||||
}
|
||||
|
||||
#endif // PKMNLIB_ITEM_HPP
|
||||
|
||||
Reference in New Issue
Block a user