Merge pull request #7735 from Mabel5/object-markers-on-decorations
Add decorations to object marker plugin
This commit is contained in:
@@ -29,6 +29,7 @@ import java.awt.Graphics2D;
|
|||||||
import java.awt.Polygon;
|
import java.awt.Polygon;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
|
import net.runelite.api.DecorativeObject;
|
||||||
import net.runelite.api.GameObject;
|
import net.runelite.api.GameObject;
|
||||||
import net.runelite.api.TileObject;
|
import net.runelite.api.TileObject;
|
||||||
import net.runelite.client.ui.overlay.Overlay;
|
import net.runelite.client.ui.overlay.Overlay;
|
||||||
@@ -65,22 +66,31 @@ class ObjectIndicatorsOverlay extends Overlay
|
|||||||
}
|
}
|
||||||
|
|
||||||
final Polygon polygon;
|
final Polygon polygon;
|
||||||
|
Polygon polygon2 = null;
|
||||||
|
|
||||||
if (object instanceof GameObject)
|
if (object instanceof GameObject)
|
||||||
{
|
{
|
||||||
polygon = ((GameObject) object).getConvexHull();
|
polygon = ((GameObject) object).getConvexHull();
|
||||||
}
|
}
|
||||||
|
else if (object instanceof DecorativeObject)
|
||||||
|
{
|
||||||
|
polygon = ((DecorativeObject) object).getConvexHull();
|
||||||
|
polygon2 = ((DecorativeObject) object).getConvexHull2();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
polygon = object.getCanvasTilePoly();
|
polygon = object.getCanvasTilePoly();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (polygon == null)
|
if (polygon != null)
|
||||||
{
|
{
|
||||||
continue;
|
OverlayUtil.renderPolygon(graphics, polygon, config.markerColor());
|
||||||
}
|
}
|
||||||
|
|
||||||
OverlayUtil.renderPolygon(graphics, polygon, config.markerColor());
|
if (polygon2 != null)
|
||||||
|
{
|
||||||
|
OverlayUtil.renderPolygon(graphics, polygon2, config.markerColor());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ import lombok.Getter;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
import static net.runelite.api.Constants.REGION_SIZE;
|
import static net.runelite.api.Constants.REGION_SIZE;
|
||||||
|
import net.runelite.api.DecorativeObject;
|
||||||
import net.runelite.api.GameObject;
|
import net.runelite.api.GameObject;
|
||||||
import net.runelite.api.GameState;
|
import net.runelite.api.GameState;
|
||||||
import net.runelite.api.MenuAction;
|
import net.runelite.api.MenuAction;
|
||||||
@@ -58,6 +59,8 @@ import net.runelite.api.events.GameObjectSpawned;
|
|||||||
import net.runelite.api.events.GameStateChanged;
|
import net.runelite.api.events.GameStateChanged;
|
||||||
import net.runelite.api.events.MenuEntryAdded;
|
import net.runelite.api.events.MenuEntryAdded;
|
||||||
import net.runelite.api.events.MenuOptionClicked;
|
import net.runelite.api.events.MenuOptionClicked;
|
||||||
|
import net.runelite.api.events.DecorativeObjectSpawned;
|
||||||
|
import net.runelite.api.events.DecorativeObjectDespawned;
|
||||||
import net.runelite.client.config.ConfigManager;
|
import net.runelite.client.config.ConfigManager;
|
||||||
import net.runelite.client.eventbus.Subscribe;
|
import net.runelite.client.eventbus.Subscribe;
|
||||||
import net.runelite.client.input.KeyListener;
|
import net.runelite.client.input.KeyListener;
|
||||||
@@ -158,26 +161,15 @@ public class ObjectIndicatorsPlugin extends Plugin implements KeyListener
|
|||||||
@Subscribe
|
@Subscribe
|
||||||
public void onGameObjectSpawned(GameObjectSpawned event)
|
public void onGameObjectSpawned(GameObjectSpawned event)
|
||||||
{
|
{
|
||||||
final WorldPoint worldPoint = WorldPoint.fromLocalInstance(client, event.getGameObject().getLocalLocation());
|
final GameObject eventObject = event.getGameObject();
|
||||||
final Set<ObjectPoint> objectPoints = points.get(worldPoint.getRegionID());
|
checkObjectPoints(eventObject);
|
||||||
|
}
|
||||||
|
|
||||||
if (objectPoints == null)
|
@Subscribe
|
||||||
{
|
public void onDecorativeObjectSpawned(DecorativeObjectSpawned event)
|
||||||
return;
|
{
|
||||||
}
|
final DecorativeObject eventObject = event.getDecorativeObject();
|
||||||
|
checkObjectPoints(eventObject);
|
||||||
for (ObjectPoint objectPoint : objectPoints)
|
|
||||||
{
|
|
||||||
if ((worldPoint.getX() & (REGION_SIZE - 1)) == objectPoint.getRegionX()
|
|
||||||
&& (worldPoint.getY() & (REGION_SIZE - 1)) == objectPoint.getRegionY())
|
|
||||||
{
|
|
||||||
if (objectPoint.getName().equals(client.getObjectDefinition(event.getGameObject().getId()).getName()))
|
|
||||||
{
|
|
||||||
objects.add(event.getGameObject());
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
@@ -186,6 +178,12 @@ public class ObjectIndicatorsPlugin extends Plugin implements KeyListener
|
|||||||
objects.remove(event.getGameObject());
|
objects.remove(event.getGameObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public void onDecorativeObjectDespawned(DecorativeObjectDespawned event)
|
||||||
|
{
|
||||||
|
objects.remove(event.getDecorativeObject());
|
||||||
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void onGameStateChanged(GameStateChanged gameStateChanged)
|
public void onGameStateChanged(GameStateChanged gameStateChanged)
|
||||||
{
|
{
|
||||||
@@ -263,6 +261,30 @@ public class ObjectIndicatorsPlugin extends Plugin implements KeyListener
|
|||||||
markObject(name, object);
|
markObject(name, object);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void checkObjectPoints(TileObject object)
|
||||||
|
{
|
||||||
|
final WorldPoint worldPoint = WorldPoint.fromLocalInstance(client, object.getLocalLocation());
|
||||||
|
final Set<ObjectPoint> objectPoints = points.get(worldPoint.getRegionID());
|
||||||
|
|
||||||
|
if (objectPoints == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (ObjectPoint objectPoint : objectPoints)
|
||||||
|
{
|
||||||
|
if ((worldPoint.getX() & (REGION_SIZE - 1)) == objectPoint.getRegionX()
|
||||||
|
&& (worldPoint.getY() & (REGION_SIZE - 1)) == objectPoint.getRegionY())
|
||||||
|
{
|
||||||
|
if (objectPoint.getName().equals(client.getObjectDefinition(object.getId()).getName()))
|
||||||
|
{
|
||||||
|
objects.add(object);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private TileObject findTileObject(Tile tile, int id)
|
private TileObject findTileObject(Tile tile, int id)
|
||||||
{
|
{
|
||||||
if (tile == null)
|
if (tile == null)
|
||||||
@@ -271,6 +293,12 @@ public class ObjectIndicatorsPlugin extends Plugin implements KeyListener
|
|||||||
}
|
}
|
||||||
|
|
||||||
final GameObject[] tileGameObjects = tile.getGameObjects();
|
final GameObject[] tileGameObjects = tile.getGameObjects();
|
||||||
|
final DecorativeObject tileDecorativeObject = tile.getDecorativeObject();
|
||||||
|
|
||||||
|
if (tileDecorativeObject != null && tileDecorativeObject.getId() == id)
|
||||||
|
{
|
||||||
|
return tileDecorativeObject;
|
||||||
|
}
|
||||||
|
|
||||||
for (GameObject object : tileGameObjects)
|
for (GameObject object : tileGameObjects)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user