Skip to content

Commit

Permalink
Prioritize map item pickup when clicking on the map. Allow map item c…
Browse files Browse the repository at this point in the history
…lick to happen concurrently with clicking other stuff.
  • Loading branch information
ethanmoffat committed Apr 30, 2023
1 parent f98bb3a commit 0ad9e22
Showing 1 changed file with 17 additions and 4 deletions.
21 changes: 17 additions & 4 deletions EndlessClient/Rendering/Map/ClickDispatcher.cs
Expand Up @@ -87,7 +87,22 @@ protected override bool HandleClick(IXNAControl control, MouseEventArgs eventArg
_contextMenuRepository.ContextMenu = Option.None<IContextMenuRenderer>();
});

return CheckForEntityClicks(eventArgs) || CheckForTileClicks(eventArgs);
var mapRenderer = _hudControlProvider.GetComponent<IMapRenderer>(HudControlIdentifier.MapRenderer);
var cellState = _mapCellStateProvider.GetCellStateAt(mapRenderer.GridCoordinates);

// map items should always get click priority so they can be picked up even when under a character/npc/other object
var mapItemPickupResult = CheckForMapItemClicks(cellState, eventArgs);
return CheckForEntityClicks(eventArgs) || CheckForTileClicks(cellState, eventArgs) || mapItemPickupResult;
}

private bool CheckForMapItemClicks(IMapCellState cellState, MouseEventArgs eventArgs)
{
if (eventArgs.Button != MouseButton.Left) return false;

if (cellState.Items.Any())
_mapInteractionController.LeftClick(cellState);

return cellState.Items.Any();
}

private bool CheckForEntityClicks(MouseEventArgs eventArgs)
Expand Down Expand Up @@ -125,12 +140,10 @@ private bool CheckForEntityClicks(MouseEventArgs eventArgs)
return false;
}

private bool CheckForTileClicks(MouseEventArgs eventArgs)
private bool CheckForTileClicks(IMapCellState cellState, MouseEventArgs eventArgs)
{
if (eventArgs.Button == MouseButton.Left)
{
var mapRenderer = _hudControlProvider.GetComponent<IMapRenderer>(HudControlIdentifier.MapRenderer);
var cellState = _mapCellStateProvider.GetCellStateAt(mapRenderer.GridCoordinates);
_mapInteractionController.LeftClick(cellState);
return true;
}
Expand Down

0 comments on commit 0ad9e22

Please sign in to comment.