eqemu-server/zone/lua_inventory.h
2018-08-17 23:54:24 -05:00

71 lines
2.2 KiB
C++

#ifndef EQEMU_LUA_INVENTORY_H
#define EQEMU_LUA_INVENTORY_H
#ifdef LUA_EQEMU
#include "lua_ptr.h"
class Lua_ItemInst;
class Lua_Item;
namespace EQEmu
{
class InventoryProfile;
}
namespace luabind {
struct scope;
}
luabind::scope lua_register_inventory();
// This class should be deprecated due to the nature of inventory actions.
// Direct manipulation of the inventory system bypasses the client management
// of database calls and can lead to lost items, duplicated items and/or
// desync'd inventories, if not handled correctly.
class Lua_Inventory : public Lua_Ptr<EQEmu::InventoryProfile>
{
typedef EQEmu::InventoryProfile NativeType;
public:
Lua_Inventory() : Lua_Ptr(nullptr) { }
Lua_Inventory(EQEmu::InventoryProfile *d) : Lua_Ptr(d) { }
virtual ~Lua_Inventory() { }
operator EQEmu::InventoryProfile*() {
return reinterpret_cast<EQEmu::InventoryProfile*>(GetLuaPtrData());
}
Lua_ItemInst GetItem(int slot_id);
Lua_ItemInst GetItem(int slot_id, int bag_slot);
int PutItem(int slot_id, Lua_ItemInst item);
int PushCursor(Lua_ItemInst item);
bool SwapItem(int source_slot, int destination_slot);
bool DeleteItem(int slot_id);
bool DeleteItem(int slot_id, int quantity);
bool CheckNoDrop(int slot_id);
Lua_ItemInst PopItem(int slot_id);
int HasItem(int item_id);
int HasItem(int item_id, int quantity);
int HasItem(int item_id, int quantity, int where);
bool HasSpaceForItem(Lua_Item item, int quantity);
int HasItemByUse(int use);
int HasItemByUse(int use, uint8 quantity);
int HasItemByUse(int use, uint8 quantity, uint8 where);
int HasItemByLoreGroup(uint32 loregroup);
int HasItemByLoreGroup(uint32 loregroup, int where);
int FindFreeSlot(bool for_bag, bool try_cursor);
int FindFreeSlot(bool for_bag, bool try_cursor, int min_size);
int FindFreeSlot(bool for_bag, bool try_cursor, int min_size, bool is_arrow);
int CalcSlotId(int slot_id);
int CalcSlotId(int slot_id, int bag_slot);
int CalcBagIdx(int slot_id);
int CalcSlotFromMaterial(int material);
int CalcMaterialFromSlot(int equipslot);
bool CanItemFitInContainer(Lua_Item item, Lua_Item container);
bool SupportsContainers(int slot_id);
int GetSlotByItemInst(Lua_ItemInst inst);
};
#endif
#endif