#pragma once #include "ItemType.h" #include "Reader.h" class Item : public virtual Framework::ReferenceCounter { private: ItemType *zType; float damage; float maxDamage; float durability; float maxDurability; bool eatable; bool placeable; bool equippable; int maxStackSize; Framework::Text name; private: Item( ItemType *zType, float damage ); Item( ItemType *zType ); Item( Item *zClone ); Item( Framework::StreamReader *zItemInfo ); public: virtual void tick(); const ItemType *zItemType() const; float getDamage() const; float getDurability() const; bool isEatable() const; bool isPlaceable() const; bool isEquippable() const; float getMaxDurability() const; int getMaxStackSize() const; float getMaxDamage() const; virtual void applyInventoryEffects( Entity *zTarget ); virtual void removeInventoryEffects( Entity *zTarget ); virtual void applyEquippedEffects( Entity *zTarget ); virtual void removeEquippedEffects( Entity *zTarget ); virtual void applyFoodEffects( Entity *zTarget ); friend ItemType; };