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) {
switch($state) {
FSM_STATE(State, START, ev);
FSM_STATE(State, MOVING, ev);
FSM_STATE(State, START, ev, data);
FSM_STATE(State, MOVING, 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, CUT_SCENE_PLAYING, ev, data);
FSM_STATE(State, BOSS_FIGHT, 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.init();
$loot_ui.init();
@ -64,7 +64,7 @@ namespace gui {
state(State::IDLE);
}
void FSM::MOVING(Event ) {
void FSM::MOVING(Event ev, std::any data) {
// this should be an optional that returns a point
if(auto move_to = $main_ui.play_move()) {
$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()) {
auto& player_pos = GameDB::player_position();
player_pos.aiming_at = *aim;
@ -97,7 +97,7 @@ namespace gui {
case MOUSE_DRAG_START:
case MOUSE_CLICK:
case MOUSE_DROP:
mouse_action(guecs::NO_MODS);
mouse_action();
break;
default:
if(!$dnd_loot.event(ev, data)) {
@ -176,10 +176,10 @@ namespace gui {
$status_ui.update();
} break;
case MOUSE_CLICK:
mouse_action(guecs::NO_MODS);
mouse_action();
break;
case MOUSE_MOVE: {
mouse_action({1 << guecs::ModBit::hover});
mouse_action();
} break;
case AIM_CLICK:
$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)));
}
@ -228,16 +228,16 @@ namespace gui {
return $window.mapPixelToCoords($router.position);
}
void FSM::mouse_action(guecs::Modifiers mods) {
void FSM::mouse_action() {
sf::Vector2f pos = mouse_position();
if($debug_ui.active) $debug_ui.mouse(pos.x, pos.y, mods);
$combat_ui.mouse(pos.x, pos.y, mods);
$status_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, $router.mouse_mods);
$status_ui.mouse(pos.x, pos.y, $router.mouse_mods);
if($loot_ui.active) {
$loot_ui.mouse(pos.x, pos.y, mods);
$loot_ui.mouse(pos.x, pos.y, $router.mouse_mods);
} 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 start_autowalk(double rot_speed);
void START(game::Event ev);
void MOVING(game::Event ev);
void START(game::Event ev, std::any data);
void MOVING(game::Event ev, std::any data);
void ATTACKING(game::Event ev, std::any data);
void MAPPING(game::Event ev);
void ROTATING(game::Event ev);
void MAPPING(game::Event ev, std::any data);
void ROTATING(game::Event ev, std::any data);
void IDLE(game::Event ev, std::any data);
void IN_COMBAT(game::Event ev);
void COMBAT_ROTATE(game::Event ev);
void IN_COMBAT(game::Event ev, std::any data);
void COMBAT_ROTATE(game::Event ev, std::any data);
void BOSS_FIGHT(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 END(game::Event ev);
void END(game::Event ev, std::any data);
void try_move(int dir, bool strafe);
sf::Vector2f mouse_position();
void mouse_action(guecs::Modifiers mods);
void mouse_action();
void handle_keyboard_mouse();
void draw_gui();
void update();