#pragma once

#include "ItemType.h"
#include "ItemSkill.h"

class PlayerHandItemType : public ItemType
{
    REGISTRABLE( PlayerHandItemType )

protected:
    void loadSuperItemSkill( ItemSkill* zSkill, Framework::StreamReader* zReader ) const override;
    void saveSuperItemSkill( const ItemSkill* zSkill, Framework::StreamWriter* zWriter ) const override;

public:
    PlayerHandItemType();
    Item* createItem() const override;
    ItemSkill* createDefaultItemSkill() const override;
};
REGISTER( PlayerHandItemType, ItemType )

class PlayerHandLevelUpRule : public ItemSkillLevelUpRule
{
public:
    PlayerHandLevelUpRule();
    void applyOn( ItemSkill* zSkill ) override;
};

class PlayerHandSkill : public ItemSkill
{
public:
    PlayerHandSkill();
    void use( Entity* zActor, Item* zUsedItem, Block* zTarget ) override;
    void use( Entity* zActor, Item* zUsedItem, Entity* zTarget ) override;
};