#ifndef MAP_TOOL_HPP_
#define MAP_TOOL_HPP_

#include <Item/IEquipment.hpp>
#include <Material/Material.hpp>
#include <Utilities/Extern.hpp>

class MapView;

/**
 * @brief Base class for tools that can be used on the map.
 */
class MapTool
{
public:
    virtual Material& getIcon() = 0;
    virtual std::string getName() = 0;
    virtual void onMouseDown(MapView &mapView, Uint8 button, glm::ivec2 pos);
    virtual void onMouseUp(MapView &mapView, Uint8 button, glm::ivec2 pos);
    virtual void onMouseMoved(MapView &mapView, glm::ivec2 pos);
    virtual IEquipment::MapLevel getRequiredMapLevel() = 0;
};

#endif