#ifndef SHOES_HPP_
#define SHOES_HPP_

#include <Item/IEquipment.hpp>
#include <Item/StatefulItem/StatefulItem.hpp>

class Shoes final : public StatefulItem<int>, public IEquipment
{
private:
    std::string displayName;
    Material &icon;
    int maxUses;
    float acceleration;

    glm::vec4 getUsesColor(int uses);

public:
    Shoes(std::string name, std::string displayName, Material &icon, int maxUses, float acceleration);

    virtual void draw(GraphicsContext &context, int x, int y, const ItemStack &stack) override;
    virtual std::string getDisplayName(const ItemStack &stack) override;
    virtual void draw3D(GraphicsContext &context, WorldDisplay &worldDisplay, glm::vec3 pos, ItemStack &stack) override;
    virtual void drawFlat(GraphicsContext &context, WorldDisplay &worldDisplay, glm::mat4 matrix, ItemStack &stack) override;
    virtual float generateAcceleration(ItemStack &stack) override;
    virtual void getExtraToolTipLines(const ItemStack &stack, ToolTip &tip) override;
};

#endif