Change ground marker plugin to use selected region tile coords instead of basing them off of mouse location

This commit is contained in:
Kamiel
2018-04-25 03:38:25 +02:00
committed by Adam
parent f1cd66b5b0
commit d8ba53eecc
4 changed files with 27 additions and 63 deletions

View File

@@ -107,6 +107,8 @@ public interface Client extends GameEngine
int getMouseCurrentButton();
Tile getSelectedRegionTile();
boolean isDraggingWidget();
Widget getDraggedWidget();

View File

@@ -30,7 +30,6 @@ import com.google.common.eventbus.Subscribe;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.google.inject.Provides;
import java.awt.Polygon;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -43,13 +42,9 @@ import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client;
import static net.runelite.api.Constants.CHUNK_SIZE;
import static net.runelite.api.Constants.REGION_SIZE;
import net.runelite.api.GameState;
import net.runelite.api.MenuAction;
import net.runelite.api.MenuEntry;
import net.runelite.api.Perspective;
import net.runelite.api.Point;
import net.runelite.api.Region;
import net.runelite.api.Tile;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldPoint;
@@ -284,19 +279,8 @@ public class GroundMarkerPlugin extends Plugin
return;
}
MenuEntry[] menuEntries = client.getMenuEntries();
// get tile coordinates off of walk here entry
for (int i = 0; i < menuEntries.length; i++)
{
MenuEntry menuEntry = menuEntries[i];
if (menuEntry.getOption().equals(WALK_HERE))
{
Point target = new Point(menuEntry.getParam0(), menuEntry.getParam1());
markTile(target);
break;
}
}
Tile target = client.getSelectedRegionTile();
markTile(target.getLocalLocation());
}
@Override
@@ -317,10 +301,8 @@ public class GroundMarkerPlugin extends Plugin
return overlay;
}
protected void markTile(Point ptMouse)
protected void markTile(LocalPoint localPoint)
{
LocalPoint localPoint = getTile(ptMouse);
if (localPoint == null)
{
return;
@@ -380,46 +362,4 @@ public class GroundMarkerPlugin extends Plugin
loadPoints();
}
/**
* Find the tile which the given mouse point is in
* @param mouse
* @return
*/
private LocalPoint getTile(Point mouse)
{
Region region = client.getRegion();
Tile[][][] tiles = region.getTiles();
int z = client.getPlane();
java.awt.Point gameMouse = new java.awt.Point(mouse.getX(), mouse.getY());
for (int x = 0; x < REGION_SIZE; ++x)
{
for (int y = 0; y < REGION_SIZE; ++y)
{
Tile tile = tiles[z][x][y];
if (tile == null)
{
continue;
}
LocalPoint local = tile.getLocalLocation();
Polygon poly = Perspective.getCanvasTilePoly(client, local);
if (poly == null)
{
continue;
}
if (poly.contains(gameMouse))
{
return local;
}
}
}
return null;
}
}

View File

@@ -54,6 +54,7 @@ import net.runelite.api.Projectile;
import net.runelite.api.Setting;
import net.runelite.api.Skill;
import net.runelite.api.SpritePixels;
import net.runelite.api.Tile;
import net.runelite.api.Varbits;
import net.runelite.api.WidgetNode;
import net.runelite.api.coords.LocalPoint;
@@ -158,6 +159,21 @@ public abstract class RSClientMixin implements RSClient
interpolateObjectAnimations = interpolate;
}
@Inject
@Override
public Tile getSelectedRegionTile()
{
int tileX = getSelectedRegionTileX();
int tileY = getSelectedRegionTileY();
if (tileX == -1 || tileY == -1)
{
return null;
}
return getRegion().getTiles()[getPlane()][tileX][tileY];
}
@Inject
@Override
public List<Player> getPlayers()

View File

@@ -116,6 +116,12 @@ public interface RSClient extends RSGameEngine, Client
@Override
int getMouseCurrentButton();
@Import("selectedRegionTileX")
int getSelectedRegionTileX();
@Import("selectedRegionTileY")
int getSelectedRegionTileY();
@Import("draggingWidget")
@Override
boolean isDraggingWidget();