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 "Item.h"
|
||||||
#include <json/json.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
|
short cItem::GetMaxDamage(void) const
|
||||||
{
|
{
|
||||||
switch (m_ItemType)
|
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
|
void cItem::GetJson(Json::Value & a_OutValue) const
|
||||||
{
|
{
|
||||||
a_OutValue["ID"] = m_ItemType;
|
a_OutValue["ID"] = m_ItemType;
|
||||||
|
@ -16,6 +16,9 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// fwd:
|
||||||
|
class cItemHandler;
|
||||||
|
|
||||||
namespace Json
|
namespace Json
|
||||||
{
|
{
|
||||||
class Value;
|
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
|
/// Returns a copy of this item with m_ItemCount set to 1. Useful to preserve enchantments etc. on stacked items
|
||||||
cItem CopyOne(void) const;
|
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
|
/// Returns the maximum damage value that this item can have; zero if damage is not applied
|
||||||
short GetMaxDamage(void) const;
|
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!
|
/// 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;
|
bool IsStackableWith(const cItem & a_OtherStack) const;
|
||||||
|
|
||||||
// tolua_end
|
/// Returns true if the item is stacked up to its maximum stacking.
|
||||||
void GetJson( Json::Value & a_OutValue ) const;
|
bool IsFullStack(void) const;
|
||||||
void FromJson( const Json::Value & a_Value );
|
|
||||||
// tolua_begin
|
|
||||||
|
|
||||||
|
// 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);
|
static bool IsEnchantable(short a_ItemType);
|
||||||
|
|
||||||
|
// tolua_begin
|
||||||
|
|
||||||
short m_ItemType;
|
short m_ItemType;
|
||||||
char m_ItemCount;
|
char m_ItemCount;
|
||||||
short m_ItemDamage;
|
short m_ItemDamage;
|
||||||
|
Loading…
Reference in New Issue
Block a user