slayer plugin: fix points and streak being forgotten when restarted with no task

This commit is contained in:
Adam
2020-06-08 17:22:35 -04:00
parent 6c2d823b70
commit d7f55bbef6
2 changed files with 27 additions and 27 deletions

View File

@@ -54,7 +54,6 @@ import net.runelite.api.NPCComposition;
import static net.runelite.api.Skill.SLAYER; import static net.runelite.api.Skill.SLAYER;
import net.runelite.api.coords.WorldPoint; import net.runelite.api.coords.WorldPoint;
import net.runelite.api.events.ChatMessage; import net.runelite.api.events.ChatMessage;
import net.runelite.client.events.ConfigChanged;
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.NpcDespawned; import net.runelite.api.events.NpcDespawned;
@@ -72,6 +71,7 @@ import net.runelite.client.chat.ChatMessageManager;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe; import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ChatInput; import net.runelite.client.events.ChatInput;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.game.ItemManager; import net.runelite.client.game.ItemManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
@@ -198,12 +198,6 @@ public class SlayerPlugin extends Plugin
@Setter(AccessLevel.PACKAGE) @Setter(AccessLevel.PACKAGE)
private String taskName; private String taskName;
@Getter(AccessLevel.PACKAGE)
private int streak;
@Getter(AccessLevel.PACKAGE)
private int points;
private TaskCounter counter; private TaskCounter counter;
private int cachedXp = -1; private int cachedXp = -1;
private Instant infoTimer; private Instant infoTimer;
@@ -225,8 +219,6 @@ public class SlayerPlugin extends Plugin
if (config.amount() != -1 if (config.amount() != -1
&& !config.taskName().isEmpty()) && !config.taskName().isEmpty())
{ {
points = config.points();
streak = config.streak();
setExpeditiousChargeCount(config.expeditious()); setExpeditiousChargeCount(config.expeditious());
setSlaughterChargeCount(config.slaughter()); setSlaughterChargeCount(config.slaughter());
clientThread.invoke(() -> setTask(config.taskName(), config.amount(), config.initialAmount(), config.taskLocation(), false)); clientThread.invoke(() -> setTask(config.taskName(), config.amount(), config.initialAmount(), config.taskLocation(), false));
@@ -274,8 +266,6 @@ public class SlayerPlugin extends Plugin
&& !config.taskName().isEmpty() && !config.taskName().isEmpty()
&& loginFlag) && loginFlag)
{ {
points = config.points();
streak = config.streak();
setExpeditiousChargeCount(config.expeditious()); setExpeditiousChargeCount(config.expeditious());
setSlaughterChargeCount(config.slaughter()); setSlaughterChargeCount(config.slaughter());
setTask(config.taskName(), config.amount(), config.initialAmount(), config.taskLocation(), false); setTask(config.taskName(), config.amount(), config.initialAmount(), config.taskLocation(), false);
@@ -291,8 +281,6 @@ public class SlayerPlugin extends Plugin
config.initialAmount(initialAmount); config.initialAmount(initialAmount);
config.taskName(taskName); config.taskName(taskName);
config.taskLocation(taskLocation); config.taskLocation(taskLocation);
config.points(points);
config.streak(streak);
config.expeditious(expeditiousChargeCount); config.expeditious(expeditiousChargeCount);
config.slaughter(slaughterChargeCount); config.slaughter(slaughterChargeCount);
} }
@@ -342,7 +330,8 @@ public class SlayerPlugin extends Plugin
{ {
int amount = Integer.parseInt(mAssignBoss.group(2)); int amount = Integer.parseInt(mAssignBoss.group(2));
setTask(mAssignBoss.group(1), amount, amount); setTask(mAssignBoss.group(1), amount, amount);
points = Integer.parseInt(mAssignBoss.group(3).replaceAll(",", "")); int points = Integer.parseInt(mAssignBoss.group(3).replaceAll(",", ""));
config.points(points);
} }
else if (mCurrent.find()) else if (mCurrent.find())
{ {
@@ -377,11 +366,12 @@ public class SlayerPlugin extends Plugin
Matcher mPoints = REWARD_POINTS.matcher(w.getText()); Matcher mPoints = REWARD_POINTS.matcher(w.getText());
if (mPoints.find()) if (mPoints.find())
{ {
final int prevPoints = points; final int prevPoints = config.points();
points = Integer.parseInt(mPoints.group(1).replaceAll(",", "")); int points = Integer.parseInt(mPoints.group(1).replaceAll(",", ""));
if (prevPoints != points) if (prevPoints != points)
{ {
config.points(points);
removeCounter(); removeCounter();
addCounter(); addCounter();
} }
@@ -465,6 +455,7 @@ public class SlayerPlugin extends Plugin
matches.add(mComplete.group(0).replaceAll(",", "")); matches.add(mComplete.group(0).replaceAll(",", ""));
} }
int streak = -1, points = -1;
switch (matches.size()) switch (matches.size())
{ {
case 0: case 0:
@@ -480,6 +471,15 @@ public class SlayerPlugin extends Plugin
default: default:
log.warn("Unreachable default case for message ending in '; return to Slayer master'"); log.warn("Unreachable default case for message ending in '; return to Slayer master'");
} }
if (streak != -1)
{
config.streak(streak);
}
if (points != -1)
{
config.points(points);
}
setTask("", 0, 0); setTask("", 0, 0);
return; return;
} }
@@ -734,7 +734,7 @@ public class SlayerPlugin extends Plugin
} }
counter = new TaskCounter(taskImg, this, amount); counter = new TaskCounter(taskImg, this, amount);
counter.setTooltip(String.format(taskTooltip, capsString(taskName), points, streak)); counter.setTooltip(String.format(taskTooltip, capsString(taskName), config.points(), config.streak()));
infoBoxManager.addInfoBox(counter); infoBoxManager.addInfoBox(counter);
} }

