runelite-client: fix infoboxes

Infobox overlay is not created by the injector so client was not being injected

Fixed from 403f7bd5d7a3d514a9dcec067cfdba622e3361b0
This commit is contained in:
Adam
2017-12-02 21:00:00 -05:00
parent 53b4df8ae9
commit 6bc9cccf41
5 changed files with 25 additions and 15 deletions

View File

@@ -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<Overlay> 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();

View File

@@ -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;

View File

@@ -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())

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 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<Overlay> 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);

View File

@@ -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);