diff options
Diffstat (limited to 'source/cItem.h')
-rw-r--r-- | source/cItem.h | 228 |
1 files changed, 114 insertions, 114 deletions
diff --git a/source/cItem.h b/source/cItem.h index 28eed0d42..0f4aa6b70 100644 --- a/source/cItem.h +++ b/source/cItem.h @@ -1,114 +1,114 @@ -#pragma once
-
-#include "Defines.h"
-#include "BlockID.h"
-
-namespace Json
-{
- class Value;
-};
-
-
-
-
-
-// tolua_begin
-class cItem
-{
-public:
- cItem( ENUM_ITEM_ID a_ItemID = E_ITEM_EMPTY, char a_ItemCount = 0, short a_ItemHealth = 0 )
- : m_ItemID ( a_ItemID )
- , m_ItemCount ( a_ItemCount )
- , m_ItemHealth ( a_ItemHealth )
- {
- if(!IsValidItem( m_ItemID ) ) m_ItemID = E_ITEM_EMPTY;
- }
- void Empty()
- {
- m_ItemID = E_ITEM_EMPTY;
- m_ItemCount = 0;
- m_ItemHealth = 0;
- }
- void Clear(void)
- {
- m_ItemID = E_ITEM_EMPTY;
- m_ItemCount = 0;
- m_ItemHealth = 0;
- }
- bool IsEmpty(void) const
- {
- return (m_ItemID <= 0 || m_ItemCount <= 0);
- }
- bool Equals( cItem & a_Item ) const
- {
- return ( (m_ItemID == a_Item.m_ItemID) && (m_ItemHealth == a_Item.m_ItemHealth) );
- }
-
- // TODO Sorry for writing the functions in the header. But somehow it doesn´t worked when I put them into the cpp File :s
-
- inline int GetMaxDuration(void) const
- {
- switch(m_ItemID)
- {
- case 256: return 251;
- case 257: return 251;
- case 258: return 251;
- case 259: return 65; //Lighter / Flint and Steel
- case 267: return 251;
- case 268: return 60;
- case 269: return 60;
- case 270: return 60;
- case 271: return 60;
- case 272: return 132;
- case 273: return 132;
- case 274: return 132;
- case 275: return 132;
- case 276: return 1563;
- case 277: return 1563;
- case 278: return 1563;
- case 279: return 1563;
- case 283: return 32;
- case 284: return 32;
- case 285: return 32;
- case 286: return 32;
- case 290: return 60;
- case 291: return 132;
- case 292: return 251;
- case 293: return 1563;
- case 294: return 32;
- case 359: return 251;
- default: return 0;
- }
- }
-
- // Damages a weapon / tool. Returns true when destroyed
- inline bool DamageItem()
- {
- if (HasDuration())
- {
- m_ItemHealth++;
- if(m_ItemHealth >= GetMaxDuration())
- return true;
- }
- return false;
- }
-
- inline bool HasDuration() { return GetMaxDuration() > 0; }
-
- void GetJson( Json::Value & a_OutValue ) const;
- void FromJson( const Json::Value & a_Value );
-
- static bool IsEnchantable(ENUM_ITEM_ID item);
-
- ENUM_ITEM_ID m_ItemID;
- char m_ItemCount;
- short m_ItemHealth;
-
-};
-// tolua_end
-
-typedef std::vector<cItem> cItems;
-
-
-
-
+#pragma once + +#include "Defines.h" +#include "BlockID.h" + +namespace Json +{ + class Value; +}; + + + + + +// tolua_begin +class cItem +{ +public: + cItem( ENUM_ITEM_ID a_ItemID = E_ITEM_EMPTY, char a_ItemCount = 0, short a_ItemHealth = 0 ) + : m_ItemID ( a_ItemID ) + , m_ItemCount ( a_ItemCount ) + , m_ItemHealth ( a_ItemHealth ) + { + if(!IsValidItem( m_ItemID ) ) m_ItemID = E_ITEM_EMPTY; + } + void Empty() + { + m_ItemID = E_ITEM_EMPTY; + m_ItemCount = 0; + m_ItemHealth = 0; + } + void Clear(void) + { + m_ItemID = E_ITEM_EMPTY; + m_ItemCount = 0; + m_ItemHealth = 0; + } + bool IsEmpty(void) const + { + return (m_ItemID <= 0 || m_ItemCount <= 0); + } + bool Equals( cItem & a_Item ) const + { + return ( (m_ItemID == a_Item.m_ItemID) && (m_ItemHealth == a_Item.m_ItemHealth) ); + } + + // TODO Sorry for writing the functions in the header. But somehow it doesn´t worked when I put them into the cpp File :s + + inline int GetMaxDuration(void) const + { + switch(m_ItemID) + { + case 256: return 251; + case 257: return 251; + case 258: return 251; + case 259: return 65; //Lighter / Flint and Steel + case 267: return 251; + case 268: return 60; + case 269: return 60; + case 270: return 60; + case 271: return 60; + case 272: return 132; + case 273: return 132; + case 274: return 132; + case 275: return 132; + case 276: return 1563; + case 277: return 1563; + case 278: return 1563; + case 279: return 1563; + case 283: return 32; + case 284: return 32; + case 285: return 32; + case 286: return 32; + case 290: return 60; + case 291: return 132; + case 292: return 251; + case 293: return 1563; + case 294: return 32; + case 359: return 251; + default: return 0; + } + } + + // Damages a weapon / tool. Returns true when destroyed + inline bool DamageItem() + { + if (HasDuration()) + { + m_ItemHealth++; + if(m_ItemHealth >= GetMaxDuration()) + return true; + } + return false; + } + + inline bool HasDuration() { return GetMaxDuration() > 0; } + + void GetJson( Json::Value & a_OutValue ) const; + void FromJson( const Json::Value & a_Value ); + + static bool IsEnchantable(ENUM_ITEM_ID item); + + ENUM_ITEM_ID m_ItemID; + char m_ItemCount; + short m_ItemHealth; + +}; +// tolua_end + +typedef std::vector<cItem> cItems; + + + + |