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 net.runelite.api.widgets.Widget;
|
||||||
import static net.runelite.api.widgets.WidgetID.BARROWS_REWARD_GROUP_ID;
|
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.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.CLUE_SCROLL_REWARD_GROUP_ID;
|
||||||
import static net.runelite.api.widgets.WidgetID.DIALOG_SPRITE_GROUP_ID;
|
import static net.runelite.api.widgets.WidgetID.DIALOG_SPRITE_GROUP_ID;
|
||||||
import static net.runelite.api.widgets.WidgetID.KINGDOM_GROUP_ID;
|
import static net.runelite.api.widgets.WidgetID.KINGDOM_GROUP_ID;
|
||||||
@@ -265,11 +266,11 @@ public class ScreenshotPlugin extends Plugin
|
|||||||
String fileName = null;
|
String fileName = null;
|
||||||
if (client.getWidget(WidgetInfo.LEVEL_UP_LEVEL) != 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)
|
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)
|
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();
|
String text = client.getWidget(WidgetInfo.QUEST_COMPLETED_NAME_TEXT).getText();
|
||||||
fileName = "Quest(" + text.substring(19, text.length() - 1) + ")";
|
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)
|
if (fileName != null)
|
||||||
{
|
{
|
||||||
@@ -401,6 +406,7 @@ public class ScreenshotPlugin extends Plugin
|
|||||||
break;
|
break;
|
||||||
case LEVEL_UP_GROUP_ID:
|
case LEVEL_UP_GROUP_ID:
|
||||||
case DIALOG_SPRITE_GROUP_ID:
|
case DIALOG_SPRITE_GROUP_ID:
|
||||||
|
case CHATBOX_GROUP_ID:
|
||||||
if (!config.screenshotLevels())
|
if (!config.screenshotLevels())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@@ -458,6 +464,7 @@ public class ScreenshotPlugin extends Plugin
|
|||||||
case LEVEL_UP_GROUP_ID:
|
case LEVEL_UP_GROUP_ID:
|
||||||
case DIALOG_SPRITE_GROUP_ID:
|
case DIALOG_SPRITE_GROUP_ID:
|
||||||
case QUEST_COMPLETED_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
|
// level up widget gets loaded prior to the text being set, so wait until the next tick
|
||||||
shouldTakeScreenshot = true;
|
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.
|
* 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."
|
* with the format "Your Skill (level is/are) now 99."
|
||||||
* @return Shortened string in the format "Skill(99)"
|
* @return Shortened string in the format "Skill(99)"
|
||||||
*/
|
*/
|
||||||
String parseLevelUpWidget(WidgetInfo levelUpLevel)
|
String parseLevelUpWidget(Widget levelUpWidget)
|
||||||
{
|
{
|
||||||
Widget levelChild = client.getWidget(levelUpLevel);
|
if (levelUpWidget == null)
|
||||||
if (levelChild == null)
|
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
Matcher m = LEVEL_UP_PATTERN.matcher(levelChild.getText());
|
Matcher m = LEVEL_UP_PATTERN.matcher(levelUpWidget.getText());
|
||||||
if (!m.matches())
|
if (!m.matches())
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -43,8 +43,10 @@ import net.runelite.api.events.ExperienceChanged;
|
|||||||
import net.runelite.api.events.GameStateChanged;
|
import net.runelite.api.events.GameStateChanged;
|
||||||
import net.runelite.api.events.GameTick;
|
import net.runelite.api.events.GameTick;
|
||||||
import net.runelite.api.events.ScriptCallbackEvent;
|
import net.runelite.api.events.ScriptCallbackEvent;
|
||||||
|
import net.runelite.api.events.WidgetLoaded;
|
||||||
import net.runelite.api.widgets.JavaScriptCallback;
|
import net.runelite.api.widgets.JavaScriptCallback;
|
||||||
import net.runelite.api.widgets.Widget;
|
import net.runelite.api.widgets.Widget;
|
||||||
|
import net.runelite.api.widgets.WidgetID;
|
||||||
import net.runelite.api.widgets.WidgetInfo;
|
import net.runelite.api.widgets.WidgetInfo;
|
||||||
import net.runelite.api.widgets.WidgetPositionMode;
|
import net.runelite.api.widgets.WidgetPositionMode;
|
||||||
import net.runelite.api.widgets.WidgetSizeMode;
|
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(() -> client.runScript(ScriptID.CLEAR_CHATBOX_PANEL));
|
||||||
clientThread.invoke(() -> buildVirtualLevelUp(skill));
|
clientThread.invoke(() -> buildVirtualLevelUp(skill));
|
||||||
|
WidgetLoaded widgetLoaded = new WidgetLoaded();
|
||||||
|
widgetLoaded.setGroupId(WidgetID.CHATBOX_GROUP_ID);
|
||||||
|
eventBus.post(widgetLoaded);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -167,12 +167,12 @@ public class ScreenshotPluginTest
|
|||||||
Widget widget = mock(Widget.class);
|
Widget widget = mock(Widget.class);
|
||||||
when(widget.getId()).thenReturn(PACK(LEVEL_UP_GROUP_ID, 0));
|
when(widget.getId()).thenReturn(PACK(LEVEL_UP_GROUP_ID, 0));
|
||||||
|
|
||||||
Widget levelChild = mock(Widget.class);
|
Widget levelUpWidget = mock(Widget.class);
|
||||||
when(client.getWidget(Matchers.eq(LEVEL_UP_LEVEL))).thenReturn(levelChild);
|
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();
|
WidgetLoaded event = new WidgetLoaded();
|
||||||
event.setGroupId(LEVEL_UP_GROUP_ID);
|
event.setGroupId(LEVEL_UP_GROUP_ID);
|
||||||
@@ -190,12 +190,12 @@ public class ScreenshotPluginTest
|
|||||||
Widget widget = mock(Widget.class);
|
Widget widget = mock(Widget.class);
|
||||||
when(widget.getId()).thenReturn(PACK(LEVEL_UP_GROUP_ID, 0));
|
when(widget.getId()).thenReturn(PACK(LEVEL_UP_GROUP_ID, 0));
|
||||||
|
|
||||||
Widget levelChild = mock(Widget.class);
|
Widget levelUpWidget = mock(Widget.class);
|
||||||
when(client.getWidget(Matchers.eq(LEVEL_UP_LEVEL))).thenReturn(levelChild);
|
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();
|
WidgetLoaded event = new WidgetLoaded();
|
||||||
event.setGroupId(LEVEL_UP_GROUP_ID);
|
event.setGroupId(LEVEL_UP_GROUP_ID);
|
||||||
@@ -213,12 +213,12 @@ public class ScreenshotPluginTest
|
|||||||
Widget widget = mock(Widget.class);
|
Widget widget = mock(Widget.class);
|
||||||
when(widget.getId()).thenReturn(PACK(LEVEL_UP_GROUP_ID, 0));
|
when(widget.getId()).thenReturn(PACK(LEVEL_UP_GROUP_ID, 0));
|
||||||
|
|
||||||
Widget levelChild = mock(Widget.class);
|
Widget levelUpWidget = mock(Widget.class);
|
||||||
when(client.getWidget(Matchers.eq(LEVEL_UP_LEVEL))).thenReturn(levelChild);
|
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();
|
WidgetLoaded event = new WidgetLoaded();
|
||||||
event.setGroupId(LEVEL_UP_GROUP_ID);
|
event.setGroupId(LEVEL_UP_GROUP_ID);
|
||||||
@@ -236,12 +236,12 @@ public class ScreenshotPluginTest
|
|||||||
Widget widget = mock(Widget.class);
|
Widget widget = mock(Widget.class);
|
||||||
when(widget.getId()).thenReturn(PACK(DIALOG_SPRITE_GROUP_ID, 0));
|
when(widget.getId()).thenReturn(PACK(DIALOG_SPRITE_GROUP_ID, 0));
|
||||||
|
|
||||||
Widget levelChild = mock(Widget.class);
|
Widget levelUpWidget = mock(Widget.class);
|
||||||
when(client.getWidget(Matchers.eq(DIALOG_SPRITE_TEXT))).thenReturn(levelChild);
|
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();
|
WidgetLoaded event = new WidgetLoaded();
|
||||||
event.setGroupId(DIALOG_SPRITE_GROUP_ID);
|
event.setGroupId(DIALOG_SPRITE_GROUP_ID);
|
||||||
|
|||||||
Reference in New Issue
Block a user