From fe86d0b930ff98d40fed87bc83e5558190a994c5 Mon Sep 17 00:00:00 2001 From: joshpfox <35375991+joshpfox@users.noreply.github.com> Date: Mon, 5 Mar 2018 19:49:36 +0000 Subject: [PATCH] configurable slayer infobox expiry timer Add an option in plugin config to set a time for the infobox to expire Infobox appears on getting task, checking task, killing slayer monster, initial log in --- .../client/plugins/slayer/SlayerConfig.java | 10 +++++++ .../client/plugins/slayer/SlayerPlugin.java | 26 +++++++++++++++++-- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerConfig.java index f24b466d00..7ef39e61a4 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerConfig.java @@ -65,6 +65,16 @@ public interface SlayerConfig extends Config return true; } + @ConfigItem( + keyName = "statTimeout", + name = "InfoBox Expiry (minutes)", + description = "Set the time until the InfoBox expires" + ) + default int statTimeout() + { + return 5; + } + // Stored data @ConfigItem( keyName = "taskName", 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 a13b7a0fbf..720757aee6 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 @@ -27,6 +27,8 @@ package net.runelite.client.plugins.slayer; import com.google.common.eventbus.Subscribe; import com.google.inject.Provides; import java.awt.image.BufferedImage; +import java.time.Instant; +import java.time.Duration; import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.List; @@ -100,6 +102,8 @@ public class SlayerPlugin extends Plugin private int streak; private int points; private int cachedXp; + private Instant infoTimer; + private boolean loginFlag; @Override protected void startUp() throws Exception @@ -134,11 +138,15 @@ public class SlayerPlugin extends Plugin cachedXp = 0; taskName = ""; amount = 0; + loginFlag = true; break; case LOGGED_IN: - if (config.amount() != -1 && !config.taskName().isEmpty()) + if (config.amount() != -1 + && !config.taskName().isEmpty() + && loginFlag == true) { setTask(config.taskName(), config.amount()); + loginFlag = false; } break; } @@ -189,6 +197,17 @@ public class SlayerPlugin extends Plugin } } } + + if (infoTimer != null) + { + Duration timeSinceInfobox = Duration.between(infoTimer, Instant.now()); + Duration statTimeout = Duration.ofMinutes(config.statTimeout()); + + if (timeSinceInfobox.compareTo(statTimeout) >= 0) + { + removeCounter(); + } + } } @Subscribe @@ -311,8 +330,10 @@ public class SlayerPlugin extends Plugin return; } - // update counter + // add and update counter, set timer + addCounter(); counter.setText(String.valueOf(amount)); + infoTimer = Instant.now(); } private void setTask(String name, int amt) @@ -322,6 +343,7 @@ public class SlayerPlugin extends Plugin save(); removeCounter(); addCounter(); + infoTimer = Instant.now(); } private void addCounter()