Mario editor: use visitors
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
#ifndef EDITOR_VISITOR_H
|
||||
#define EDITOR_VISITOR_H
|
||||
|
||||
#include "../sdlpp/sdlpp_visitor.hpp"
|
||||
#include "../sdlpp/sdlpp_geometry.hpp"
|
||||
#include <memory>
|
||||
|
||||
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<int> getEditBoxIndexes() {
|
||||
return edit_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);
|
||||
|
||||
private:
|
||||
uint64_t select_flags = 0;
|
||||
bool edit_box = false;
|
||||
SDLPP::Vec2D<int> edit_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
|
||||
Reference in New Issue
Block a user