interact highlight: support menu option mouseover
Co-authored-by: superiorser9 <superiorser9@gmail.com>
This commit is contained in:
@@ -33,6 +33,7 @@ import net.runelite.api.Client;
|
||||
import net.runelite.api.MenuAction;
|
||||
import net.runelite.api.MenuEntry;
|
||||
import net.runelite.api.NPC;
|
||||
import net.runelite.api.Point;
|
||||
import net.runelite.api.TileObject;
|
||||
import net.runelite.client.ui.overlay.Overlay;
|
||||
import net.runelite.client.ui.overlay.OverlayLayer;
|
||||
@@ -78,8 +79,8 @@ class InteractHighlightOverlay extends Overlay
|
||||
return;
|
||||
}
|
||||
|
||||
MenuEntry top = menuEntries[menuEntries.length - 1];
|
||||
MenuAction menuAction = top.getType();
|
||||
MenuEntry entry = client.isMenuOpen() ? hoveredMenuEntry(menuEntries) : menuEntries[menuEntries.length - 1];
|
||||
MenuAction menuAction = entry.getType();
|
||||
|
||||
switch (menuAction)
|
||||
{
|
||||
@@ -90,10 +91,11 @@ class InteractHighlightOverlay extends Overlay
|
||||
case GAME_OBJECT_THIRD_OPTION:
|
||||
case GAME_OBJECT_FOURTH_OPTION:
|
||||
case GAME_OBJECT_FIFTH_OPTION:
|
||||
case EXAMINE_OBJECT:
|
||||
{
|
||||
int x = top.getParam0();
|
||||
int y = top.getParam1();
|
||||
int id = top.getIdentifier();
|
||||
int x = entry.getParam0();
|
||||
int y = entry.getParam1();
|
||||
int id = entry.getIdentifier();
|
||||
TileObject tileObject = plugin.findTileObject(x, y, id);
|
||||
if (tileObject != null && config.objectShowHover() && (tileObject != plugin.getInteractedObject() || !config.objectShowInteract()))
|
||||
{
|
||||
@@ -108,8 +110,9 @@ class InteractHighlightOverlay extends Overlay
|
||||
case NPC_THIRD_OPTION:
|
||||
case NPC_FOURTH_OPTION:
|
||||
case NPC_FIFTH_OPTION:
|
||||
case EXAMINE_NPC:
|
||||
{
|
||||
int id = top.getIdentifier();
|
||||
int id = entry.getIdentifier();
|
||||
NPC npc = plugin.findNpc(id);
|
||||
if (npc != null && config.npcShowHover() && (npc != plugin.getInteractedTarget() || !config.npcShowInteract()))
|
||||
{
|
||||
@@ -155,4 +158,29 @@ class InteractHighlightOverlay extends Overlay
|
||||
}
|
||||
return end;
|
||||
}
|
||||
|
||||
private MenuEntry hoveredMenuEntry(final MenuEntry[] menuEntries)
|
||||
{
|
||||
final int menuX = client.getMenuX();
|
||||
final int menuY = client.getMenuY();
|
||||
final int menuWidth = client.getMenuWidth();
|
||||
final Point mousePosition = client.getMouseCanvasPosition();
|
||||
|
||||
int dy = mousePosition.getY() - menuY;
|
||||
dy -= 19; // Height of Choose Option
|
||||
if (dy < 0)
|
||||
{
|
||||
return menuEntries[menuEntries.length - 1];
|
||||
}
|
||||
|
||||
int idx = dy / 15; // Height of each menu option
|
||||
idx = menuEntries.length - 1 - idx;
|
||||
|
||||
if (mousePosition.getX() > menuX && mousePosition.getX() < menuX + menuWidth
|
||||
&& idx >= 0 && idx < menuEntries.length)
|
||||
{
|
||||
return menuEntries[idx];
|
||||
}
|
||||
return menuEntries[menuEntries.length - 1];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user