wintertodt plugin: add round start notification

Co-authored-by: Adam <Adam@sigterm.info>
This commit is contained in:
Kusha Gharahi
2019-06-25 04:19:55 +00:00
committed by Adam
parent ff5d0432c8
commit 80f0000f89
4 changed files with 201 additions and 1 deletions

View File

@@ -29,6 +29,7 @@ import java.awt.Color;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem;
import net.runelite.client.config.Range;
import net.runelite.client.plugins.wintertodt.config.WintertodtNotifyMode;
@ConfigGroup("wintertodt")
@@ -55,4 +56,18 @@ public interface WintertodtConfig extends Config
{
return Color.CYAN;
}
@ConfigItem(
position = 3,
keyName = "roundNotification",
name = "Wintertodt round notification",
description = "Notifies you before the round starts (in seconds)"
)
@Range(
max = 60
)
default int roundNotification()
{
return 5;
}
}

View File

@@ -56,10 +56,12 @@ import static net.runelite.api.ItemID.BRUMA_KINDLING;
import static net.runelite.api.ItemID.BRUMA_ROOT;
import net.runelite.api.MessageNode;
import net.runelite.api.Player;
import net.runelite.api.Varbits;
import net.runelite.api.events.AnimationChanged;
import net.runelite.api.events.ChatMessage;
import net.runelite.api.events.GameTick;
import net.runelite.api.events.ItemContainerChanged;
import net.runelite.api.events.VarbitChanged;
import net.runelite.client.Notifier;
import net.runelite.client.chat.ChatMessageManager;
import net.runelite.client.config.ConfigManager;
@@ -117,6 +119,8 @@ public class WintertodtPlugin extends Plugin
private Instant lastActionTime;
private int previousTimerValue;
@Provides
WintertodtConfig getConfig(ConfigManager configManager)
{
@@ -182,6 +186,30 @@ public class WintertodtPlugin extends Plugin
checkActionTimeout();
}
@Subscribe
public void onVarbitChanged(VarbitChanged varbitChanged)
{
int timerValue = client.getVar(Varbits.WINTERTODT_TIMER);
if (timerValue != previousTimerValue)
{
int timeToNotify = config.roundNotification();
if (timeToNotify > 0)
{
int timeInSeconds = timerValue * 30 / 50;
int prevTimeInSeconds = previousTimerValue * 30 / 50;
log.debug("Seconds left until round start: {}", timeInSeconds);
if (prevTimeInSeconds > timeToNotify && timeInSeconds <= timeToNotify)
{
notifier.notify("Wintertodt round is about to start");
}
}
previousTimerValue = timerValue;
}
}
private void checkActionTimeout()
{
if (currentActivity == WintertodtActivity.IDLE)