Merge pull request #3635 from deathbeam/add-currently-hovered-tile

Add currently hovered tile to TileIndicators
This commit is contained in:
Tomas Slusny
2018-10-02 10:55:42 +02:00
committed by GitHub
5 changed files with 89 additions and 8 deletions

View File

@@ -368,6 +368,23 @@ public interface Client extends GameEngine
*/ */
int getMouseCurrentButton(); int getMouseCurrentButton();
/**
* Schedules checking of current region tile for next frame, so ${@link Client#getSelectedSceneTile()} ()} will
* return actual value.
*
* @param checkClick when true next frame selected region tile will be updated
*/
void setCheckClick(boolean checkClick);
/**
* Sets current mouse hover position. This value is automatically updated only when right-clicking in game.
* Setting this value together with ${@link Client#setCheckClick(boolean)} will update ${@link Client#getSelectedSceneTile()} ()}
* for next frame.
*
* @param position current mouse hover position
*/
void setMouseCanvasHoverPosition(Point position);
/** /**
* Gets the currently selected tile (ie. last right clicked tile). * Gets the currently selected tile (ie. last right clicked tile).
* *

View File

@@ -41,4 +41,24 @@ public interface TileIndicatorsConfig extends Config
{ {
return Color.GRAY; return Color.GRAY;
} }
@ConfigItem(
keyName = "highlightDestinationTile",
name = "Highlight destination tile",
description = "Highlights tile player is walking to"
)
default boolean highlightDestinationTile()
{
return true;
}
@ConfigItem(
keyName = "highlightHoveredTile",
name = "Highlight hovered tile",
description = "Highlights tile player is hovering with mouse"
)
default boolean highlightHoveredTile()
{
return false;
}
} }

View File

@@ -24,6 +24,7 @@
*/ */
package net.runelite.client.plugins.tileindicators; package net.runelite.client.plugins.tileindicators;
import java.awt.Color;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.awt.Polygon; import java.awt.Polygon;
@@ -39,6 +40,7 @@ import net.runelite.client.ui.overlay.OverlayUtil;
public class TileIndicatorsOverlay extends Overlay public class TileIndicatorsOverlay extends Overlay
{ {
private static final Color EMPTY = new Color(0, 0, 0, 0);
private final Client client; private final Client client;
private final TileIndicatorsConfig config; private final TileIndicatorsConfig config;
@@ -55,20 +57,44 @@ public class TileIndicatorsOverlay extends Overlay
@Override @Override
public Dimension render(Graphics2D graphics) public Dimension render(Graphics2D graphics)
{ {
LocalPoint dest = client.getLocalDestinationLocation(); if (config.highlightHoveredTile())
if (dest == null)
{ {
return null; // Update selected scene tile
if (!client.isMenuOpen())
{
client.setCheckClick(true);
client.setMouseCanvasHoverPosition(client.getMouseCanvasPosition());
}
// If we have tile "selected" render it
if (client.getSelectedSceneTile() != null)
{
renderTile(graphics, client.getSelectedSceneTile().getLocalLocation(), EMPTY);
}
} }
Polygon poly = Perspective.getCanvasTilePoly(client, dest); if (config.highlightDestinationTile())
if (poly == null)
{ {
return null; renderTile(graphics, client.getLocalDestinationLocation(), config.highlightDestinationColor());
} }
OverlayUtil.renderPolygon(graphics, poly, config.highlightDestinationColor());
return null; return null;
} }
private void renderTile(final Graphics2D graphics, final LocalPoint dest, final Color color)
{
if (dest == null)
{
return;
}
final Polygon poly = Perspective.getCanvasTilePoly(client, dest);
if (poly == null)
{
return;
}
OverlayUtil.renderPolygon(graphics, poly, color);
}
} }

View File

@@ -237,6 +237,14 @@ public abstract class RSClientMixin implements RSClient
return AccountType.NORMAL; return AccountType.NORMAL;
} }
@Inject
@Override
public void setMouseCanvasHoverPosition(final Point position)
{
setMouseCanvasHoverPositionX(position.getX());
setMouseCanvasHoverPositionY(position.getY());
}
@Inject @Inject
@Override @Override
public Tile getSelectedSceneTile() public Tile getSelectedSceneTile()

View File

@@ -129,6 +129,16 @@ public interface RSClient extends RSGameEngine, Client
@Import("gameState") @Import("gameState")
int getRSGameState(); int getRSGameState();
@Import("checkClick")
@Override
void setCheckClick(boolean checkClick);
@Import("mouseX2")
void setMouseCanvasHoverPositionX(int x);
@Import("mouseY2")
void setMouseCanvasHoverPositionY(int y);
@Import("mouseCurrentButton") @Import("mouseCurrentButton")
@Override @Override
int getMouseCurrentButton(); int getMouseCurrentButton();