Add support for the virtual level up message to screenshot plugin
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user