Finally unified all of my events into one place.

This commit is contained in:
Zed A. Shaw 2025-12-17 12:51:15 -05:00
parent 6c34fea64a
commit c618a4828f
30 changed files with 215 additions and 216 deletions

View file

@ -7,11 +7,11 @@ namespace gui {
using enum Event;
using enum State;
gui::Event Router::process_event(std::optional<sf::Event> ev) {
$next_event = gui::Event::TICK;
game::Event Router::process_event(std::optional<sf::Event> ev) {
$next_event = game::Event::TICK;
if(ev->is<sf::Event::Closed>()) {
return gui::Event::QUIT;
return game::Event::QUIT;
}
if(const auto* mouse = ev->getIf<sf::Event::MouseButtonPressed>()) {
@ -58,18 +58,18 @@ namespace gui {
switch(ev) {
case MOUSE_DOWN:
move_count=0;
set_event(gui::Event::TICK);
set_event(game::Event::TICK);
state(State::MOUSE_ACTIVE);
break;
case MOUSE_UP:
set_event(gui::Event::MOUSE_CLICK);
set_event(game::Event::MOUSE_CLICK);
state(State::IDLE);
break;
case MOUSE_MOVE:
set_event(gui::Event::MOUSE_MOVE);
set_event(game::Event::MOUSE_MOVE);
break;
case KEY_PRESS:
set_event(gui::Event::KEY_PRESS);
set_event(game::Event::KEY_PRESS);
break;
default:
dbc::sentinel(fmt::format("invalid event: {}", int(ev)));
@ -79,16 +79,16 @@ namespace gui {
void Router::MOUSE_ACTIVE(Event ev) {
switch(ev) {
case MOUSE_UP:
set_event(gui::Event::MOUSE_CLICK);
set_event(game::Event::MOUSE_CLICK);
state(State::IDLE);
break;
case MOUSE_MOVE:
move_count++;
set_event(gui::Event::MOUSE_DRAG);
set_event(game::Event::MOUSE_DRAG);
state(State::MOUSE_MOVING);
break;
case KEY_PRESS:
set_event(gui::Event::KEY_PRESS);
set_event(game::Event::KEY_PRESS);
state(State::IDLE);
break;
default:
@ -100,21 +100,21 @@ namespace gui {
switch(ev) {
case MOUSE_UP: {
dbc::check(move_count < $drag_tolerance, "mouse up but not in dragging state");
set_event(gui::Event::MOUSE_CLICK);
set_event(game::Event::MOUSE_CLICK);
state(State::IDLE);
} break;
case MOUSE_MOVE:
move_count++;
if(move_count < $drag_tolerance) {
set_event(gui::Event::MOUSE_DRAG);
set_event(game::Event::MOUSE_DRAG);
} else {
set_event(gui::Event::MOUSE_DRAG_START);
set_event(game::Event::MOUSE_DRAG_START);
state(State::MOUSE_DRAGGING);
}
break;
case KEY_PRESS:
set_event(gui::Event::KEY_PRESS);
set_event(game::Event::KEY_PRESS);
break;
default:
dbc::sentinel("invalid event");
@ -125,15 +125,15 @@ namespace gui {
void Router::MOUSE_DRAGGING(Event ev) {
switch(ev) {
case MOUSE_UP:
set_event(gui::Event::MOUSE_DROP);
set_event(game::Event::MOUSE_DROP);
state(State::IDLE);
break;
case MOUSE_MOVE:
move_count++;
set_event(gui::Event::MOUSE_DRAG);
set_event(game::Event::MOUSE_DRAG);
break;
case KEY_PRESS:
set_event(gui::Event::KEY_PRESS);
set_event(game::Event::KEY_PRESS);
break;
default:
dbc::sentinel("invalid events");