#pragma once #include "events.hpp" #include "simplefsm.hpp" #include namespace gui { namespace routing { enum class State { START, IDLE, MOUSE_ACTIVE, MOUSE_MOVING, }; enum class Event { STARTED=0, MOUSE_DOWN=1, MOUSE_UP=2, MOUSE_MOVE=3, KEY_PRESS=4 }; class Router : public DeadSimpleFSM { public: sf::Vector2i position; sf::Keyboard::Scancode scancode; gui::Event $next_event = gui::Event::TICK; void event(Event ev); void START(Event ev); void IDLE(Event ev); void MOUSE_ACTIVE(Event ev); void MOUSE_MOVING(Event ev); gui::Event process_event(std::optional ev); void set_event(gui::Event ev) { $next_event = ev; } }; } }