cItem: Added useful utility functions
git-svn-id: http://mc-server.googlecode.com/svn/trunk@1599 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
parent
b984da5a9e
commit
b929efc9a6
@ -3,6 +3,7 @@
|
||||
|
||||
#include "Item.h"
|
||||
#include <json/json.h>
|
||||
#include "Items/ItemHandler.h"
|
||||
|
||||
|
||||
|
||||
@ -19,6 +20,20 @@ cItem cItem::CopyOne(void) const
|
||||
|
||||
|
||||
|
||||
cItem & cItem::AddCount(char a_AmountToAdd)
|
||||
{
|
||||
m_ItemCount += a_AmountToAdd;
|
||||
if (m_ItemCount <= 0)
|
||||
{
|
||||
Empty();
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
short cItem::GetMaxDamage(void) const
|
||||
{
|
||||
switch (m_ItemType)
|
||||
@ -97,6 +112,25 @@ bool cItem::IsStackableWith(const cItem & a_OtherStack) const
|
||||
|
||||
|
||||
|
||||
bool cItem::IsFullStack(void) const
|
||||
{
|
||||
return (m_ItemCount >= ItemHandler(m_ItemType)->GetMaxStackSize());
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// Returns the cItemHandler responsible for this item type
|
||||
cItemHandler * cItem::GetHandler(void) const
|
||||
{
|
||||
return ItemHandler(m_ItemType);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cItem::GetJson(Json::Value & a_OutValue) const
|
||||
{
|
||||
a_OutValue["ID"] = m_ItemType;
|
||||
|
@ -16,6 +16,9 @@
|
||||
|
||||
|
||||
|
||||
// fwd:
|
||||
class cItemHandler;
|
||||
|
||||
namespace Json
|
||||
{
|
||||
class Value;
|
||||
@ -110,6 +113,9 @@ public:
|
||||
/// Returns a copy of this item with m_ItemCount set to 1. Useful to preserve enchantments etc. on stacked items
|
||||
cItem CopyOne(void) const;
|
||||
|
||||
/// Adds the specified count to this object and returns the reference to self (useful for chaining)
|
||||
cItem & AddCount(char a_AmountToAdd);
|
||||
|
||||
/// Returns the maximum damage value that this item can have; zero if damage is not applied
|
||||
short GetMaxDamage(void) const;
|
||||
|
||||
@ -121,13 +127,25 @@ public:
|
||||
/// Returns true if this itemstack can stack with the specified stack (types match, enchantments etc.) ItemCounts are ignored!
|
||||
bool IsStackableWith(const cItem & a_OtherStack) const;
|
||||
|
||||
// tolua_end
|
||||
void GetJson( Json::Value & a_OutValue ) const;
|
||||
void FromJson( const Json::Value & a_Value );
|
||||
// tolua_begin
|
||||
/// Returns true if the item is stacked up to its maximum stacking.
|
||||
bool IsFullStack(void) const;
|
||||
|
||||
// tolua_end
|
||||
|
||||
/// Returns the cItemHandler responsible for this item type
|
||||
cItemHandler * GetHandler(void) const;
|
||||
|
||||
/// Saves the item data into JSON representation
|
||||
void GetJson(Json::Value & a_OutValue) const;
|
||||
|
||||
/// Loads the item data from JSON representation
|
||||
void FromJson(const Json::Value & a_Value);
|
||||
|
||||
/// Returns true if the specified item type is enchantable (as per 1.2.5 protocol requirements)
|
||||
static bool IsEnchantable(short a_ItemType);
|
||||
|
||||
// tolua_begin
|
||||
|
||||
short m_ItemType;
|
||||
char m_ItemCount;
|
||||
short m_ItemDamage;
|
||||
|
Loading…
Reference in New Issue
Block a user