Change ground marker plugin to use selected region tile coords instead of basing them off of mouse location
This commit is contained in:
@@ -107,6 +107,8 @@ public interface Client extends GameEngine
|
||||
|
||||
int getMouseCurrentButton();
|
||||
|
||||
Tile getSelectedRegionTile();
|
||||
|
||||
boolean isDraggingWidget();
|
||||
|
||||
Widget getDraggedWidget();
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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()
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user