Add support for the virtual level up message to screenshot plugin

This commit is contained in:
Magic fTail
2018-12-17 08:50:08 +01:00
parent 3bdf8aa2fc
commit e0aa7dc67f
3 changed files with 36 additions and 25 deletions

View File

@@ -68,6 +68,7 @@ import net.runelite.api.events.WidgetLoaded;
import net.runelite.api.widgets.Widget;
import static net.runelite.api.widgets.WidgetID.BARROWS_REWARD_GROUP_ID;
import static net.runelite.api.widgets.WidgetID.CHAMBERS_OF_XERIC_REWARD_GROUP_ID;
import static net.runelite.api.widgets.WidgetID.CHATBOX_GROUP_ID;
import static net.runelite.api.widgets.WidgetID.CLUE_SCROLL_REWARD_GROUP_ID;
import static net.runelite.api.widgets.WidgetID.DIALOG_SPRITE_GROUP_ID;
import static net.runelite.api.widgets.WidgetID.KINGDOM_GROUP_ID;
@@ -265,11 +266,11 @@ public class ScreenshotPlugin extends Plugin
String fileName = null;
if (client.getWidget(WidgetInfo.LEVEL_UP_LEVEL) != null)
{
fileName = parseLevelUpWidget(WidgetInfo.LEVEL_UP_LEVEL);
fileName = parseLevelUpWidget(client.getWidget(WidgetInfo.LEVEL_UP_LEVEL));
}
else if (client.getWidget(WidgetInfo.DIALOG_SPRITE_TEXT) != null)
{
fileName = parseLevelUpWidget(WidgetInfo.DIALOG_SPRITE_TEXT);
fileName = parseLevelUpWidget(client.getWidget(WidgetInfo.DIALOG_SPRITE_TEXT));
}
else if (client.getWidget(WidgetInfo.QUEST_COMPLETED_NAME_TEXT) != null)
{
@@ -277,6 +278,10 @@ public class ScreenshotPlugin extends Plugin
String text = client.getWidget(WidgetInfo.QUEST_COMPLETED_NAME_TEXT).getText();
fileName = "Quest(" + text.substring(19, text.length() - 1) + ")";
}
else if (client.getWidget(WidgetInfo.CHATBOX_CONTAINER).getChild(1) != null)
{
fileName = parseLevelUpWidget(client.getWidget(WidgetInfo.CHATBOX_CONTAINER).getChild(1));
}
if (fileName != null)
{
@@ -401,6 +406,7 @@ public class ScreenshotPlugin extends Plugin
break;
case LEVEL_UP_GROUP_ID:
case DIALOG_SPRITE_GROUP_ID:
case CHATBOX_GROUP_ID:
if (!config.screenshotLevels())
{
return;
@@ -458,6 +464,7 @@ public class ScreenshotPlugin extends Plugin
case LEVEL_UP_GROUP_ID:
case DIALOG_SPRITE_GROUP_ID:
case QUEST_COMPLETED_GROUP_ID:
case CHATBOX_GROUP_ID:
{
// level up widget gets loaded prior to the text being set, so wait until the next tick
shouldTakeScreenshot = true;
@@ -483,22 +490,21 @@ public class ScreenshotPlugin extends Plugin
}
/**
* Receives a WidgetInfo pointing to the middle widget of the level-up dialog,
* Receives a Widget containing the level-up dialog,
* and parses it into a shortened string for filename usage.
*
* @param levelUpLevel WidgetInfo pointing to the required text widget,
* @param levelUpWidget Widget containing the level-up text,
* with the format "Your Skill (level is/are) now 99."
* @return Shortened string in the format "Skill(99)"
*/
String parseLevelUpWidget(WidgetInfo levelUpLevel)
String parseLevelUpWidget(Widget levelUpWidget)
{
Widget levelChild = client.getWidget(levelUpLevel);
if (levelChild == null)
if (levelUpWidget == null)
{
return null;
}
Matcher m = LEVEL_UP_PATTERN.matcher(levelChild.getText());
Matcher m = LEVEL_UP_PATTERN.matcher(levelUpWidget.getText());
if (!m.matches())
{
return null;

View File

@@ -43,8 +43,10 @@ import net.runelite.api.events.ExperienceChanged;
import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.GameTick;
import net.runelite.api.events.ScriptCallbackEvent;
import net.runelite.api.events.WidgetLoaded;
import net.runelite.api.widgets.JavaScriptCallback;
import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetID;
import net.runelite.api.widgets.WidgetInfo;
import net.runelite.api.widgets.WidgetPositionMode;
import net.runelite.api.widgets.WidgetSizeMode;
@@ -354,6 +356,9 @@ public class VirtualLevelsPlugin extends Plugin implements KeyListener
clientThread.invoke(() -> client.runScript(ScriptID.CLEAR_CHATBOX_PANEL));
clientThread.invoke(() -> buildVirtualLevelUp(skill));
WidgetLoaded widgetLoaded = new WidgetLoaded();
widgetLoaded.setGroupId(WidgetID.CHATBOX_GROUP_ID);
eventBus.post(widgetLoaded);
}
@Override

View File

@@ -167,12 +167,12 @@ public class ScreenshotPluginTest
Widget widget = mock(Widget.class);
when(widget.getId()).thenReturn(PACK(LEVEL_UP_GROUP_ID, 0));
Widget levelChild = mock(Widget.class);
when(client.getWidget(Matchers.eq(LEVEL_UP_LEVEL))).thenReturn(levelChild);
Widget levelUpWidget = mock(Widget.class);
when(client.getWidget(Matchers.eq(LEVEL_UP_LEVEL))).thenReturn(levelUpWidget);
when(levelChild.getText()).thenReturn("Your Hitpoints are now 99.");
when(levelUpWidget.getText()).thenReturn("Your Hitpoints are now 99.");
assertEquals("Hitpoints(99)", screenshotPlugin.parseLevelUpWidget(LEVEL_UP_LEVEL));
assertEquals("Hitpoints(99)", screenshotPlugin.parseLevelUpWidget(levelUpWidget));
WidgetLoaded event = new WidgetLoaded();
event.setGroupId(LEVEL_UP_GROUP_ID);
@@ -190,12 +190,12 @@ public class ScreenshotPluginTest
Widget widget = mock(Widget.class);
when(widget.getId()).thenReturn(PACK(LEVEL_UP_GROUP_ID, 0));
Widget levelChild = mock(Widget.class);
when(client.getWidget(Matchers.eq(LEVEL_UP_LEVEL))).thenReturn(levelChild);
Widget levelUpWidget = mock(Widget.class);
when(client.getWidget(Matchers.eq(LEVEL_UP_LEVEL))).thenReturn(levelUpWidget);
when(levelChild.getText()).thenReturn("Your Firemaking level is now 9.");
when(levelUpWidget.getText()).thenReturn("Your Firemaking level is now 9.");
assertEquals("Firemaking(9)", screenshotPlugin.parseLevelUpWidget(LEVEL_UP_LEVEL));
assertEquals("Firemaking(9)", screenshotPlugin.parseLevelUpWidget(levelUpWidget));
WidgetLoaded event = new WidgetLoaded();
event.setGroupId(LEVEL_UP_GROUP_ID);
@@ -213,12 +213,12 @@ public class ScreenshotPluginTest
Widget widget = mock(Widget.class);
when(widget.getId()).thenReturn(PACK(LEVEL_UP_GROUP_ID, 0));
Widget levelChild = mock(Widget.class);
when(client.getWidget(Matchers.eq(LEVEL_UP_LEVEL))).thenReturn(levelChild);
Widget levelUpWidget = mock(Widget.class);
when(client.getWidget(Matchers.eq(LEVEL_UP_LEVEL))).thenReturn(levelUpWidget);
when(levelChild.getText()).thenReturn("Your Attack level is now 70.");
when(levelUpWidget.getText()).thenReturn("Your Attack level is now 70.");
assertEquals("Attack(70)", screenshotPlugin.parseLevelUpWidget(LEVEL_UP_LEVEL));
assertEquals("Attack(70)", screenshotPlugin.parseLevelUpWidget(levelUpWidget));
WidgetLoaded event = new WidgetLoaded();
event.setGroupId(LEVEL_UP_GROUP_ID);
@@ -236,12 +236,12 @@ public class ScreenshotPluginTest
Widget widget = mock(Widget.class);
when(widget.getId()).thenReturn(PACK(DIALOG_SPRITE_GROUP_ID, 0));
Widget levelChild = mock(Widget.class);
when(client.getWidget(Matchers.eq(DIALOG_SPRITE_TEXT))).thenReturn(levelChild);
Widget levelUpWidget = mock(Widget.class);
when(client.getWidget(Matchers.eq(DIALOG_SPRITE_TEXT))).thenReturn(levelUpWidget);
when(levelChild.getText()).thenReturn("<col=000080>Congratulations, you've just advanced a Hunter level.<col=000000><br><br>Your Hunter level is now 2.");
when(levelUpWidget.getText()).thenReturn("<col=000080>Congratulations, you've just advanced a Hunter level.<col=000000><br><br>Your Hunter level is now 2.");
assertEquals("Hunter(2)", screenshotPlugin.parseLevelUpWidget(DIALOG_SPRITE_TEXT));
assertEquals("Hunter(2)", screenshotPlugin.parseLevelUpWidget(levelUpWidget));
WidgetLoaded event = new WidgetLoaded();
event.setGroupId(DIALOG_SPRITE_GROUP_ID);
@@ -252,4 +252,4 @@ public class ScreenshotPluginTest
verify(drawManager).requestNextFrameListener(Matchers.any(Consumer.class));
}
}
}