Move common game state and interface checks to overlay

This commit is contained in:
Toocanzs
2017-12-01 20:00:29 -05:00
committed by Adam
parent 4fc1395827
commit 2de0dead0c
30 changed files with 80 additions and 96 deletions

View File

@@ -34,7 +34,6 @@ import java.util.Map;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.Perspective;
import net.runelite.api.Projectile;
import net.runelite.client.ui.overlay.Overlay;
@@ -61,7 +60,7 @@ public class AoeWarningOverlay extends Overlay
@Override
public Dimension render(Graphics2D graphics)
{
if (client.getGameState() != GameState.LOGGED_IN || !config.enabled())
if (!config.enabled())
{
return null;
}

View File

@@ -33,7 +33,6 @@ import java.awt.Rectangle;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.ui.FontManager;
@@ -67,7 +66,7 @@ public class AttackIndicatorOverlay extends Overlay
@Override
public Dimension render(Graphics2D graphics)
{
if (!config.enabled() || client.getGameState() != GameState.LOGGED_IN)
if (!config.enabled())
{
return null;
}

View File

@@ -32,7 +32,6 @@ import java.awt.Graphics2D;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.Skill;
import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition;
@@ -76,7 +75,7 @@ class BoostsOverlay extends Overlay
@Override
public Dimension render(Graphics2D graphics)
{
if (client.getGameState() != GameState.LOGGED_IN || !config.enabled())
if (!config.enabled())
{
return null;
}

View File

@@ -35,7 +35,6 @@ import java.time.Instant;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.ItemComposition;
import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition;
@@ -70,7 +69,7 @@ public class ClueScrollOverlay extends Overlay
@Override
public Dimension render(Graphics2D graphics)
{
if (client.getGameState() != GameState.LOGGED_IN || !config.enabled())
if (!config.enabled())
{
return null;
}

View File

@@ -39,7 +39,6 @@ import javax.inject.Inject;
import net.runelite.api.Client;
import net.runelite.api.DecorativeObject;
import net.runelite.api.GameObject;
import net.runelite.api.GameState;
import net.runelite.api.GroundObject;
import net.runelite.api.Item;
import net.runelite.api.ItemLayer;
@@ -88,11 +87,6 @@ public class DevToolsOverlay extends Overlay
@Override
public Dimension render(Graphics2D graphics)
{
if (client.getGameState() != GameState.LOGGED_IN)
{
return null;
}
Font font = plugin.getFont();
if (font != null)
{

View File

@@ -33,7 +33,6 @@ import java.time.Instant;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.OverlayPriority;
@@ -67,7 +66,7 @@ class FishingOverlay extends Overlay
@Override
public Dimension render(Graphics2D graphics)
{
if (client.getGameState() != GameState.LOGGED_IN || !config.enabled())
if (!config.enabled())
{
return null;
}

View File

@@ -34,7 +34,6 @@ import java.util.List;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.NPC;
import net.runelite.api.queries.NPCQuery;
import net.runelite.client.RuneLite;
@@ -66,7 +65,7 @@ class FishingSpotOverlay extends Overlay
@Override
public Dimension render(Graphics2D graphics)
{
if (client.getGameState() != GameState.LOGGED_IN || !config.enabled())
if (!config.enabled())
{
return null;
}

View File

@@ -33,7 +33,6 @@ import java.awt.geom.Rectangle2D;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.ui.overlay.Overlay;
@@ -56,11 +55,6 @@ public class FPSOverlay extends Overlay
@Override
public Dimension render(Graphics2D graphics)
{
if (client.getGameState() != GameState.LOGGED_IN)
{
return null;
}
Font font = plugin.getFont();
if (font != null)
{

View File

@@ -42,7 +42,6 @@ import java.util.concurrent.TimeUnit;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.Item;
import net.runelite.api.ItemComposition;
import net.runelite.api.ItemLayer;
@@ -52,7 +51,6 @@ import net.runelite.api.Point;
import net.runelite.api.Region;
import net.runelite.api.Tile;
import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.game.ItemManager;
import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition;
@@ -116,18 +114,6 @@ public class GroundItemsOverlay extends Overlay
@Override
public Dimension render(Graphics2D graphics)
{
// won't draw if not logged in
if (client.getGameState() != GameState.LOGGED_IN || !config.enabled())
{
return null;
}
//if the player is logged in but viewing the click to play screen exit
if (client.getWidget(WidgetInfo.LOGIN_CLICK_TO_PLAY_SCREEN) != null)
{
return null;
}
Widget viewport = client.getViewportWidget();
if (viewport != null)

View File

@@ -36,7 +36,6 @@ import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Actor;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.NPC;
import net.runelite.api.NpcID;
import net.runelite.api.Point;
@@ -73,11 +72,6 @@ public class ImplingsOverlay extends Overlay
@Override
public Dimension render(Graphics2D graphics)
{
if (client.getGameState() != GameState.LOGGED_IN)
{
return null;
}
NPCQuery implingQuery = new NPCQuery().idEquals(Ints.toArray(ids));
NPC[] implings = runelite.runQuery(implingQuery);
for (NPC imp : implings)

View File

@@ -32,7 +32,6 @@ import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Client;
import net.runelite.api.GameObject;
import net.runelite.api.GameState;
import net.runelite.api.GroundObject;
import net.runelite.api.IndexedSprite;
import net.runelite.api.ObjectComposition;
@@ -172,7 +171,7 @@ class InstanceMapOverlay extends Overlay
@Override
public Dimension render(Graphics2D graphics)
{
if (client.getGameState() != GameState.LOGGED_IN || !config.enabled() || !showMap)
if (!config.enabled() || !showMap)
{
return null;
}

View File

@@ -35,7 +35,6 @@ import java.util.Arrays;
import java.util.Collection;
import javax.inject.Inject;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.Query;
import net.runelite.api.queries.EquipmentItemQuery;
import net.runelite.api.queries.InventoryItemQuery;
@@ -60,14 +59,13 @@ class JewelleryCountOverlay extends Overlay
this.runelite = runelite;
this.client = runelite.getClient();
this.config = config;
this.setDrawOverBankScreen(true);
}
@Override
public Dimension render(Graphics2D graphics)
{
if (client.getGameState() != GameState.LOGGED_IN
|| !config.enabled()
|| client.getWidget(WidgetInfo.LOGIN_CLICK_TO_PLAY_SCREEN) != null)
if (!config.enabled())
{
return null;
}

View File

@@ -29,7 +29,6 @@ import java.awt.Graphics2D;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.MenuEntry;
import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition;
@@ -53,12 +52,13 @@ class MouseHighlightOverlay extends Overlay
this.client = client;
this.config = config;
this.tooltipRenderer = overlayRenderer.getTooltipRenderer();
this.setDrawOverBankScreen(true);
}
@Override
public Dimension render(Graphics2D graphics)
{
if (client.getGameState() != GameState.LOGGED_IN || !config.enabled())
if (!config.enabled())
{
return null;
}

View File

@@ -30,7 +30,6 @@ import java.awt.FontMetrics;
import java.awt.Graphics2D;
import net.runelite.api.Actor;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.Player;
import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition;
@@ -89,7 +88,7 @@ class OpponentInfoOverlay extends Overlay
@Override
public Dimension render(Graphics2D graphics)
{
if (client.getGameState() != GameState.LOGGED_IN || config.enabled() == false)
if (config.enabled() == false)
{
return null;
}

View File

@@ -35,7 +35,6 @@ import java.util.Arrays;
import javax.inject.Inject;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.NPC;
import net.runelite.api.Query;
import net.runelite.api.queries.NPCQuery;
@@ -73,11 +72,6 @@ public class PestControlOverlay extends Overlay
@Override
public Dimension render(Graphics2D graphics)
{
if (client.getGameState() != GameState.LOGGED_IN)
{
return null;
}
// See if we are in a game or not
if (client.getWidget(WidgetInfo.PESTCONTROL_BLUE_SHIELD) == null)
{

View File

@@ -33,7 +33,6 @@ import java.time.Instant;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.Prayer;
import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo;
@@ -64,7 +63,7 @@ public class PrayerFlickOverlay extends Overlay
@Override
public Dimension render(Graphics2D graphics)
{
if (client.getGameState() != GameState.LOGGED_IN || !config.enabled() || !prayersActive)//If there are no prayers active we don't need to be flicking
if (!config.enabled() || !prayersActive)//If there are no prayers active we don't need to be flicking
{
return null;
}

View File

@@ -36,7 +36,6 @@ import java.util.Arrays;
import java.util.Collection;
import javax.inject.Inject;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import static net.runelite.api.ItemID.BINDING_NECKLACE;
import net.runelite.api.Query;
import net.runelite.api.queries.EquipmentItemQuery;
@@ -63,14 +62,13 @@ public class BindNeckOverlay extends Overlay
this.runelite = runelite;
this.client = runelite.getClient();
this.config = config;
this.setDrawOverBankScreen(true);
}
@Override
public Dimension render(Graphics2D graphics)
{
if (client.getGameState() != GameState.LOGGED_IN
|| !config.showBindNeck()
|| client.getWidget(WidgetInfo.LOGIN_CLICK_TO_PLAY_SCREEN) != null)
if (!config.showBindNeck())
{
return null;
}

View File

@@ -32,12 +32,10 @@ import java.awt.Graphics2D;
import java.awt.Rectangle;
import javax.inject.Inject;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.ItemID;
import net.runelite.api.Query;
import net.runelite.api.Varbits;
import net.runelite.api.queries.InventoryItemQuery;
import net.runelite.api.widgets.WidgetInfo;
import net.runelite.api.widgets.WidgetItem;
import net.runelite.client.RuneLite;
import net.runelite.client.ui.FontManager;
@@ -63,14 +61,13 @@ public class RunecraftOverlay extends Overlay
this.runelite = runelite;
this.client = runelite.getClient();
this.config = config;
this.setDrawOverBankScreen(true);
}
@Override
public Dimension render(Graphics2D graphics)
{
if (client.getGameState() != GameState.LOGGED_IN
|| !config.showPouch()
|| client.getWidget(WidgetInfo.LOGIN_CLICK_TO_PLAY_SCREEN) != null)
if (!config.showPouch())
{
return null;
}

View File

@@ -30,13 +30,11 @@ import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import javax.inject.Inject;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.ItemID;
import net.runelite.api.Point;
import net.runelite.api.Query;
import net.runelite.api.Varbits;
import net.runelite.api.queries.InventoryItemQuery;
import net.runelite.api.widgets.WidgetInfo;
import net.runelite.api.widgets.WidgetItem;
import net.runelite.client.RuneLite;
import net.runelite.client.ui.FontManager;
@@ -74,14 +72,13 @@ public class RunepouchOverlay extends Overlay
this.client = runelite.getClient();
this.config = config;
this.tooltipRenderer = overlayRenderer.getTooltipRenderer();
this.setDrawOverBankScreen(true);
}
@Override
public Dimension render(Graphics2D graphics)
{
if (!config.enabled()
|| client.getGameState() != GameState.LOGGED_IN
|| client.getWidget(WidgetInfo.LOGIN_CLICK_TO_PLAY_SCREEN) != null)
if (!config.enabled())
{
return null;
}

View File

@@ -37,7 +37,6 @@ import java.util.Collection;
import java.util.Set;
import javax.inject.Inject;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.ItemID;
import net.runelite.api.Query;
import net.runelite.api.queries.EquipmentItemQuery;
@@ -97,9 +96,7 @@ class SlayerOverlay extends Overlay
@Override
public Dimension render(Graphics2D graphics)
{
if (client.getGameState() != GameState.LOGGED_IN
|| !config.enabled()
|| client.getWidget(WidgetInfo.LOGIN_CLICK_TO_PLAY_SCREEN) != null)
if (!config.enabled())
{
return null;
}

View File

@@ -30,7 +30,6 @@ import java.awt.Graphics2D;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.Point;
import net.runelite.api.Varbits;
import net.runelite.api.widgets.Widget;
@@ -68,7 +67,7 @@ public class SpecOrbOverlay extends Overlay
@Override
public Dimension render(Graphics2D graphics)
{
if (client.getGameState() != GameState.LOGGED_IN || !config.enabled())
if (!config.enabled())
{
return null;
}

View File

@@ -42,7 +42,6 @@ import javax.inject.Inject;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client;
import net.runelite.api.GameObject;
import net.runelite.api.GameState;
import net.runelite.api.Perspective;
import net.runelite.api.Point;
import net.runelite.api.Prayer;
@@ -82,7 +81,7 @@ public class VolcanicMineOverlay extends Overlay
@Override
public Dimension render(Graphics2D graphics)
{
if (client == null || client.getGameState() != GameState.LOGGED_IN || !plugin.getInside() || !config.enabled())
if (client == null || !plugin.getInside() || !config.enabled())
{
return null;
}

View File

@@ -35,7 +35,6 @@ import javax.annotation.Nullable;
import javax.inject.Inject;
import static net.runelite.api.AnimationID.*;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.OverlayPriority;
@@ -75,7 +74,7 @@ class WoodcuttingOverlay extends Overlay
@Override
public Dimension render(Graphics2D graphics)
{
if (client.getGameState() != GameState.LOGGED_IN || !config.enabled())
if (!config.enabled())
{
return null;
}

View File

@@ -41,7 +41,6 @@ import javax.inject.Inject;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client;
import net.runelite.api.Experience;
import net.runelite.api.GameState;
import net.runelite.api.Point;
import net.runelite.api.Skill;
import net.runelite.client.ui.overlay.Overlay;
@@ -87,7 +86,7 @@ public class XpGlobesOverlay extends Overlay
{
// won't draw if not logged in or not enabled
if (client.getGameState() != GameState.LOGGED_IN || !config.enabled())
if (!config.enabled())
{
return null;
}

View File

@@ -41,7 +41,6 @@ import javax.imageio.ImageIO;
import javax.inject.Inject;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.Perspective;
import net.runelite.api.Point;
import net.runelite.api.Prayer;
@@ -85,7 +84,7 @@ public class ZulrahOverlay extends Overlay
{
ZulrahInstance instance = plugin.getInstance();
if (instance == null || client.getGameState() != GameState.LOGGED_IN)
if (instance == null)
{
return null;
}

View File

@@ -43,6 +43,9 @@ public class DynamicRenderer implements Renderer
{
for (Overlay overlay : overlays)
{
if (!overlay.isDrawn())
continue;
Graphics2D graphics = clientBuffer.createGraphics();
Renderer.setAntiAliasing(graphics);
overlay.render(graphics);

View File

@@ -25,6 +25,11 @@
package net.runelite.client.ui.overlay;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.widgets.WidgetInfo;
import javax.inject.Inject;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Rectangle;
@@ -34,6 +39,12 @@ public abstract class Overlay
private OverlayPosition position; // where to draw it
private OverlayPriority priority; // if multiple overlays exist in the same position, who wins
private Rectangle bounds; //screen bounds of overlay after OverlayRenderer decides location
private boolean drawOverLoginScreen = false;
private boolean drawOverBankScreen = false;
private boolean drawOverClickToPlayScreen = false;
@Inject
Client client;
public Overlay(OverlayPosition position)
{
@@ -77,4 +88,38 @@ public abstract class Overlay
{
this.bounds = bounds;
}
public boolean isDrawn()
{
if (client == null)
return false;
if (!drawOverLoginScreen && client.getGameState() != GameState.LOGGED_IN)
{
return false;
}
if (!drawOverClickToPlayScreen && client.getWidget(WidgetInfo.LOGIN_CLICK_TO_PLAY_SCREEN) != null)
{
return false;
}
if (!drawOverBankScreen && client.getWidget(WidgetInfo.BANK_INVENTORY_ITEMS_CONTAINER) != null)
{
return false;
}
return true;
}
public void setDrawOverLoginScreen(boolean drawOverLoginScreen)
{
this.drawOverLoginScreen = drawOverLoginScreen;
}
public void setDrawOverBankScreen(boolean drawOverBankScreen)
{
this.drawOverBankScreen = drawOverBankScreen;
}
public void setDrawOverClickToPlayScreen(boolean drawOverClickToPlayScreen)
{
this.drawOverClickToPlayScreen = drawOverClickToPlayScreen;
}
}

View File

@@ -52,6 +52,9 @@ public class TopDownRendererLeft implements Renderer
for (Overlay overlay : overlays)
{
if (!overlay.isDrawn())
continue;
BufferedImage image = clientBuffer.getSubimage(BORDER_LEFT, y, clientBuffer.getWidth() - BORDER_LEFT, clientBuffer.getHeight() - y);
Graphics2D graphics = image.createGraphics();
Renderer.setAntiAliasing(graphics);

View File

@@ -30,6 +30,7 @@ import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.List;
import net.runelite.api.Client;
public class TopDownRendererRight implements Renderer
@@ -62,6 +63,9 @@ public class TopDownRendererRight implements Renderer
for (Overlay overlay : overlays)
{
if (!overlay.isDrawn())
continue;
BufferedImage image = new BufferedImage(clientWidth, clientHeight, BufferedImage.TYPE_INT_ARGB);
Graphics2D graphics = image.createGraphics();
Renderer.setAntiAliasing(graphics);

View File

@@ -33,7 +33,6 @@ import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.util.List;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.Point;
import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition;
@@ -63,11 +62,6 @@ public class InfoBoxOverlay extends Overlay
@Override
public Dimension render(Graphics2D graphics)
{
if (client.getGameState() != GameState.LOGGED_IN)
{
return null;
}
List<InfoBox> infoBoxes = infoboxManager.getInfoBoxes();
if (infoBoxes.isEmpty())