1
0

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:
madmaxoft@gmail.com 2013-06-16 14:12:25 +00:00
parent b984da5a9e
commit b929efc9a6
2 changed files with 55 additions and 3 deletions

View File

@ -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;

View File

@ -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;
@ -120,14 +126,26 @@ 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;
/// Returns true if the item is stacked up to its maximum stacking.
bool IsFullStack(void) const;
// tolua_end
void GetJson( Json::Value & a_OutValue ) const;
void FromJson( const Json::Value & a_Value );
// tolua_begin
/// 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;