Item.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #pragma once
  2. #include "ItemType.h"
  3. #include "Reader.h"
  4. class ItemType;
  5. class Item : public virtual Framework::ReferenceCounter
  6. {
  7. protected:
  8. const ItemType* zType;
  9. float damage;
  10. float maxDamage;
  11. float durability;
  12. float maxDurability;
  13. bool eatable;
  14. bool placeable;
  15. bool equippable;
  16. bool solid;
  17. bool usable;
  18. int maxStackSize;
  19. Framework::Text name;
  20. Item( const ItemType* zType, const char* name );
  21. public:
  22. virtual void tick();
  23. const ItemType* zItemType() const;
  24. float getDamage() const;
  25. float getDurability() const;
  26. bool isUsable() const;
  27. bool isEatable() const;
  28. bool isPlaceable() const;
  29. bool isEquippable() const;
  30. bool isSolid() const;
  31. float getMaxDurability() const;
  32. int getMaxStackSize() const;
  33. float getMaxDamage() const;
  34. virtual bool canBeStackedWith( Item* zItem ) const;
  35. virtual void applyInventoryEffects( Entity* zTarget );
  36. virtual void removeInventoryEffects( Entity* zTarget );
  37. virtual void applyEquippedEffects( Entity* zTarget );
  38. virtual void removeEquippedEffects( Entity* zTarget );
  39. virtual void applyFoodEffects( Entity* zTarget );
  40. friend ItemType;
  41. };