Make a function that handles the mouse events for everything since those are very similar.
This commit is contained in:
parent
d99d9a68c8
commit
cd02507023
2 changed files with 30 additions and 39 deletions
|
@ -76,28 +76,8 @@ namespace gui {
|
|||
state(DNDState::LOOTING);
|
||||
}
|
||||
break;
|
||||
case MOUSE_CLICK:
|
||||
mouse_action(false);
|
||||
break;
|
||||
case MOUSE_DRAG:
|
||||
case MOUSE_MOVE: {
|
||||
if($grab_source) {
|
||||
auto& source = $loot_ui.$gui.get<guecs::GrabSource>(*$grab_source);
|
||||
source.move($window.mapPixelToCoords($router.position));
|
||||
}
|
||||
mouse_action(true);
|
||||
} break;
|
||||
case MOUSE_DRAG_START:
|
||||
mouse_action(false);
|
||||
break;
|
||||
case MOUSE_DROP:
|
||||
mouse_action(false);
|
||||
break;
|
||||
case TICK:
|
||||
// do nothing
|
||||
break;
|
||||
default:
|
||||
state(DNDState::LOOT_GRAB);
|
||||
handle_mouse(ev, $loot_ui.$gui);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -120,25 +100,8 @@ namespace gui {
|
|||
$grab_source = UISystem::loot_grab($status_ui.$gui, data);
|
||||
state(DNDState::LOOTING);
|
||||
break;
|
||||
case MOUSE_CLICK:
|
||||
mouse_action(false);
|
||||
break;
|
||||
case MOUSE_DRAG:
|
||||
case MOUSE_MOVE: {
|
||||
if($grab_source) {
|
||||
auto& source = $status_ui.$gui.get<guecs::GrabSource>(*$grab_source);
|
||||
source.move($window.mapPixelToCoords($router.position));
|
||||
}
|
||||
mouse_action(true);
|
||||
} break;
|
||||
case MOUSE_DRAG_START: {
|
||||
mouse_action(false);
|
||||
} break;
|
||||
case MOUSE_DROP:
|
||||
mouse_action(false);
|
||||
break;
|
||||
default:
|
||||
state(DNDState::INV_GRAB);
|
||||
handle_mouse(ev, $status_ui.$gui);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -170,4 +133,31 @@ namespace gui {
|
|||
$status_ui.mouse(pos.x, pos.y, hover);
|
||||
if($loot_ui.active) $loot_ui.mouse(pos.x, pos.y, hover);
|
||||
}
|
||||
|
||||
void DNDLoot::handle_mouse(Event ev, guecs::UI& gui) {
|
||||
using enum Event;
|
||||
|
||||
switch(ev) {
|
||||
case MOUSE_CLICK:
|
||||
mouse_action(false);
|
||||
break;
|
||||
case MOUSE_DRAG:
|
||||
case MOUSE_MOVE: {
|
||||
if($grab_source) {
|
||||
auto& source = gui.get<guecs::GrabSource>(*$grab_source);
|
||||
source.move($window.mapPixelToCoords($router.position));
|
||||
}
|
||||
mouse_action(true);
|
||||
} break;
|
||||
case MOUSE_DRAG_START:
|
||||
mouse_action(false);
|
||||
break;
|
||||
case MOUSE_DROP:
|
||||
mouse_action(false);
|
||||
break;
|
||||
default:
|
||||
break; // ignored
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue