agility: highlight 'Stick' in Werewolf Agility Course

Co-authored-by: dekvall <dkvldev@gmail.com>
This commit is contained in:
AaronPoon
2020-01-28 10:34:37 -08:00
committed by Adam
parent 2b1a996432
commit 17da7adab8
3 changed files with 63 additions and 13 deletions

View File

@@ -165,4 +165,26 @@ public interface AgilityConfig extends Config
{
return true;
}
@ConfigItem(
keyName = "highlightStick",
name = "Highlight Stick",
description = "Highlight the retrievable stick in the Werewolf Agility Course",
position = 12
)
default boolean highlightStick()
{
return true;
}
@ConfigItem(
keyName = "stickHighlightColor",
name = "Stick Highlight Color",
description = "Color of highlighted stick",
position = 13
)
default Color stickHighlightColor()
{
return Color.RED;
}
}

View File

@@ -68,6 +68,8 @@ class AgilityOverlay extends Overlay
LocalPoint playerLocation = client.getLocalPlayer().getLocalLocation();
Point mousePosition = client.getMouseCanvasPosition();
final List<Tile> marksOfGrace = plugin.getMarksOfGrace();
final Tile stickTile = plugin.getStickTile();
plugin.getObstacles().forEach((object, obstacle) ->
{
if (Obstacles.SHORTCUT_OBSTACLE_IDS.containsKey(object.getId()) && !config.highlightShortcuts() ||
@@ -122,21 +124,29 @@ class AgilityOverlay extends Overlay
{
for (Tile markOfGraceTile : marksOfGrace)
{
if (markOfGraceTile.getPlane() == client.getPlane() && markOfGraceTile.getItemLayer() != null
&& markOfGraceTile.getLocalLocation().distanceTo(playerLocation) < MAX_DISTANCE)
{
final Polygon poly = markOfGraceTile.getItemLayer().getCanvasTilePoly();
if (poly == null)
{
continue;
}
OverlayUtil.renderPolygon(graphics, poly, config.getMarkColor());
}
highlightTile(graphics, playerLocation, markOfGraceTile, config.getMarkColor());
}
}
if (stickTile != null && config.highlightStick())
{
highlightTile(graphics, playerLocation, stickTile, config.stickHighlightColor());
}
return null;
}
private void highlightTile(Graphics2D graphics, LocalPoint playerLocation, Tile tile, Color color)
{
if (tile.getPlane() == client.getPlane() && tile.getItemLayer() != null
&& tile.getLocalLocation().distanceTo(playerLocation) < MAX_DISTANCE)
{
final Polygon poly = tile.getItemLayer().getCanvasTilePoly();
if (poly != null)
{
OverlayUtil.renderPolygon(graphics, poly, color);
}
}
}
}

View File

@@ -31,6 +31,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.inject.Inject;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client;
@@ -43,7 +44,6 @@ import net.runelite.api.Tile;
import net.runelite.api.TileItem;
import net.runelite.api.TileObject;
import net.runelite.api.coords.WorldPoint;
import net.runelite.client.events.ConfigChanged;
import net.runelite.api.events.DecorativeObjectChanged;
import net.runelite.api.events.DecorativeObjectDespawned;
import net.runelite.api.events.DecorativeObjectSpawned;
@@ -64,6 +64,7 @@ import net.runelite.api.events.WallObjectSpawned;
import net.runelite.client.Notifier;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.game.AgilityShortcut;
import net.runelite.client.game.ItemManager;
import net.runelite.client.plugins.Plugin;
@@ -127,6 +128,9 @@ public class AgilityPlugin extends Plugin
@Getter
private int agilityLevel;
@Getter(AccessLevel.PACKAGE)
private Tile stickTile;
@Provides
AgilityConfig getConfig(ConfigManager configManager)
{
@@ -150,6 +154,7 @@ public class AgilityPlugin extends Plugin
obstacles.clear();
session = null;
agilityLevel = 0;
stickTile = null;
}
@Subscribe
@@ -166,6 +171,7 @@ public class AgilityPlugin extends Plugin
case LOADING:
marksOfGrace.clear();
obstacles.clear();
stickTile = null;
break;
case LOGGED_IN:
if (!isInAgilityArena())
@@ -244,13 +250,25 @@ public class AgilityPlugin extends Plugin
{
marksOfGrace.add(tile);
}
if (item.getId() == ItemID.STICK)
{
stickTile = tile;
}
}
@Subscribe
public void onItemDespawned(ItemDespawned itemDespawned)
{
final TileItem item = itemDespawned.getItem();
final Tile tile = itemDespawned.getTile();
marksOfGrace.remove(tile);
if (item.getId() == ItemID.STICK && stickTile == tile)
{
stickTile = null;
}
}
@Subscribe