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 86455127d6..3c20fd1e78 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 @@ -256,7 +256,8 @@ public class WidgetID static class LevelUp { - static final int TEXT = 1; + static final int SKILL = 0; + static final int LEVEL = 1; } static class QuestCompleted 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 b18b4b06a2..5e5f6f6c84 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 @@ -157,7 +157,8 @@ public enum WidgetInfo BA_DEF_ROLE_SPRITE(WidgetID.BA_DEFENDER_GROUP_ID, WidgetID.BarbarianAssault.ROLE_SPRITE), LEVEL_UP(WidgetID.LEVEL_UP_GROUP_ID, 0), - LEVEL_UP_TEXT(WidgetID.LEVEL_UP_GROUP_ID, WidgetID.LevelUp.TEXT), + LEVEL_UP_SKILL(WidgetID.LEVEL_UP_GROUP_ID, WidgetID.LevelUp.SKILL), + LEVEL_UP_LEVEL(WidgetID.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 ad81d5d8a7..7df0ba15ab 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 @@ -247,18 +247,20 @@ public class ScreenshotPlugin extends Plugin { case LEVEL_UP_GROUP_ID: { - Widget textChild = client.getWidget(WidgetInfo.LEVEL_UP_TEXT); + Widget skillChild = client.getWidget(WidgetInfo.LEVEL_UP_SKILL); + Widget levelChild = client.getWidget(WidgetInfo.LEVEL_UP_LEVEL); - if (textChild == null) + if (skillChild == null || levelChild == null) { return; } // "Your Firemaking level is now 9." - String text = textChild.getText(); + String skillText = skillChild.getText(); + String levelText = levelChild.getText(); - String skillName = text.substring(5, text.indexOf(" level")); - String skillLevel = text.substring(text.lastIndexOf(" ") + 1, text.length() - 1); + String skillName = skillText.substring(skillText.indexOf("a ") + 2, skillText.indexOf(" level.")); + String skillLevel = levelText.substring(levelText.lastIndexOf(" ") + 1, levelText.length() - 1); fileName = skillName + " (" + skillLevel + ")"; break; 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 d3bde58db5..d1b4ca3cf7 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 @@ -28,10 +28,17 @@ import com.google.inject.Guice; import com.google.inject.testing.fieldbinder.Bind; import com.google.inject.testing.fieldbinder.BoundFieldModule; import java.util.concurrent.ScheduledExecutorService; +import java.util.function.Consumer; import javax.inject.Inject; import static net.runelite.api.ChatMessageType.SERVER; 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.LEVEL_UP_GROUP_ID; +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; import net.runelite.client.Notifier; import net.runelite.client.config.RuneLiteConfig; import net.runelite.client.ui.ClientUI; @@ -40,7 +47,11 @@ import static org.junit.Assert.assertEquals; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.Matchers; import org.mockito.Mock; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import org.mockito.runners.MockitoJUnitRunner; @RunWith(MockitoJUnitRunner.class) @@ -104,4 +115,48 @@ public class ScreenshotPluginTest assertEquals(310, screenshotPlugin.getBarrowsNumber()); } + + @Test + public void testHitpoints() + { + 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 a Hitpoints level."); + when(levelChild.getText()).thenReturn("Your Hitpoints are now 99."); + + WidgetHiddenChanged event = new WidgetHiddenChanged(); + event.setWidget(widget); + screenshotPlugin.hideWidgets(event); + + verify(overlayRenderer).requestScreenshot(Matchers.any(Consumer.class)); + } + + @Test + public void testFiremaking() + { + 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 a Firemaking level."); + when(levelChild.getText()).thenReturn("Your Firemaking level is now 9."); + + WidgetHiddenChanged event = new WidgetHiddenChanged(); + event.setWidget(widget); + screenshotPlugin.hideWidgets(event); + + verify(overlayRenderer).requestScreenshot(Matchers.any(Consumer.class)); + } }