1
0
cuberite-2a/source/Inventory.h
sebi.noreply@gmail.com e33e9111ab Fixed issues with pickups.
* Now when picking up max. stack amount is checked.
* Added cInventory::AddItemAnyAmount() which will not fail if it cannot add all items (it will just modify amount)
* If there is no space in inventory and picking up stacked items, it will try to fill stacks already in inventory, partially picking up the item.
* When closing inventory player will drop any items it's currently 'dragging'

git-svn-id: http://mc-server.googlecode.com/svn/trunk@1008 0a769ca7-a7f5-676a-18bf-c427514a06d6
2012-10-24 12:48:25 +00:00

90 lines
2.3 KiB
C++

#pragma once
#include "Item.h"
namespace Json
{
class Value;
};
class cClientHandle;
class cPlayer;
class cInventory //tolua_export
{ //tolua_export
public:
cInventory(cPlayer & a_Owner);
~cInventory();
void Clear(); //tolua_export
cItem* GetSlotsForType( int a_Type );
int GetSlotCountForType( int a_Type );
bool AddItem( cItem & a_Item ); //tolua_export
bool AddItemAnyAmount( cItem & a_Item ); //tolua_export
bool RemoveItem( cItem & a_Item ); //tolua_export
void SaveToJson(Json::Value & a_Value);
bool LoadFromJson(Json::Value & a_Value);
void SendWholeInventory(cClientHandle & a_Client);
cItem * GetSlot(int a_SlotNum ); //tolua_export
cItem * GetSlots(void) { return m_Slots; }
const cItem * GetSlots(void) const { return m_Slots; }
cItem * GetFromHotBar(int a_HotBarSlotNum); //tolua_export
cItem & GetEquippedItem(void); //tolua_export
const cItem & GetEquippedItem(void) const;
void SetEquippedSlot(int a_SlotNum); //tolua_export
short GetEquippedSlot(void) { return m_EquippedSlot; } //tolua_export
void SendSlot( int a_SlotNum ); //tolua_export
/// Returns how many items of the specified type would fit into the slot range specified
int HowManyCanFit(short a_ItemType, short a_ItemDamage, int a_BeginSlot, int a_EndSlot);
/// Moves items, fitting them into the slot range specified, up to a_Count items. Returns the number of items moved
int MoveItem(short a_ItemType, short a_ItemDamage, int a_Count, int a_BeginSlot, int a_EndSlot);
static const unsigned int c_NumSlots = 45;
static const unsigned int c_MainSlots = 27;
static const unsigned int c_HotSlots = 9;
static const unsigned int c_CraftSlots = 4;
static const unsigned int c_ArmorSlots = 4;
static const unsigned int c_CraftOffset = 0;
static const unsigned int c_ArmorOffset = 5;
static const unsigned int c_MainOffset = 9;
static const unsigned int c_HotOffset = 36;
protected:
bool AddToBar( cItem & a_Item, const int a_Offset, const int a_Size, bool* a_bChangedSlots, int a_Mode = 0 );
cItem m_Slots[c_NumSlots];
cItem * m_MainSlots;
cItem * m_CraftSlots;
cItem * m_ArmorSlots;
cItem * m_HotSlots;
cItem * m_EquippedItem;
short m_EquippedSlot;
cPlayer & m_Owner;
}; //tolua_export