Refactor LootAssist

This commit is contained in:
Scott Burns
2019-05-16 00:57:19 +02:00
parent 21f3f55b60
commit 47b68dee04
3 changed files with 38 additions and 51 deletions

View File

@@ -5,7 +5,6 @@ import java.awt.Dimension;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.awt.Polygon; import java.awt.Polygon;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.Map; import java.util.Map;
import javax.inject.Inject; import javax.inject.Inject;
import net.runelite.api.Client; import net.runelite.api.Client;
@@ -21,16 +20,12 @@ import net.runelite.client.ui.overlay.OverlayUtil;
public class LootAssistOverlay extends Overlay public class LootAssistOverlay extends Overlay
{ {
private LootAssistPlugin plugin;
private Client client; private Client client;
private DecimalFormat d = new DecimalFormat("##.#"); private DecimalFormat d = new DecimalFormat("##.#");
@Inject @Inject
public LootAssistOverlay(Client client, LootAssistPlugin plugin) public LootAssistOverlay(Client client)
{ {
this.plugin = plugin;
this.client = client; this.client = client;
setLayer(OverlayLayer.ABOVE_SCENE); setLayer(OverlayLayer.ABOVE_SCENE);
setPosition(OverlayPosition.DYNAMIC); setPosition(OverlayPosition.DYNAMIC);
@@ -48,9 +43,7 @@ public class LootAssistOverlay extends Overlay
int y; int y;
try try
{ {
x = LocalPoint.fromWorld(client, pile.getLocation()).getSceneX(); x = LocalPoint.fromWorld(client, pile.getLocation()).getSceneX();
y = LocalPoint.fromWorld(client, pile.getLocation()).getSceneY(); y = LocalPoint.fromWorld(client, pile.getLocation()).getSceneY();
} }
catch (NullPointerException e) catch (NullPointerException e)
@@ -73,32 +66,32 @@ public class LootAssistOverlay extends Overlay
{ {
String nameOverlay = pile.getPlayerName(); String nameOverlay = pile.getPlayerName();
String timeOverlay = d.format((pile.getTimeAppearing() - System.currentTimeMillis()) / 1000f); String timeOverlay = d.format((pile.getTimeAppearing() - System.currentTimeMillis()) / 1000f);
final Polygon poly = Perspective.getCanvasTilePoly(client, final Polygon poly = Perspective.getCanvasTilePoly(client,
client.getScene().getTiles()[client.getPlane()][x][y].getLocalLocation()); client.getScene().getTiles()[client.getPlane()][x][y].getLocalLocation());
if (poly != null) if (poly != null)
{ {
Point textLoc = Perspective.getCanvasTextLocation(client, graphics, Point textLoc = Perspective.getCanvasTextLocation(client, graphics,
LocalPoint.fromWorld(client, pile.getLocation()), LocalPoint.fromWorld(client, pile.getLocation()),
nameOverlay, graphics.getFontMetrics().getHeight() * 7); nameOverlay, graphics.getFontMetrics().getHeight() * 7);
Point timeLoc = Perspective.getCanvasTextLocation(client, graphics, Point timeLoc = Perspective.getCanvasTextLocation(client, graphics,
LocalPoint.fromWorld(client, pile.getLocation()), LocalPoint.fromWorld(client, pile.getLocation()),
timeOverlay, graphics.getFontMetrics().getHeight()); timeOverlay, graphics.getFontMetrics().getHeight());
OverlayUtil.renderPolygon(graphics, poly, Color.WHITE); OverlayUtil.renderPolygon(graphics, poly, Color.WHITE);
if (timeRemaining < 5) if (timeRemaining < 5)
{ {
OverlayUtil.renderTextLocation(graphics, timeLoc, timeOverlay, Color.RED); OverlayUtil.renderTextLocation(graphics, timeLoc, timeOverlay, Color.RED);
OverlayUtil.renderTextLocation(graphics, textLoc, nameOverlay, Color.RED); OverlayUtil.renderTextLocation(graphics, textLoc, nameOverlay, Color.RED);
} }
if (timeRemaining < 2) if (timeRemaining < 2)
{ {
client.setHintArrow(WorldPoint.fromLocal(client, client.setHintArrow(WorldPoint.fromLocal(client,
LocalPoint.fromWorld(client, pile.getLocation()))); LocalPoint.fromWorld(client, pile.getLocation())));
} }
else else
{ {
OverlayUtil.renderTextLocation(graphics, timeLoc, timeOverlay, Color.WHITE); OverlayUtil.renderTextLocation(graphics, timeLoc, timeOverlay, Color.WHITE);
OverlayUtil.renderTextLocation(graphics, textLoc, nameOverlay, Color.WHITE); OverlayUtil.renderTextLocation(graphics, textLoc, nameOverlay, Color.WHITE);
} }
} }

View File

@@ -2,13 +2,11 @@ package net.runelite.client.plugins.lootassist;
import com.google.inject.Provides; import com.google.inject.Provides;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
import javax.inject.Inject; import javax.inject.Inject;
import net.runelite.api.Actor; import net.runelite.api.Actor;
import net.runelite.api.AnimationID; import net.runelite.api.AnimationID;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.Player; import net.runelite.api.Player;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldPoint; import net.runelite.api.coords.WorldPoint;
import net.runelite.api.events.AnimationChanged; import net.runelite.api.events.AnimationChanged;
import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameStateChanged;
@@ -28,21 +26,13 @@ import net.runelite.client.ui.overlay.OverlayManager;
) )
public class LootAssistPlugin extends Plugin public class LootAssistPlugin extends Plugin
{ {
@Inject
private Client client;
@Inject @Inject
OverlayManager overlayManager; OverlayManager overlayManager;
@Inject @Inject
LootAssistOverlay lootAssistOverlay; LootAssistOverlay lootAssistOverlay;
@Inject static ConcurrentHashMap<WorldPoint, LootPile> lootPiles = new ConcurrentHashMap<>();
private LootAssitConfig config;
public static ConcurrentHashMap<WorldPoint, LootPile> lootPiles = new ConcurrentHashMap<>();
@Provides @Provides
LootAssitConfig getConfig(ConfigManager configManager) LootAssitConfig getConfig(ConfigManager configManager)

View File

@@ -5,24 +5,28 @@ import lombok.Setter;
import net.runelite.api.coords.LocalPoint; import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldPoint; import net.runelite.api.coords.WorldPoint;
public class LootPile class LootPile
{ {
private static final long TIME_UNTIL_VISIBLE = 60000; private static final long TIME_UNTIL_VISIBLE = 60000;
private final long timeCreated;
@Getter @Getter
private final long timeAppearing; private final long timeAppearing;
@Getter @Getter
private final WorldPoint location; private final WorldPoint location;
@Getter @Getter
private final String playerName; private final String playerName;
@Getter @Setter
@Getter
@Setter
private boolean beingRendered = false; private boolean beingRendered = false;
public LootPile(WorldPoint location, String playerName) LootPile(WorldPoint location, String playerName)
{ {
this.timeCreated = System.currentTimeMillis(); long timeCreated = System.currentTimeMillis();
this.location = location; this.location = location;
this.playerName = playerName; this.playerName = playerName;
this.timeAppearing = this.timeCreated + TIME_UNTIL_VISIBLE; this.timeAppearing = timeCreated + TIME_UNTIL_VISIBLE;
} }
} }