diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/DynamicRenderer.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/DynamicRenderer.java index 01c20f3391..8b79610520 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/DynamicRenderer.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/DynamicRenderer.java @@ -28,11 +28,18 @@ import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.util.ArrayList; import java.util.List; +import net.runelite.api.Client; public class DynamicRenderer implements Renderer { + private final Client client; private final List overlays = new ArrayList<>(); + public DynamicRenderer(Client client) + { + this.client = client; + } + public void add(Overlay overlay) { overlays.add(overlay); @@ -43,7 +50,7 @@ public class DynamicRenderer implements Renderer { for (Overlay overlay : overlays) { - if (!overlay.isDrawn()) + if (!overlay.shouldDraw(client)) continue; Graphics2D graphics = clientBuffer.createGraphics(); diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/Overlay.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/Overlay.java index e1687cffd7..e5441ac322 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/Overlay.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/Overlay.java @@ -22,17 +22,14 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - 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; +import net.runelite.api.Client; +import net.runelite.api.GameState; +import net.runelite.api.widgets.WidgetInfo; public abstract class Overlay { @@ -43,9 +40,6 @@ public abstract class Overlay private boolean drawOverBankScreen = false; private boolean drawOverClickToPlayScreen = false; - @Inject - Client client; - public Overlay(OverlayPosition position) { this(position, OverlayPriority.NONE); @@ -89,10 +83,12 @@ public abstract class Overlay this.bounds = bounds; } - public boolean isDrawn() + public boolean shouldDraw(Client client) { if (client == null) + { return false; + } if (!drawOverLoginScreen && client.getGameState() != GameState.LOGGED_IN) { return false; diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java index a085bacbce..b2d721d1ce 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java @@ -56,9 +56,9 @@ public class OverlayRenderer public void render(BufferedImage clientBuffer) { - TopDownRendererLeft tdl = new TopDownRendererLeft(); + TopDownRendererLeft tdl = new TopDownRendererLeft(client); TopDownRendererRight tdr = new TopDownRendererRight(client); - DynamicRenderer dr = new DynamicRenderer(); + DynamicRenderer dr = new DynamicRenderer(client); for (Plugin plugin : pluginManager.getPlugins()) { for (Overlay overlay : plugin.getOverlays()) diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/TopDownRendererLeft.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/TopDownRendererLeft.java index a5bee64e64..8e40067b02 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/TopDownRendererLeft.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/TopDownRendererLeft.java @@ -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 TopDownRendererLeft implements Renderer { @@ -37,8 +38,14 @@ public class TopDownRendererLeft implements Renderer private static final int BORDER_LEFT = 10; private static final int PADDING = 10; + private final Client client; private final List overlays = new ArrayList<>(); + public TopDownRendererLeft(Client client) + { + this.client = client; + } + public void add(Overlay overlay) { overlays.add(overlay); @@ -52,7 +59,7 @@ public class TopDownRendererLeft implements Renderer for (Overlay overlay : overlays) { - if (!overlay.isDrawn()) + if (!overlay.shouldDraw(client)) continue; BufferedImage image = clientBuffer.getSubimage(BORDER_LEFT, y, clientBuffer.getWidth() - BORDER_LEFT, clientBuffer.getHeight() - y); diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/TopDownRendererRight.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/TopDownRendererRight.java index 67942c47c4..c1ed57350e 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/TopDownRendererRight.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/TopDownRendererRight.java @@ -63,7 +63,7 @@ public class TopDownRendererRight implements Renderer for (Overlay overlay : overlays) { - if (!overlay.isDrawn()) + if (!overlay.shouldDraw(client)) continue; BufferedImage image = new BufferedImage(clientWidth, clientHeight, BufferedImage.TYPE_INT_ARGB);