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