#pragma once #include "BasicTool.h" #include "ItemSkill.h" #include "ItemType.h" class AxeToolItemType : public BasicToolItemType { protected: void loadSuperItemSkill( ItemSkill* zSkill, Framework::StreamReader* zReader) const override; void saveSuperItemSkill(const ItemSkill* zSkill, Framework::StreamWriter* zWriter) const override; public: AxeToolItemType(); Item* createItem() const override; ItemSkill* createDefaultItemSkill() const override; }; class AxeToolLevelUpRule : public ItemSkillLevelUpRule { public: AxeToolLevelUpRule(); void applyOn(ItemSkill* zSkill) override; }; class AxeToolSkill : public ItemSkill { private: int level; float xp; float maxXP; public: AxeToolSkill(); bool use(Entity* zActor, Item* zUsedItem, Block* zTarget) override; bool use(Entity* zActor, Item* zUsedItem, Entity* zTarget) override; friend AxeToolItemType; friend AxeToolLevelUpRule; };