diff --git a/src/gui/fsm.cpp b/src/gui/fsm.cpp index 7b06094..820586f 100644 --- a/src/gui/fsm.cpp +++ b/src/gui/fsm.cpp @@ -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); } } diff --git a/src/gui/fsm.hpp b/src/gui/fsm.hpp index 3958176..339a0ff 100644 --- a/src/gui/fsm.hpp +++ b/src/gui/fsm.hpp @@ -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();