#pragma once #include "Reader.h" #include #include class ItemType; class ItemSkill; class Block; class Entity; class Dimension; class ItemSkillLevelUpRule : public virtual Framework::ReferenceCounter { public: virtual void applyOn( ItemSkill* zSkill ) = 0; }; class ItemSkill : public virtual Framework::ReferenceCounter { public: virtual void use( Entity* zActor, Block* zTarget, Dimension* zDimension ) = 0; virtual void use( Entity* zActor, Entity* zTarget, Dimension* zDimension ) = 0; }; class BasicItemSkill : public ItemSkill { protected: int level; float xp; float maxXP; float durabilityModifier; float speedModifier; float luckModifier; float staminaModifier; float hungerModifier; 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 ); public: virtual void use( Entity* zActor, Block* zTarget, Dimension* zDimension ) override; virtual void use( Entity* zActor, Entity* zTarget, Dimension* zDimension ) override; friend ItemType; };