Merge pull request #589 from devLotto/fix-lvlup-screenshots

Fix screenshot plugin not capturing Hunter levelups + naming files incorrectly
This commit is contained in:
Adam
2018-02-16 13:42:31 -05:00
committed by GitHub
4 changed files with 94 additions and 16 deletions

View File

@@ -57,6 +57,7 @@ public class WidgetID
public static final int BA_DEFENDER_GROUP_ID = 487;
public static final int BA_HEALER_GROUP_ID = 488;
public static final int LEVEL_UP_GROUP_ID = 233;
public static final int HUNTER_LEVEL_UP_GROUP_ID = 193;
public static final int QUEST_COMPLETED_GROUP_ID = 277;
public static final int CLUE_SCROLL_REWARD_GROUP_ID = 73;
public static final int BARROWS_REWARD_GROUP_ID = 155;

View File

@@ -162,6 +162,10 @@ public enum WidgetInfo
LEVEL_UP_SKILL(WidgetID.LEVEL_UP_GROUP_ID, WidgetID.LevelUp.SKILL),
LEVEL_UP_LEVEL(WidgetID.LEVEL_UP_GROUP_ID, WidgetID.LevelUp.LEVEL),
HUNTER_LEVEL_UP(WidgetID.HUNTER_LEVEL_UP_GROUP_ID, 0),
HUNTER_LEVEL_UP_SKILL(WidgetID.HUNTER_LEVEL_UP_GROUP_ID, WidgetID.LevelUp.SKILL),
HUNTER_LEVEL_UP_LEVEL(WidgetID.HUNTER_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),

View File

