ItemSkill.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #pragma once
  2. #include "Reader.h"
  3. #include <JSON.h>
  4. #include <ReferenceCounter.h>
  5. class ItemType;
  6. class ItemSkill;
  7. class Block;
  8. class Entity;
  9. class Dimension;
  10. class ItemSkillLevelUpRule : public virtual Framework::ReferenceCounter
  11. {
  12. public:
  13. virtual void applyOn( ItemSkill *zSkill ) = 0;
  14. };
  15. class ItemSkill : public virtual Framework::ReferenceCounter
  16. {
  17. public:
  18. virtual void use( Entity *zActor, Block *zTarget, Dimension *zDimension ) = 0;
  19. virtual void use( Entity *zActor, Entity *zTarget, Dimension *zDimension ) = 0;
  20. };
  21. class BasicItemSkill : public ItemSkill
  22. {
  23. protected:
  24. int level;
  25. float xp;
  26. float maxXP;
  27. float durabilityModifier;
  28. float speedModifier;
  29. float luckModifier;
  30. float staminaModifier;
  31. float hungerModifier;
  32. BasicItemSkill( float maxXp = 100.f, float durabilityModifier = 1.f, float speedModifier = 1.f, float luckModifier = 1.f, float staminaModifier = 1.f, float hungerModifier = 1.f, float xpIncrease = 1.1f );
  33. public:
  34. virtual void use( Entity *zActor, Block *zTarget, Dimension *zDimension ) override;
  35. virtual void use( Entity *zActor, Entity *zTarget, Dimension *zDimension ) override;
  36. friend ItemType;
  37. };