View File

@@ -267,7 +267,7 @@ public class SlayerPluginTest
assertEquals("Vet'ion", slayerPlugin.getTaskName()); assertEquals("Vet'ion", slayerPlugin.getTaskName());
assertEquals(3, slayerPlugin.getAmount()); assertEquals(3, slayerPlugin.getAmount());
assertEquals(914, slayerPlugin.getPoints()); verify(slayerConfig).points(914);
} }
@Test @Test
@@ -280,7 +280,7 @@ public class SlayerPluginTest
assertEquals("Chaos Elemental", slayerPlugin.getTaskName()); assertEquals("Chaos Elemental", slayerPlugin.getTaskName());
assertEquals(3, slayerPlugin.getAmount()); assertEquals(3, slayerPlugin.getAmount());
assertEquals(914, slayerPlugin.getPoints()); verify(slayerConfig).points(914);
} }
@Test @Test
@@ -293,7 +293,7 @@ public class SlayerPluginTest
assertEquals("Alchemical Hydra", slayerPlugin.getTaskName()); assertEquals("Alchemical Hydra", slayerPlugin.getTaskName());
assertEquals(35, slayerPlugin.getAmount()); assertEquals(35, slayerPlugin.getAmount());
assertEquals(724, slayerPlugin.getPoints()); verify(slayerConfig).points(724);
} }
@Test @Test
@@ -360,7 +360,7 @@ public class SlayerPluginTest
when(client.getWidget(WidgetInfo.SLAYER_REWARDS_TOPBAR)).thenReturn(rewardBar); when(client.getWidget(WidgetInfo.SLAYER_REWARDS_TOPBAR)).thenReturn(rewardBar);
slayerPlugin.onGameTick(new GameTick()); slayerPlugin.onGameTick(new GameTick());
assertEquals(17566, slayerPlugin.getPoints()); verify(slayerConfig).points(17566);
} }
@Test @Test
@@ -369,7 +369,7 @@ public class SlayerPluginTest
ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "Perterter", TASK_ONE, null, 0); ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "Perterter", TASK_ONE, null, 0);
slayerPlugin.onChatMessage(chatMessageEvent); slayerPlugin.onChatMessage(chatMessageEvent);
assertEquals(1, slayerPlugin.getStreak()); verify(slayerConfig).streak(1);
assertEquals("", slayerPlugin.getTaskName()); assertEquals("", slayerPlugin.getTaskName());
assertEquals(0, slayerPlugin.getAmount()); assertEquals(0, slayerPlugin.getAmount());
} }
@@ -380,7 +380,7 @@ public class SlayerPluginTest
ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "Perterter", TASK_COMPLETE_NO_POINTS, null, 0); ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "Perterter", TASK_COMPLETE_NO_POINTS, null, 0);
slayerPlugin.onChatMessage(chatMessageEvent); slayerPlugin.onChatMessage(chatMessageEvent);
assertEquals(3, slayerPlugin.getStreak()); verify(slayerConfig).streak(3);
assertEquals("", slayerPlugin.getTaskName()); assertEquals("", slayerPlugin.getTaskName());
assertEquals(0, slayerPlugin.getAmount()); assertEquals(0, slayerPlugin.getAmount());
} }
@@ -391,10 +391,10 @@ public class SlayerPluginTest
ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "Perterter", TASK_POINTS, null, 0); ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "Perterter", TASK_POINTS, null, 0);
slayerPlugin.onChatMessage(chatMessageEvent); slayerPlugin.onChatMessage(chatMessageEvent);
assertEquals(9, slayerPlugin.getStreak()); verify(slayerConfig).streak(9);
assertEquals("", slayerPlugin.getTaskName()); assertEquals("", slayerPlugin.getTaskName());
assertEquals(0, slayerPlugin.getAmount()); assertEquals(0, slayerPlugin.getAmount());
assertEquals(18_000, slayerPlugin.getPoints()); verify(slayerConfig).points(18_000);
} }
@Test @Test
@@ -403,10 +403,10 @@ public class SlayerPluginTest
ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "Perterter", TASK_LARGE_STREAK, null, 0); ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "Perterter", TASK_LARGE_STREAK, null, 0);
slayerPlugin.onChatMessage(chatMessageEvent); slayerPlugin.onChatMessage(chatMessageEvent);
assertEquals(2465, slayerPlugin.getStreak()); verify(slayerConfig).streak(2465);
assertEquals("", slayerPlugin.getTaskName()); assertEquals("", slayerPlugin.getTaskName());
assertEquals(0, slayerPlugin.getAmount()); assertEquals(0, slayerPlugin.getAmount());
assertEquals(17_566_000, slayerPlugin.getPoints()); verify(slayerConfig).points(17_566_000);
} }
@Test @Test