@@ -61,6 +61,7 @@ import net.runelite.api.events.WidgetHiddenChanged;
import net.runelite.api.widgets.Widget;
import static net.runelite.api.widgets.WidgetID.BARROWS_REWARD_GROUP_ID;
import static net.runelite.api.widgets.WidgetID.CLUE_SCROLL_REWARD_GROUP_ID;
import static net.runelite.api.widgets.WidgetID.HUNTER_LEVEL_UP_GROUP_ID;
import static net.runelite.api.widgets.WidgetID.LEVEL_UP_GROUP_ID;
import static net.runelite.api.widgets.WidgetID.QUEST_COMPLETED_GROUP_ID;
import net.runelite.api.widgets.WidgetInfo;
@@ -249,22 +250,12 @@ public class ScreenshotPlugin extends Plugin
{
case LEVEL_UP_GROUP_ID:
{
Widget skillChild = client.getWidget(WidgetInfo.LEVEL_UP_SKILL);
Widget levelChild = client.getWidget(WidgetInfo.LEVEL_UP_LEVEL);
if (skillChild == null || levelChild == null)
{
return;
}
// "Your Firemaking level is now 9."
String skillText = skillChild.getText();
String levelText = levelChild.getText();
String skillName = skillText.substring(skillText.indexOf("a ") + 2, skillText.indexOf(" level."));
String skillLevel = levelText.substring(levelText.lastIndexOf(" ") + 1, levelText.length() - 1);
fileName = skillName + " (" + skillLevel + ")";
fileName = parseLevelUpWidget(WidgetInfo.LEVEL_UP_SKILL, WidgetInfo.LEVEL_UP_LEVEL);
break;
}
case HUNTER_LEVEL_UP_GROUP_ID:
{
fileName = parseLevelUpWidget(WidgetInfo.HUNTER_LEVEL_UP_SKILL, WidgetInfo.HUNTER_LEVEL_UP_LEVEL);
break;
}
case QUEST_COMPLETED_GROUP_ID:
@@ -309,9 +300,36 @@ public class ScreenshotPlugin extends Plugin
return;
}
if (fileName == null)
{
return;
}
takeScreenshot(fileName, config.displayDate());
}
public String parseLevelUpWidget(WidgetInfo levelUpSkill, WidgetInfo levelUpLevel)
{
Widget skillChild = client.getWidget(levelUpSkill);
Widget levelChild = client.getWidget(levelUpLevel);
if (skillChild == null || levelChild == null)
{
return null;
}
// "Congratulations, you just advanced a Firemaking level."
String skillText = skillChild.getText();
// "Your Firemaking level is now 9."
String levelText = levelChild.getText();
String[] splitSkillName = skillText.split(" ");
String skillName = splitSkillName[splitSkillName.length - 2];
String skillLevel = levelText.substring(levelText.lastIndexOf(" ") + 1, levelText.length() - 1);
return skillName + "(" + skillLevel + ")";
}
private void takeScreenshot(String fileName, boolean displayDate)
{
if (client.getGameState() == GameState.LOGIN_SCREEN)

View File

@@ -35,7 +35,10 @@ 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.HUNTER_LEVEL_UP_GROUP_ID;
import static net.runelite.api.widgets.WidgetID.LEVEL_UP_GROUP_ID;
import static net.runelite.api.widgets.WidgetInfo.HUNTER_LEVEL_UP_LEVEL;
import static net.runelite.api.widgets.WidgetInfo.HUNTER_LEVEL_UP_SKILL;
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;
@@ -133,6 +136,8 @@ public class ScreenshotPluginTest
when(skillChild.getText()).thenReturn("Congratulations, you just advanced a Hitpoints level.");
when(levelChild.getText()).thenReturn("Your Hitpoints are now 99.");
assertEquals("Hitpoints(99)", screenshotPlugin.parseLevelUpWidget(LEVEL_UP_SKILL, LEVEL_UP_LEVEL));
WidgetHiddenChanged event = new WidgetHiddenChanged();
event.setWidget(widget);
screenshotPlugin.hideWidgets(event);
@@ -155,6 +160,56 @@ public class ScreenshotPluginTest
when(skillChild.getText()).thenReturn("Congratulations, you just advanced a Firemaking level.");
when(levelChild.getText()).thenReturn("Your Firemaking level is now 9.");
assertEquals("Firemaking(9)", screenshotPlugin.parseLevelUpWidget(LEVEL_UP_SKILL, LEVEL_UP_LEVEL));
WidgetHiddenChanged event = new WidgetHiddenChanged();
event.setWidget(widget);
screenshotPlugin.hideWidgets(event);
verify(overlayRenderer).requestScreenshot(Matchers.any(Consumer.class));
}
@Test
public void testAttack()
{
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 an Attack level.");
when(levelChild.getText()).thenReturn("Your Attack level is now 70.");
assertEquals("Attack(70)", screenshotPlugin.parseLevelUpWidget(LEVEL_UP_SKILL, LEVEL_UP_LEVEL));
WidgetHiddenChanged event = new WidgetHiddenChanged();
event.setWidget(widget);
screenshotPlugin.hideWidgets(event);
verify(overlayRenderer).requestScreenshot(Matchers.any(Consumer.class));
}
@Test
public void testHunter()
{
Widget widget = mock(Widget.class);
when(widget.getId()).thenReturn(PACK(HUNTER_LEVEL_UP_GROUP_ID, 0));
Widget skillChild = mock(Widget.class);
when(client.getWidget(Matchers.eq(HUNTER_LEVEL_UP_SKILL))).thenReturn(skillChild);
Widget levelChild = mock(Widget.class);
when(client.getWidget(Matchers.eq(HUNTER_LEVEL_UP_LEVEL))).thenReturn(levelChild);
when(skillChild.getText()).thenReturn("Congratulations, you just advanced a Hunter level.");
when(levelChild.getText()).thenReturn("Your Hunter level is now 2.");
assertEquals("Hunter(2)", screenshotPlugin.parseLevelUpWidget(HUNTER_LEVEL_UP_SKILL, HUNTER_LEVEL_UP_LEVEL));
WidgetHiddenChanged event = new WidgetHiddenChanged();
event.setWidget(widget);
screenshotPlugin.hideWidgets(event);