mining: show respawn timers after GameState change

This commit is contained in:
Alexsuperfly
2019-12-03 23:21:46 -05:00
committed by Adam
parent a5010517d0
commit 7b453cf263
3 changed files with 14 additions and 14 deletions

View File

@@ -28,14 +28,12 @@ import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.time.Instant;
import java.util.Iterator;
import java.util.List;
import javax.inject.Inject;
import net.runelite.api.Client;
import net.runelite.api.Perspective;
import net.runelite.api.Point;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldPoint;
import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayLayer;
import net.runelite.client.ui.overlay.OverlayPosition;
@@ -72,24 +70,18 @@ class MiningOverlay extends Overlay
}
Instant now = Instant.now();
for (Iterator<RockRespawn> it = respawns.iterator(); it.hasNext();)
for (RockRespawn rockRespawn : respawns)
{
Color pieFillColor = Color.YELLOW;
Color pieBorderColor = Color.ORANGE;
RockRespawn rockRespawn = it.next();
float percent = (now.toEpochMilli() - rockRespawn.getStartTime().toEpochMilli()) / (float) rockRespawn.getRespawnTime();
WorldPoint worldPoint = rockRespawn.getWorldPoint();
LocalPoint loc = LocalPoint.fromWorld(client, worldPoint);
if (loc == null || percent > 1.0f)
LocalPoint loc = LocalPoint.fromWorld(client, rockRespawn.getWorldPoint());
if (loc == null)
{
it.remove();
continue;
}
float percent = (now.toEpochMilli() - rockRespawn.getStartTime().toEpochMilli()) / (float) rockRespawn.getRespawnTime();
Point point = Perspective.localToCanvas(client, loc, client.getPlane(), rockRespawn.getZOffset());
if (point == null)
if (point == null || percent > 1.0f)
{
it.remove();
continue;
}
@@ -102,6 +94,9 @@ class MiningOverlay extends Overlay
continue;
}
Color pieFillColor = Color.YELLOW;
Color pieBorderColor = Color.ORANGE;
// Recolour pie on motherlode veins during the portion of the timer where they may respawn
if (rock == Rock.ORE_VEIN && percent > ORE_VEIN_RANDOM_PERCENT_THRESHOLD)
{

View File

@@ -94,7 +94,6 @@ public class MiningPlugin extends Plugin
{
switch (event.getGameState())
{
case LOADING:
case HOPPING:
respawns.clear();
break;
@@ -110,6 +109,7 @@ public class MiningPlugin extends Plugin
@Subscribe
public void onGameTick(GameTick gameTick)
{
respawns.removeIf(RockRespawn::isExpired);
recentlyLoggedIn = false;
}

View File

@@ -38,4 +38,9 @@ class RockRespawn
private final Instant startTime;
private final int respawnTime;
private final int zOffset;
boolean isExpired()
{
return Instant.now().isAfter(startTime.plusMillis(respawnTime));
}
}