|
|
@ -115,6 +115,8 @@ namespace gui { |
|
|
|
if(UISystem::loot_drop($loot_ui.$gui, |
|
|
|
if(UISystem::loot_drop($loot_ui.$gui, |
|
|
|
$status_ui.$gui, $grab_source, data)) |
|
|
|
$status_ui.$gui, $grab_source, data)) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
$grab_source = std::nullopt; |
|
|
|
|
|
|
|
$grab_sprite = nullptr; |
|
|
|
state(DNDState::END); |
|
|
|
state(DNDState::END); |
|
|
|
} |
|
|
|
} |
|
|
|
break; |
|
|
|
break; |
|
|
@ -134,11 +136,19 @@ namespace gui { |
|
|
|
// NOTE: if > 1 items, go to LOOT_OPEN instead
|
|
|
|
// NOTE: if > 1 items, go to LOOT_OPEN instead
|
|
|
|
auto gui_id = $loot_ui.$gui.entity("item_0"); |
|
|
|
auto gui_id = $loot_ui.$gui.entity("item_0"); |
|
|
|
$grab_source = UISystem::loot_grab($loot_ui.$gui, gui_id); |
|
|
|
$grab_source = UISystem::loot_grab($loot_ui.$gui, gui_id); |
|
|
|
if($grab_source) state(DNDState::ITEM_PICKUP); |
|
|
|
|
|
|
|
|
|
|
|
if($grab_source) { |
|
|
|
|
|
|
|
auto& source = $loot_ui.$gui.get<guecs::GrabSource>(*$grab_source); |
|
|
|
|
|
|
|
$grab_sprite = source.sprite; |
|
|
|
|
|
|
|
// call this once to properly position the sprite
|
|
|
|
|
|
|
|
handle_mouse(Event::MOUSE_MOVE, $loot_ui.$gui); |
|
|
|
|
|
|
|
state(DNDState::ITEM_PICKUP); |
|
|
|
|
|
|
|
} |
|
|
|
} break; |
|
|
|
} break; |
|
|
|
case LOOT_OPEN: |
|
|
|
case LOOT_OPEN: |
|
|
|
$loot_ui.active = true; |
|
|
|
$loot_ui.active = true; |
|
|
|
$grab_source = std::nullopt; |
|
|
|
$grab_source = std::nullopt; |
|
|
|
|
|
|
|
$grab_sprite = nullptr; |
|
|
|
state(DNDState::LOOTING); |
|
|
|
state(DNDState::LOOTING); |
|
|
|
break; |
|
|
|
break; |
|
|
|
default: |
|
|
|
default: |
|
|
@ -183,4 +193,9 @@ namespace gui { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void DNDLoot::render() { |
|
|
|
|
|
|
|
if($grab_source && $grab_sprite) { |
|
|
|
|
|
|
|
$window.draw(*$grab_sprite); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|