diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java index 3b253dcce9..ad56114ddd 100644 --- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java +++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java @@ -57,6 +57,7 @@ public class WidgetID public static final int BA_DEFENDER_GROUP_ID = 487; public static final int BA_HEALER_GROUP_ID = 488; public static final int LEVEL_UP_GROUP_ID = 233; + public static final int HUNTER_LEVEL_UP_GROUP_ID = 193; public static final int QUEST_COMPLETED_GROUP_ID = 277; public static final int CLUE_SCROLL_REWARD_GROUP_ID = 73; public static final int BARROWS_REWARD_GROUP_ID = 155; diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java index e4af7f9a35..261031a4d7 100644 --- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java +++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java @@ -162,6 +162,10 @@ public enum WidgetInfo LEVEL_UP_SKILL(WidgetID.LEVEL_UP_GROUP_ID, WidgetID.LevelUp.SKILL), LEVEL_UP_LEVEL(WidgetID.LEVEL_UP_GROUP_ID, WidgetID.LevelUp.LEVEL), + HUNTER_LEVEL_UP(WidgetID.HUNTER_LEVEL_UP_GROUP_ID, 0), + HUNTER_LEVEL_UP_SKILL(WidgetID.HUNTER_LEVEL_UP_GROUP_ID, WidgetID.LevelUp.SKILL), + HUNTER_LEVEL_UP_LEVEL(WidgetID.HUNTER_LEVEL_UP_GROUP_ID, WidgetID.LevelUp.LEVEL), + QUEST_COMPLETED(WidgetID.QUEST_COMPLETED_GROUP_ID, 0), QUEST_COMPLETED_NAME_TEXT(WidgetID.QUEST_COMPLETED_GROUP_ID, WidgetID.QuestCompleted.NAME_TEXT), 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 07f6807b8c..8f5bdac0fa 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 @@ -61,6 +61,7 @@ import net.runelite.api.events.WidgetHiddenChanged; import net.runelite.api.widgets.Widget; import static net.runelite.api.widgets.WidgetID.BARROWS_REWARD_GROUP_ID; import static net.runelite.api.widgets.WidgetID.CLUE_SCROLL_REWARD_GROUP_ID; +import static net.runelite.api.widgets.WidgetID.HUNTER_LEVEL_UP_GROUP_ID; import static net.runelite.api.widgets.WidgetID.LEVEL_UP_GROUP_ID; import static net.runelite.api.widgets.WidgetID.QUEST_COMPLETED_GROUP_ID; import net.runelite.api.widgets.WidgetInfo; @@ -249,22 +250,12 @@ public class ScreenshotPlugin extends Plugin { case LEVEL_UP_GROUP_ID: { - Widget skillChild = client.getWidget(WidgetInfo.LEVEL_UP_SKILL); - Widget levelChild = client.getWidget(WidgetInfo.LEVEL_UP_LEVEL); - - if (skillChild == null || levelChild == null) - { - return; - } - - // "Your Firemaking level is now 9." - String skillText = skillChild.getText(); - String levelText = levelChild.getText(); - - String skillName = skillText.substring(skillText.indexOf("a ") + 2, skillText.indexOf(" level.")); - String skillLevel = levelText.substring(levelText.lastIndexOf(" ") + 1, levelText.length() - 1); - - fileName = skillName + " (" + skillLevel + ")"; + fileName = parseLevelUpWidget(WidgetInfo.LEVEL_UP_SKILL, WidgetInfo.LEVEL_UP_LEVEL); + break; + } + case HUNTER_LEVEL_UP_GROUP_ID: + { + fileName = parseLevelUpWidget(WidgetInfo.HUNTER_LEVEL_UP_SKILL, WidgetInfo.HUNTER_LEVEL_UP_LEVEL); break; } case QUEST_COMPLETED_GROUP_ID: @@ -309,9 +300,36 @@ public class ScreenshotPlugin extends Plugin return; } + if (fileName == null) + { + return; + } + takeScreenshot(fileName, config.displayDate()); } + public String parseLevelUpWidget(WidgetInfo levelUpSkill, WidgetInfo levelUpLevel) + { + Widget skillChild = client.getWidget(levelUpSkill); + Widget levelChild = client.getWidget(levelUpLevel); + + if (skillChild == null || levelChild == null) + { + return null; + } + + // "Congratulations, you just advanced a Firemaking level." + String skillText = skillChild.getText(); + // "Your Firemaking level is now 9." + String levelText = levelChild.getText(); + + String[] splitSkillName = skillText.split(" "); + String skillName = splitSkillName[splitSkillName.length - 2]; + String skillLevel = levelText.substring(levelText.lastIndexOf(" ") + 1, levelText.length() - 1); + + return skillName + "(" + skillLevel + ")"; + } + private void takeScreenshot(String fileName, boolean displayDate) { if (client.getGameState() == GameState.LOGIN_SCREEN) 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 bb51c2ccdd..8d4efc0e76 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 @@ -35,7 +35,10 @@ import net.runelite.api.Client; import net.runelite.api.events.ChatMessage; import net.runelite.api.events.WidgetHiddenChanged; import net.runelite.api.widgets.Widget; +import static net.runelite.api.widgets.WidgetID.HUNTER_LEVEL_UP_GROUP_ID; import static net.runelite.api.widgets.WidgetID.LEVEL_UP_GROUP_ID; +import static net.runelite.api.widgets.WidgetInfo.HUNTER_LEVEL_UP_LEVEL; +import static net.runelite.api.widgets.WidgetInfo.HUNTER_LEVEL_UP_SKILL; import static net.runelite.api.widgets.WidgetInfo.LEVEL_UP_LEVEL; import static net.runelite.api.widgets.WidgetInfo.LEVEL_UP_SKILL; import static net.runelite.api.widgets.WidgetInfo.PACK; @@ -133,6 +136,8 @@ public class ScreenshotPluginTest when(skillChild.getText()).thenReturn("Congratulations, you just advanced a Hitpoints level."); when(levelChild.getText()).thenReturn("Your Hitpoints are now 99."); + assertEquals("Hitpoints(99)", screenshotPlugin.parseLevelUpWidget(LEVEL_UP_SKILL, LEVEL_UP_LEVEL)); + WidgetHiddenChanged event = new WidgetHiddenChanged(); event.setWidget(widget); screenshotPlugin.hideWidgets(event); @@ -155,6 +160,56 @@ public class ScreenshotPluginTest when(skillChild.getText()).thenReturn("Congratulations, you just advanced a Firemaking level."); when(levelChild.getText()).thenReturn("Your Firemaking level is now 9."); + assertEquals("Firemaking(9)", screenshotPlugin.parseLevelUpWidget(LEVEL_UP_SKILL, LEVEL_UP_LEVEL)); + + WidgetHiddenChanged event = new WidgetHiddenChanged(); + event.setWidget(widget); + screenshotPlugin.hideWidgets(event); + + verify(overlayRenderer).requestScreenshot(Matchers.any(Consumer.class)); + } + + @Test + public void testAttack() + { + Widget widget = mock(Widget.class); + when(widget.getId()).thenReturn(PACK(LEVEL_UP_GROUP_ID, 0)); + + Widget skillChild = mock(Widget.class); + when(client.getWidget(Matchers.eq(LEVEL_UP_SKILL))).thenReturn(skillChild); + + Widget levelChild = mock(Widget.class); + when(client.getWidget(Matchers.eq(LEVEL_UP_LEVEL))).thenReturn(levelChild); + + when(skillChild.getText()).thenReturn("Congratulations, you just advanced an Attack level."); + when(levelChild.getText()).thenReturn("Your Attack level is now 70."); + + assertEquals("Attack(70)", screenshotPlugin.parseLevelUpWidget(LEVEL_UP_SKILL, LEVEL_UP_LEVEL)); + + WidgetHiddenChanged event = new WidgetHiddenChanged(); + event.setWidget(widget); + screenshotPlugin.hideWidgets(event); + + verify(overlayRenderer).requestScreenshot(Matchers.any(Consumer.class)); + } + + @Test + public void testHunter() + { + Widget widget = mock(Widget.class); + when(widget.getId()).thenReturn(PACK(HUNTER_LEVEL_UP_GROUP_ID, 0)); + + Widget skillChild = mock(Widget.class); + when(client.getWidget(Matchers.eq(HUNTER_LEVEL_UP_SKILL))).thenReturn(skillChild); + + Widget levelChild = mock(Widget.class); + when(client.getWidget(Matchers.eq(HUNTER_LEVEL_UP_LEVEL))).thenReturn(levelChild); + + when(skillChild.getText()).thenReturn("Congratulations, you just advanced a Hunter level."); + when(levelChild.getText()).thenReturn("Your Hunter level is now 2."); + + assertEquals("Hunter(2)", screenshotPlugin.parseLevelUpWidget(HUNTER_LEVEL_UP_SKILL, HUNTER_LEVEL_UP_LEVEL)); + WidgetHiddenChanged event = new WidgetHiddenChanged(); event.setWidget(widget); screenshotPlugin.hideWidgets(event);