From 35ddeebf04ae84ca10078d1fcb52bba1654637a5 Mon Sep 17 00:00:00 2001 From: Adam Date: Sun, 13 Jun 2021 18:02:10 -0400 Subject: [PATCH] screenshot plugin: add tob story and hard mode screenshots --- .../plugins/screenshot/ScreenshotPlugin.java | 16 +++++-- .../screenshot/ScreenshotPluginTest.java | 48 +++++++++++++++++++ 2 files changed, 60 insertions(+), 4 deletions(-) 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 6b67de55a2..93635e3ec5 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 @@ -139,7 +139,9 @@ public class ScreenshotPlugin extends Plugin BARROWS, COX, COX_CM, - TOB + TOB, + TOB_SM, + TOB_HM } private KillType killType; @@ -389,12 +391,12 @@ public class ScreenshotPlugin extends Plugin } } - if (chatMessage.startsWith("Your completed Theatre of Blood count is:")) + if (chatMessage.startsWith("Your completed Theatre of Blood")) { Matcher m = NUMBER_PATTERN.matcher(Text.removeTags(chatMessage)); if (m.find()) { - killType = KillType.TOB; + killType = chatMessage.contains("Hard Mode") ? KillType.TOB_HM : (chatMessage.contains("Story Mode") ? KillType.TOB_SM : KillType.TOB); killCountNumber = Integer.valueOf(m.group()); return; } @@ -554,7 +556,7 @@ public class ScreenshotPlugin extends Plugin } case THEATRE_OF_BLOOD_REWARD_GROUP_ID: { - if (killType != KillType.TOB) + if (killType != KillType.TOB && killType != KillType.TOB_SM && killType != KillType.TOB_HM) { return; } @@ -788,6 +790,12 @@ public class ScreenshotPlugin extends Plugin return clueType; } + @VisibleForTesting + KillType getKillType() + { + return killType; + } + @VisibleForTesting int getKillCountNumber() { diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/screenshot/ScreenshotPluginTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/screenshot/ScreenshotPluginTest.java index 06885f4854..2664c031e7 100644 --- a/runelite-client/src/test/java/net/runelite/client/plugins/screenshot/ScreenshotPluginTest.java +++ b/runelite-client/src/test/java/net/runelite/client/plugins/screenshot/ScreenshotPluginTest.java @@ -36,6 +36,7 @@ import net.runelite.api.events.ChatMessage; import net.runelite.api.events.GameTick; import net.runelite.api.events.WidgetLoaded; import net.runelite.api.widgets.Widget; +import net.runelite.api.widgets.WidgetID; import static net.runelite.api.widgets.WidgetID.DIALOG_SPRITE_GROUP_ID; import static net.runelite.api.widgets.WidgetID.LEVEL_UP_GROUP_ID; import static net.runelite.api.widgets.WidgetInfo.DIALOG_SPRITE_TEXT; @@ -68,6 +69,8 @@ public class ScreenshotPluginTest private static final String BARROWS_CHEST = "Your Barrows chest count is 310"; private static final String CHAMBERS_OF_XERIC_CHEST = "Your completed Chambers of Xeric count is: 489."; private static final String THEATRE_OF_BLOOD_CHEST = "Your completed Theatre of Blood count is: 73."; + private static final String THREATRE_OF_BLOOD_SM_CHEST = "Your completed Theatre of Blood: Story Mode count is: 73."; + private static final String THREATRE_OF_BLOOD_HM_CHEST = "Your completed Theatre of Blood: Hard Mode count is: 73."; private static final String NOT_SO_VALUABLE_DROP = "Valuable drop: 6 x Bronze arrow (42 coins)"; private static final String VALUABLE_DROP = "Valuable drop: Rune scimitar (25,600 coins)"; private static final String UNTRADEABLE_DROP = "Untradeable drop: Rusty sword"; @@ -158,10 +161,55 @@ public class ScreenshotPluginTest @Test public void testTheatreOfBloodChest() { + when(screenshotConfig.screenshotRewards()).thenReturn(true); + ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "Magic fTail", THEATRE_OF_BLOOD_CHEST, null, 0); screenshotPlugin.onChatMessage(chatMessageEvent); assertEquals(73, screenshotPlugin.getKillCountNumber()); + assertEquals(ScreenshotPlugin.KillType.TOB, screenshotPlugin.getKillType()); + + WidgetLoaded widgetLoaded = new WidgetLoaded(); + widgetLoaded.setGroupId(WidgetID.THEATRE_OF_BLOOD_REWARD_GROUP_ID); + screenshotPlugin.onWidgetLoaded(widgetLoaded); + + verify(drawManager).requestNextFrameListener(any(Consumer.class)); + } + + @Test + public void testTheatreOfBloodSmChest() + { + when(screenshotConfig.screenshotRewards()).thenReturn(true); + + ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "Magic fTail", THREATRE_OF_BLOOD_SM_CHEST, null, 0); + screenshotPlugin.onChatMessage(chatMessageEvent); + + assertEquals(73, screenshotPlugin.getKillCountNumber()); + assertEquals(ScreenshotPlugin.KillType.TOB_SM, screenshotPlugin.getKillType()); + + WidgetLoaded widgetLoaded = new WidgetLoaded(); + widgetLoaded.setGroupId(WidgetID.THEATRE_OF_BLOOD_REWARD_GROUP_ID); + screenshotPlugin.onWidgetLoaded(widgetLoaded); + + verify(drawManager).requestNextFrameListener(any(Consumer.class)); + } + + @Test + public void testTheatreOfBloodHmChest() + { + when(screenshotConfig.screenshotRewards()).thenReturn(true); + + ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "Magic fTail", THREATRE_OF_BLOOD_HM_CHEST, null, 0); + screenshotPlugin.onChatMessage(chatMessageEvent); + + assertEquals(73, screenshotPlugin.getKillCountNumber()); + assertEquals(ScreenshotPlugin.KillType.TOB_HM, screenshotPlugin.getKillType()); + + WidgetLoaded widgetLoaded = new WidgetLoaded(); + widgetLoaded.setGroupId(WidgetID.THEATRE_OF_BLOOD_REWARD_GROUP_ID); + screenshotPlugin.onWidgetLoaded(widgetLoaded); + + verify(drawManager).requestNextFrameListener(any(Consumer.class)); } @Test