#include "../../src/Library/Items/Item.hpp" #include "../Core.hpp" using namespace CreatureLib::Library; using ConstString = Arbutils::CaseInsensitiveConstString; export Item* CreatureLib_Item_Construct(const char* name, ItemCategory category, BattleItemCategory battleCategory, int32_t price, const char* flags[], size_t flagsCount) { std::unordered_set conversedFlags(flagsCount); for (size_t i = 0; i < flagsCount; i++) { conversedFlags.insert(ConstString::GetHash(flags[i])); } return new Item(ConstString(name), category, battleCategory, price, conversedFlags); }; export void CreatureLib_Item_Destruct(const Item* p) { delete p; } #define SIMPLE_GET_FUNC(type, name, returnType) \ export returnType CreatureLib_##type##_##name(const type* p) { return p->name(); } export const char* CreatureLib_Item_GetName(const Item* p) { return p->GetName().c_str(); } SIMPLE_GET_FUNC(Item, GetCategory, ItemCategory); SIMPLE_GET_FUNC(Item, GetBattleCategory, BattleItemCategory); SIMPLE_GET_FUNC(Item, GetPrice, int32_t); export bool CreatureLib_Item_HasFlag(const Item* p, const char* key) { return p->HasFlag(ConstString::GetHash(key)); } #undef SIMPLE_GET_FUNC