|
|
@ -76,28 +76,8 @@ namespace gui { |
|
|
|
state(DNDState::LOOTING); |
|
|
|
state(DNDState::LOOTING); |
|
|
|
} |
|
|
|
} |
|
|
|
break; |
|
|
|
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: |
|
|
|
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); |
|
|
|
$grab_source = UISystem::loot_grab($status_ui.$gui, data); |
|
|
|
state(DNDState::LOOTING); |
|
|
|
state(DNDState::LOOTING); |
|
|
|
break; |
|
|
|
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: |
|
|
|
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); |
|
|
|
$status_ui.mouse(pos.x, pos.y, hover); |
|
|
|
if($loot_ui.active) $loot_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
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|