Fix the mouse handler so that it uses the router mouse_mods.

This commit is contained in:
Zed A. Shaw 2026-05-27 12:49:02 -04:00
parent af4ee30ade
commit dc9f942912
2 changed files with 25 additions and 25 deletions

View file

@ -33,19 +33,19 @@ namespace gui {
void FSM::event(Event ev, std::any data) { void FSM::event(Event ev, std::any data) {
switch($state) { switch($state) {
FSM_STATE(State, START, ev); FSM_STATE(State, START, ev, data);
FSM_STATE(State, MOVING, ev); FSM_STATE(State, MOVING, ev, data);
FSM_STATE(State, ATTACKING, ev, data); FSM_STATE(State, ATTACKING, ev, data);
FSM_STATE(State, ROTATING, ev); FSM_STATE(State, ROTATING, ev, data);
FSM_STATE(State, IDLE, ev, data); FSM_STATE(State, IDLE, ev, data);
FSM_STATE(State, CUT_SCENE_PLAYING, ev, data); FSM_STATE(State, CUT_SCENE_PLAYING, ev, data);
FSM_STATE(State, BOSS_FIGHT, ev, data); FSM_STATE(State, BOSS_FIGHT, ev, data);
FSM_STATE(State, LOOTING, ev, data); FSM_STATE(State, LOOTING, ev, data);
FSM_STATE(State, END, ev); FSM_STATE(State, END, ev, data);
} }
} }
void FSM::START(Event ) { void FSM::START(Event ev, std::any data) {
$main_ui.update_level(); $main_ui.update_level();
$main_ui.init(); $main_ui.init();
$loot_ui.init(); $loot_ui.init();
@ -64,7 +64,7 @@ namespace gui {
state(State::IDLE); state(State::IDLE);
} }
void FSM::MOVING(Event ) { void FSM::MOVING(Event ev, std::any data) {
// this should be an optional that returns a point // this should be an optional that returns a point
if(auto move_to = $main_ui.play_move()) { if(auto move_to = $main_ui.play_move()) {
$systems.runMoving(*move_to); $systems.runMoving(*move_to);
@ -82,7 +82,7 @@ namespace gui {
} }
} }
void FSM::ROTATING(Event) { void FSM::ROTATING(Event ev, std::any data) {
if(auto aim = $main_ui.play_rotate()) { if(auto aim = $main_ui.play_rotate()) {
auto& player_pos = GameDB::player_position(); auto& player_pos = GameDB::player_position();
player_pos.aiming_at = *aim; player_pos.aiming_at = *aim;
@ -97,7 +97,7 @@ namespace gui {
case MOUSE_DRAG_START: case MOUSE_DRAG_START:
case MOUSE_CLICK: case MOUSE_CLICK:
case MOUSE_DROP: case MOUSE_DROP:
mouse_action(guecs::NO_MODS); mouse_action();
break; break;
default: default:
if(!$dnd_loot.event(ev, data)) { if(!$dnd_loot.event(ev, data)) {
@ -176,10 +176,10 @@ namespace gui {
$status_ui.update(); $status_ui.update();
} break; } break;
case MOUSE_CLICK: case MOUSE_CLICK:
mouse_action(guecs::NO_MODS); mouse_action();
break; break;
case MOUSE_MOVE: { case MOUSE_MOVE: {
mouse_action({1 << guecs::ModBit::hover}); mouse_action();
} break; } break;
case AIM_CLICK: case AIM_CLICK:
$systems.runPickup(); $systems.runPickup();
@ -220,7 +220,7 @@ namespace gui {
} }
} }
void FSM::END(Event ev) { void FSM::END(Event ev, std::any data) {
dbc::log($F("END: received event after done: {}", int(ev))); dbc::log($F("END: received event after done: {}", int(ev)));
} }
@ -228,16 +228,16 @@ namespace gui {
return $window.mapPixelToCoords($router.position); return $window.mapPixelToCoords($router.position);
} }
void FSM::mouse_action(guecs::Modifiers mods) { void FSM::mouse_action() {
sf::Vector2f pos = mouse_position(); sf::Vector2f pos = mouse_position();
if($debug_ui.active) $debug_ui.mouse(pos.x, pos.y, mods); if($debug_ui.active) $debug_ui.mouse(pos.x, pos.y, $router.mouse_mods);
$combat_ui.mouse(pos.x, pos.y, mods); $combat_ui.mouse(pos.x, pos.y, $router.mouse_mods);
$status_ui.mouse(pos.x, pos.y, mods); $status_ui.mouse(pos.x, pos.y, $router.mouse_mods);
if($loot_ui.active) { if($loot_ui.active) {
$loot_ui.mouse(pos.x, pos.y, mods); $loot_ui.mouse(pos.x, pos.y, $router.mouse_mods);
} else { } else {
$main_ui.mouse(pos.x, pos.y, mods); $main_ui.mouse(pos.x, pos.y, $router.mouse_mods);
} }
} }

View file

@ -53,22 +53,22 @@ namespace gui {
void autowalk(); void autowalk();
void start_autowalk(double rot_speed); void start_autowalk(double rot_speed);
void START(game::Event ev); void START(game::Event ev, std::any data);
void MOVING(game::Event ev); void MOVING(game::Event ev, std::any data);
void ATTACKING(game::Event ev, std::any data); void ATTACKING(game::Event ev, std::any data);
void MAPPING(game::Event ev); void MAPPING(game::Event ev, std::any data);
void ROTATING(game::Event ev); void ROTATING(game::Event ev, std::any data);
void IDLE(game::Event ev, std::any data); void IDLE(game::Event ev, std::any data);
void IN_COMBAT(game::Event ev); void IN_COMBAT(game::Event ev, std::any data);
void COMBAT_ROTATE(game::Event ev); void COMBAT_ROTATE(game::Event ev, std::any data);
void BOSS_FIGHT(game::Event ev, std::any data); void BOSS_FIGHT(game::Event ev, std::any data);
void LOOTING(game::Event ev, std::any data); void LOOTING(game::Event ev, std::any data);
void CUT_SCENE_PLAYING(game::Event ev, std::any data); void CUT_SCENE_PLAYING(game::Event ev, std::any data);
void END(game::Event ev); void END(game::Event ev, std::any data);
void try_move(int dir, bool strafe); void try_move(int dir, bool strafe);
sf::Vector2f mouse_position(); sf::Vector2f mouse_position();
void mouse_action(guecs::Modifiers mods); void mouse_action();
void handle_keyboard_mouse(); void handle_keyboard_mouse();
void draw_gui(); void draw_gui();
void update(); void update();