#ifndef EDITOR_VISITOR_H #define EDITOR_VISITOR_H #include "../sdlpp/sdlpp_visitor.hpp" #include "../sdlpp/sdlpp_geometry.hpp" #include class MouseVisitor : public SDLPP::Visitor { public: MouseVisitor() {} virtual void visit( const SDLPP::RenderObject &obj ) override; virtual void setFromId( uint64_t /*UNUSED*/ ) override {} virtual uint64_t getFromId() override {return 0;} uint64_t getFlags() { return select_flags; } bool foundEditBox() { return edit_box; } SDLPP::Vec2D getEditBoxIndexes() { return edit_box_location; } bool foundToolBox() { return tool_box; } SDLPP::Vec2D getToolBoxIndexes() { return tool_box_location; } virtual void setVisitorType( uint64_t type ) override { _type = type; } virtual uint64_t getVisitorType() override { return _type; } static bool moveMapLeft(uint64_t flags); static bool moveMapRight(uint64_t flags); static bool moveToolsLeft(uint64_t flags); static bool moveToolsRight(uint64_t flags); private: uint64_t select_flags = 0; bool edit_box = false; bool tool_box = false; SDLPP::Vec2D edit_box_location = {-1, -1}; SDLPP::Vec2D tool_box_location = {-1, -1}; uint64_t _type; }; class ToolVisitor : public SDLPP::Visitor { public: ToolVisitor() {}; virtual void visit( const SDLPP::RenderObject &obj ) override; virtual void setFromId( uint64_t id ) override { source_id = id; } virtual uint64_t getFromId() override { return source_id; } virtual void setVisitorType( uint64_t type ) override { _type = type; } virtual uint64_t getVisitorType() override { return _type; } bool addBlock(); bool removeBlock(); private: bool remove_block = false; bool add_block = true; uint64_t source_id = 0; uint64_t _type = 0; }; #endif