diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotOverlay.java index 69357d5bdb..07248ed58a 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotOverlay.java @@ -31,16 +31,13 @@ import java.awt.FontMetrics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.image.BufferedImage; -import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Queue; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.function.Consumer; -import javax.imageio.ImageIO; import javax.inject.Inject; -import lombok.extern.slf4j.Slf4j; import net.runelite.api.Client; import net.runelite.api.MainBufferProvider; import net.runelite.client.ui.DrawManager; @@ -50,41 +47,26 @@ import net.runelite.client.ui.overlay.OverlayLayer; import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPriority; -@Slf4j public class ScreenshotOverlay extends Overlay { private static final DateFormat DATE_FORMAT = new SimpleDateFormat("MMM. dd, yyyy"); private static final int REPORT_BUTTON_X_OFFSET = 404; - private static BufferedImage REPORT_BUTTON; - - static - { - try - { - synchronized (ImageIO.class) - { - REPORT_BUTTON = ImageIO.read(ScreenshotPlugin.class.getResourceAsStream("report_button.png")); - } - } - catch (IOException e) - { - log.warn("Report button image failed to load", e); - } - } private final Client client; private final DrawManager drawManager; + private final ScreenshotPlugin plugin; private final Queue> consumers = new ConcurrentLinkedQueue<>(); @Inject - public ScreenshotOverlay(Client client, DrawManager drawManager) + public ScreenshotOverlay(Client client, DrawManager drawManager, ScreenshotPlugin plugin) { setPosition(OverlayPosition.DYNAMIC); setPriority(OverlayPriority.HIGH); setLayer(OverlayLayer.ABOVE_WIDGETS); this.client = client; this.drawManager = drawManager; + this.plugin = plugin; } @Override @@ -97,9 +79,9 @@ public class ScreenshotOverlay extends Overlay final MainBufferProvider bufferProvider = (MainBufferProvider) client.getBufferProvider(); final int imageHeight = ((BufferedImage) bufferProvider.getImage()).getHeight(); - final int y = imageHeight - REPORT_BUTTON.getHeight() - 1; + final int y = imageHeight - plugin.getReportButton().getHeight() - 1; - graphics.drawImage(REPORT_BUTTON, REPORT_BUTTON_X_OFFSET, y, null); + graphics.drawImage(plugin.getReportButton(), REPORT_BUTTON_X_OFFSET, y, null); graphics.setFont(FontManager.getRunescapeSmallFont()); FontMetrics fontMetrics = graphics.getFontMetrics(); @@ -108,8 +90,8 @@ public class ScreenshotOverlay extends Overlay final int dateWidth = fontMetrics.stringWidth(date); final int dateHeight = fontMetrics.getHeight(); - final int textX = REPORT_BUTTON_X_OFFSET + REPORT_BUTTON.getWidth() / 2 - dateWidth / 2; - final int textY = y + REPORT_BUTTON.getHeight() / 2 + dateHeight / 2; + final int textX = REPORT_BUTTON_X_OFFSET + plugin.getReportButton().getWidth() / 2 - dateWidth / 2; + final int textY = y + plugin.getReportButton().getHeight() / 2 + dateHeight / 2; graphics.setColor(Color.BLACK); graphics.drawString(date, textX + 1, textY + 1); @@ -130,7 +112,7 @@ public class ScreenshotOverlay extends Overlay public void queueForTimestamp(Consumer screenshotConsumer) { - if (REPORT_BUTTON == null) + if (plugin.getReportButton() == null) { return; } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java index 01e4ab47c4..b9e26db8dc 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java @@ -52,13 +52,17 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.imageio.ImageIO; import javax.inject.Inject; +import lombok.AccessLevel; +import lombok.Getter; import lombok.extern.slf4j.Slf4j; import net.runelite.api.ChatMessageType; import net.runelite.api.Client; import net.runelite.api.GameState; import net.runelite.api.Point; +import net.runelite.api.SpriteID; import net.runelite.api.WorldType; import net.runelite.api.events.ChatMessage; +import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameTick; import net.runelite.api.events.WidgetLoaded; import net.runelite.api.widgets.Widget; @@ -74,6 +78,7 @@ import net.runelite.api.widgets.WidgetInfo; import net.runelite.client.Notifier; import static net.runelite.client.RuneLite.SCREENSHOT_DIR; import net.runelite.client.config.ConfigManager; +import net.runelite.client.game.SpriteManager; import net.runelite.client.input.KeyManager; import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; @@ -170,6 +175,12 @@ public class ScreenshotPlugin extends Plugin @Inject private KeyManager keyManager; + @Inject + private SpriteManager spriteManager; + + @Getter(AccessLevel.PACKAGE) + private BufferedImage reportButton; + private NavigationButton titleBarButton; private final HotkeyListener hotkeyListener = new HotkeyListener(() -> config.hotkey()) @@ -218,7 +229,6 @@ public class ScreenshotPlugin extends Plugin catch (IOException ex) { log.warn("Error opening screenshot dir", ex); - } }) .build()) @@ -240,6 +250,16 @@ public class ScreenshotPlugin extends Plugin keyManager.unregisterKeyListener(hotkeyListener); } + @Subscribe + public void onGameStateChanged(GameStateChanged event) + { + if (event.getGameState() == GameState.LOGGED_IN + && reportButton == null) + { + reportButton = spriteManager.getSprite(SpriteID.CHATBOX_REPORT_BUTTON, 0); + } + } + @Subscribe public void onGameTick(GameTick event) { diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/screenshot/report_button.png b/runelite-client/src/main/resources/net/runelite/client/plugins/screenshot/report_button.png deleted file mode 100644 index 34603643c6..0000000000 Binary files a/runelite-client/src/main/resources/net/runelite/client/plugins/screenshot/report_button.png and /dev/null differ