From d7f55bbef6f00ebc55025454761b9bb664465fe2 Mon Sep 17 00:00:00 2001 From: Adam Date: Mon, 8 Jun 2020 17:22:35 -0400 Subject: [PATCH] slayer plugin: fix points and streak being forgotten when restarted with no task --- .../client/plugins/slayer/SlayerPlugin.java | 34 +++++++++---------- .../plugins/slayer/SlayerPluginTest.java | 20 +++++------ 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java index 8ac2601931..89ad7d1473 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java @@ -54,7 +54,6 @@ import net.runelite.api.NPCComposition; import static net.runelite.api.Skill.SLAYER; import net.runelite.api.coords.WorldPoint; import net.runelite.api.events.ChatMessage; -import net.runelite.client.events.ConfigChanged; import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameTick; 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.eventbus.Subscribe; import net.runelite.client.events.ChatInput; +import net.runelite.client.events.ConfigChanged; import net.runelite.client.game.ItemManager; import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; @@ -198,12 +198,6 @@ public class SlayerPlugin extends Plugin @Setter(AccessLevel.PACKAGE) private String taskName; - @Getter(AccessLevel.PACKAGE) - private int streak; - - @Getter(AccessLevel.PACKAGE) - private int points; - private TaskCounter counter; private int cachedXp = -1; private Instant infoTimer; @@ -225,8 +219,6 @@ public class SlayerPlugin extends Plugin if (config.amount() != -1 && !config.taskName().isEmpty()) { - points = config.points(); - streak = config.streak(); setExpeditiousChargeCount(config.expeditious()); setSlaughterChargeCount(config.slaughter()); clientThread.invoke(() -> setTask(config.taskName(), config.amount(), config.initialAmount(), config.taskLocation(), false)); @@ -274,8 +266,6 @@ public class SlayerPlugin extends Plugin && !config.taskName().isEmpty() && loginFlag) { - points = config.points(); - streak = config.streak(); setExpeditiousChargeCount(config.expeditious()); setSlaughterChargeCount(config.slaughter()); setTask(config.taskName(), config.amount(), config.initialAmount(), config.taskLocation(), false); @@ -291,8 +281,6 @@ public class SlayerPlugin extends Plugin config.initialAmount(initialAmount); config.taskName(taskName); config.taskLocation(taskLocation); - config.points(points); - config.streak(streak); config.expeditious(expeditiousChargeCount); config.slaughter(slaughterChargeCount); } @@ -342,7 +330,8 @@ public class SlayerPlugin extends Plugin { int amount = Integer.parseInt(mAssignBoss.group(2)); 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()) { @@ -377,11 +366,12 @@ public class SlayerPlugin extends Plugin Matcher mPoints = REWARD_POINTS.matcher(w.getText()); if (mPoints.find()) { - final int prevPoints = points; - points = Integer.parseInt(mPoints.group(1).replaceAll(",", "")); + final int prevPoints = config.points(); + int points = Integer.parseInt(mPoints.group(1).replaceAll(",", "")); if (prevPoints != points) { + config.points(points); removeCounter(); addCounter(); } @@ -465,6 +455,7 @@ public class SlayerPlugin extends Plugin matches.add(mComplete.group(0).replaceAll(",", "")); } + int streak = -1, points = -1; switch (matches.size()) { case 0: @@ -480,6 +471,15 @@ public class SlayerPlugin extends Plugin default: 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); return; } @@ -734,7 +734,7 @@ public class SlayerPlugin extends Plugin } 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); } diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/slayer/SlayerPluginTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/slayer/SlayerPluginTest.java index 49caa7c65f..f5dc666aca 100644 --- a/runelite-client/src/test/java/net/runelite/client/plugins/slayer/SlayerPluginTest.java +++ b/runelite-client/src/test/java/net/runelite/client/plugins/slayer/SlayerPluginTest.java @@ -267,7 +267,7 @@ public class SlayerPluginTest assertEquals("Vet'ion", slayerPlugin.getTaskName()); assertEquals(3, slayerPlugin.getAmount()); - assertEquals(914, slayerPlugin.getPoints()); + verify(slayerConfig).points(914); } @Test @@ -280,7 +280,7 @@ public class SlayerPluginTest assertEquals("Chaos Elemental", slayerPlugin.getTaskName()); assertEquals(3, slayerPlugin.getAmount()); - assertEquals(914, slayerPlugin.getPoints()); + verify(slayerConfig).points(914); } @Test @@ -293,7 +293,7 @@ public class SlayerPluginTest assertEquals("Alchemical Hydra", slayerPlugin.getTaskName()); assertEquals(35, slayerPlugin.getAmount()); - assertEquals(724, slayerPlugin.getPoints()); + verify(slayerConfig).points(724); } @Test @@ -360,7 +360,7 @@ public class SlayerPluginTest when(client.getWidget(WidgetInfo.SLAYER_REWARDS_TOPBAR)).thenReturn(rewardBar); slayerPlugin.onGameTick(new GameTick()); - assertEquals(17566, slayerPlugin.getPoints()); + verify(slayerConfig).points(17566); } @Test @@ -369,7 +369,7 @@ public class SlayerPluginTest ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "Perterter", TASK_ONE, null, 0); slayerPlugin.onChatMessage(chatMessageEvent); - assertEquals(1, slayerPlugin.getStreak()); + verify(slayerConfig).streak(1); assertEquals("", slayerPlugin.getTaskName()); assertEquals(0, slayerPlugin.getAmount()); } @@ -380,7 +380,7 @@ public class SlayerPluginTest ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "Perterter", TASK_COMPLETE_NO_POINTS, null, 0); slayerPlugin.onChatMessage(chatMessageEvent); - assertEquals(3, slayerPlugin.getStreak()); + verify(slayerConfig).streak(3); assertEquals("", slayerPlugin.getTaskName()); assertEquals(0, slayerPlugin.getAmount()); } @@ -391,10 +391,10 @@ public class SlayerPluginTest ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "Perterter", TASK_POINTS, null, 0); slayerPlugin.onChatMessage(chatMessageEvent); - assertEquals(9, slayerPlugin.getStreak()); + verify(slayerConfig).streak(9); assertEquals("", slayerPlugin.getTaskName()); assertEquals(0, slayerPlugin.getAmount()); - assertEquals(18_000, slayerPlugin.getPoints()); + verify(slayerConfig).points(18_000); } @Test @@ -403,10 +403,10 @@ public class SlayerPluginTest ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "Perterter", TASK_LARGE_STREAK, null, 0); slayerPlugin.onChatMessage(chatMessageEvent); - assertEquals(2465, slayerPlugin.getStreak()); + verify(slayerConfig).streak(2465); assertEquals("", slayerPlugin.getTaskName()); assertEquals(0, slayerPlugin.getAmount()); - assertEquals(17_566_000, slayerPlugin.getPoints()); + verify(slayerConfig).points(17_566_000); } @Test