#ifndef INTERACTABLEWIDGET_HPP_INCLUDED
#define INTERACTABLEWIDGET_HPP_INCLUDED

#include "../../Core/Classes/Widget.hpp"
#include "../../Core/Classes/ItemInfo.hpp"
#include "../../Core/Types/Tile.hpp"
#include "../../Core/Types/Point.hpp"
#include "../../Core/Types/Box.hpp"
#include "../../Core/Types/Convex.hpp"
#include "../../Core/Input.hpp"
#include <cstdint>

namespace Interactable
{
    class Widget : public Internal::Widget
    {
        public:
            Widget(const Internal::Widget& W);
            Widget(const Widget& W);

            bool IsHidden() const;
            bool IsVisible() const;
            std::vector<std::int32_t> GetNormalizedItemIDs() const;

            Box GetBox() const;
            Point GetPoint() const;
            Point GetPoint(double PointGenAccuracy) const;

            bool Hover() const;
            bool Interact(const Button& B = BUTTON_LEFT) const;
            bool Interact(const std::string& Option) const;
            bool Interact(const std::vector<std::string>& Options) const;

            operator Internal::Widget() const;
    };
}

#endif // INTERACTABLEWIDGET_HPP_INCLUDED
