cannon plugin: move spot scene check to game state change event

This commit is contained in:
Adam
2020-06-15 21:44:09 -04:00
parent 93c1e36bea
commit 2dd9bbbf5e
4 changed files with 16 additions and 18 deletions

View File

@@ -28,7 +28,7 @@ import java.awt.Color;
import java.awt.image.BufferedImage;
import net.runelite.client.ui.overlay.infobox.InfoBox;
public class CannonCounter extends InfoBox
class CannonCounter extends InfoBox
{
private final CannonPlugin plugin;

View File

@@ -26,7 +26,6 @@ package net.runelite.client.plugins.cannon;
import com.google.inject.Provides;
import java.awt.Color;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
@@ -37,6 +36,7 @@ import net.runelite.api.AnimationID;
import net.runelite.api.ChatMessageType;
import net.runelite.api.Client;
import net.runelite.api.GameObject;
import net.runelite.api.GameState;
import net.runelite.api.InventoryID;
import net.runelite.api.Item;
import net.runelite.api.ItemID;
@@ -47,8 +47,8 @@ import static net.runelite.api.ProjectileID.CANNONBALL;
import static net.runelite.api.ProjectileID.GRANITE_CANNONBALL;
import net.runelite.api.coords.WorldPoint;
import net.runelite.api.events.ChatMessage;
import net.runelite.client.events.ConfigChanged;
import net.runelite.api.events.GameObjectSpawned;
import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.GameTick;
import net.runelite.api.events.ItemContainerChanged;
import net.runelite.api.events.ProjectileMoved;
@@ -56,10 +56,10 @@ import net.runelite.client.Notifier;
import net.runelite.client.callback.ClientThread;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.game.ItemManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.task.Schedule;
import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
@@ -217,13 +217,10 @@ public class CannonPlugin extends Plugin
}
@Schedule(
period = 1,
unit = ChronoUnit.SECONDS
)
public void checkSpots()
@Subscribe
public void onGameStateChanged(GameStateChanged gameStateChanged)
{
if (!config.showCannonSpots())
if (gameStateChanged.getGameState() != GameState.LOGGED_IN)
{
return;
}
@@ -231,12 +228,10 @@ public class CannonPlugin extends Plugin
spotPoints.clear();
for (WorldPoint spot : CannonSpots.getCannonSpots())
{
if (spot.getPlane() != client.getPlane() || !spot.isInScene(client))
if (WorldPoint.isInScene(client, spot.getX(), spot.getY()))
{
continue;
spotPoints.add(spot);
}
spotPoints.add(spot);
}
}

View File

@@ -29,6 +29,7 @@ import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Polygon;
import java.awt.image.BufferedImage;
import java.util.List;
import javax.inject.Inject;
import lombok.AccessLevel;
import lombok.Setter;
@@ -43,7 +44,7 @@ import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.OverlayUtil;
public class CannonSpotOverlay extends Overlay
class CannonSpotOverlay extends Overlay
{
private static final int MAX_DISTANCE = 2350;
@@ -69,12 +70,14 @@ public class CannonSpotOverlay extends Overlay
@Override
public Dimension render(Graphics2D graphics)
{
if (hidden || !config.showCannonSpots() || plugin.isCannonPlaced())
List<WorldPoint> spotPoints = plugin.getSpotPoints();
if (hidden || spotPoints.isEmpty() || !config.showCannonSpots() || plugin.isCannonPlaced())
{
return null;
}
for (WorldPoint spot : plugin.getSpotPoints())
for (WorldPoint spot : spotPoints)
{
if (spot.getPlane() != client.getPlane())
{

View File

@@ -30,7 +30,7 @@ import java.util.List;
import lombok.Getter;
import net.runelite.api.coords.WorldPoint;
public enum CannonSpots
enum CannonSpots
{
BLOODVELDS(new WorldPoint(2439, 9821, 0), new WorldPoint(2448, 9821, 0), new WorldPoint(2472, 9832, 0), new WorldPoint(2453, 9817, 0)),