From 14066e0b9aa2d4f4f3f16da9ad791c5caf6967b1 Mon Sep 17 00:00:00 2001 From: Vanillj Date: Mon, 20 Jun 2022 03:41:56 +0200 Subject: [PATCH 1/3] added stage notification and config --- .../EasyGiantsFoundryConfig.java | 22 ++++++++ .../EasyGiantsFoundryPlugin.java | 51 +++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 src/main/java/com/toofifty/easygiantsfoundry/EasyGiantsFoundryConfig.java diff --git a/src/main/java/com/toofifty/easygiantsfoundry/EasyGiantsFoundryConfig.java b/src/main/java/com/toofifty/easygiantsfoundry/EasyGiantsFoundryConfig.java new file mode 100644 index 0000000..774780f --- /dev/null +++ b/src/main/java/com/toofifty/easygiantsfoundry/EasyGiantsFoundryConfig.java @@ -0,0 +1,22 @@ +package com.toofifty.easygiantsfoundry; + +import net.runelite.client.config.Config; +import net.runelite.client.config.ConfigGroup; +import net.runelite.client.config.ConfigItem; + +@ConfigGroup(EasyGiantsFoundryConfig.GROUP) +public interface EasyGiantsFoundryConfig extends Config { + String GROUP = "easygiantsfoundry"; + + @ConfigItem( + keyName = "giantsFoundryStageNotification", + name = "Enable stage notifications", + description = "Configures whether to notify you when you are about to finish a stage.", + position = 0 + ) + default boolean showGiantsFoundryNotifications() + { + return true; + } + +} diff --git a/src/main/java/com/toofifty/easygiantsfoundry/EasyGiantsFoundryPlugin.java b/src/main/java/com/toofifty/easygiantsfoundry/EasyGiantsFoundryPlugin.java index 20278fc..f0f2618 100644 --- a/src/main/java/com/toofifty/easygiantsfoundry/EasyGiantsFoundryPlugin.java +++ b/src/main/java/com/toofifty/easygiantsfoundry/EasyGiantsFoundryPlugin.java @@ -1,14 +1,19 @@ package com.toofifty.easygiantsfoundry; +import com.google.inject.Provides; import lombok.extern.slf4j.Slf4j; import net.runelite.api.GameObject; import net.runelite.api.GameState; import net.runelite.api.InventoryID; import net.runelite.api.events.*; +import net.runelite.client.Notifier; import net.runelite.client.eventbus.Subscribe; +import net.runelite.client.events.ConfigChanged; import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.ui.overlay.OverlayManager; +import net.runelite.client.config.ConfigManager; +import com.toofifty.easygiantsfoundry.enums.Stage; import javax.inject.Inject; @@ -33,6 +38,10 @@ public class EasyGiantsFoundryPlugin extends Plugin private static final int PREFORM = 27010; + private Stage oldStage; + + private boolean enableStageNotifications; + @Inject private EasyGiantsFoundryState state; @@ -51,11 +60,18 @@ public class EasyGiantsFoundryPlugin extends Plugin @Inject private MouldHelper mouldHelper; + @Inject + private EasyGiantsFoundryConfig config; + + @Inject + private Notifier notifier; + @Override protected void startUp() { overlayManager.add(overlay2d); overlayManager.add(overlay3d); + enableStageNotifications = config.showGiantsFoundryNotifications(); } @Override @@ -105,6 +121,20 @@ public class EasyGiantsFoundryPlugin extends Plugin } } + @Subscribe + public void onStatChanged(StatChanged statChanged) + { + if (state.isEnabled() && + enableStageNotifications && + state.getCurrentStage() != null && + helper.getActionsLeftInStage() == 1 && + (oldStage == null || oldStage != state.getCurrentStage())) + { + notifier.notify("About to finish the current stage!"); + oldStage = state.getCurrentStage(); + } + } + @Subscribe public void onGameObjectDespawned(GameObjectDespawned event) { @@ -161,6 +191,7 @@ public class EasyGiantsFoundryPlugin extends Plugin && event.getItemContainer().count(PREFORM) == 0) { state.reset(); + oldStage = null; } } @@ -175,4 +206,24 @@ public class EasyGiantsFoundryPlugin extends Plugin mouldHelper.selectBest(event.getScriptId()); } } + + @Subscribe + public void onConfigChanged(ConfigChanged event) + { + if (!event.getGroup().equals(EasyGiantsFoundryConfig.GROUP)) + { + return; + } + + if (config.showGiantsFoundryNotifications() != enableStageNotifications) + { + enableStageNotifications = config.showGiantsFoundryNotifications(); + } + } + + @Provides + EasyGiantsFoundryConfig provideConfig(ConfigManager configManager) + { + return configManager.getConfig(EasyGiantsFoundryConfig.class); + } } From 89e86656e0d983e0414c40b883756c6fafbc294c Mon Sep 17 00:00:00 2001 From: Vanillj Date: Mon, 20 Jun 2022 18:23:05 +0200 Subject: [PATCH 2/3] added heat notification too --- .../EasyGiantsFoundryConfig.java | 13 +++++++- .../EasyGiantsFoundryPlugin.java | 31 +++++++++++++------ 2 files changed, 33 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/toofifty/easygiantsfoundry/EasyGiantsFoundryConfig.java b/src/main/java/com/toofifty/easygiantsfoundry/EasyGiantsFoundryConfig.java index 774780f..40ab2dd 100644 --- a/src/main/java/com/toofifty/easygiantsfoundry/EasyGiantsFoundryConfig.java +++ b/src/main/java/com/toofifty/easygiantsfoundry/EasyGiantsFoundryConfig.java @@ -14,7 +14,18 @@ public interface EasyGiantsFoundryConfig extends Config { description = "Configures whether to notify you when you are about to finish a stage.", position = 0 ) - default boolean showGiantsFoundryNotifications() + default boolean showGiantsFoundryStageNotifications() + { + return true; + } + + @ConfigItem( + keyName = "giantsFoundryHeatNotification", + name = "Enable heat notifications", + description = "Configures whether to notify you when you are about to run out of heat.", + position = 1 + ) + default boolean showGiantsFoundryHeatNotifications() { return true; } diff --git a/src/main/java/com/toofifty/easygiantsfoundry/EasyGiantsFoundryPlugin.java b/src/main/java/com/toofifty/easygiantsfoundry/EasyGiantsFoundryPlugin.java index f0f2618..56fae5a 100644 --- a/src/main/java/com/toofifty/easygiantsfoundry/EasyGiantsFoundryPlugin.java +++ b/src/main/java/com/toofifty/easygiantsfoundry/EasyGiantsFoundryPlugin.java @@ -42,6 +42,8 @@ public class EasyGiantsFoundryPlugin extends Plugin private boolean enableStageNotifications; + private boolean enableHeatNotifications; + @Inject private EasyGiantsFoundryState state; @@ -71,7 +73,8 @@ public class EasyGiantsFoundryPlugin extends Plugin { overlayManager.add(overlay2d); overlayManager.add(overlay3d); - enableStageNotifications = config.showGiantsFoundryNotifications(); + enableStageNotifications = config.showGiantsFoundryStageNotifications(); + enableHeatNotifications = config.showGiantsFoundryHeatNotifications(); } @Override @@ -124,14 +127,17 @@ public class EasyGiantsFoundryPlugin extends Plugin @Subscribe public void onStatChanged(StatChanged statChanged) { - if (state.isEnabled() && - enableStageNotifications && - state.getCurrentStage() != null && - helper.getActionsLeftInStage() == 1 && - (oldStage == null || oldStage != state.getCurrentStage())) + if (state.isEnabled() && state.getCurrentStage() != null) { - notifier.notify("About to finish the current stage!"); - oldStage = state.getCurrentStage(); + if (enableStageNotifications && helper.getActionsLeftInStage() == 1 && (oldStage == null || oldStage != state.getCurrentStage())) + { + notifier.notify("About to finish the current stage!"); + oldStage = state.getCurrentStage(); + } + else if (enableHeatNotifications && helper.getActionsForHeatLevel() == 1) + { + notifier.notify("About to run out of heat!"); + } } } @@ -215,9 +221,14 @@ public class EasyGiantsFoundryPlugin extends Plugin return; } - if (config.showGiantsFoundryNotifications() != enableStageNotifications) + if (config.showGiantsFoundryStageNotifications() != enableStageNotifications) { - enableStageNotifications = config.showGiantsFoundryNotifications(); + enableStageNotifications = config.showGiantsFoundryStageNotifications(); + } + + if (config.showGiantsFoundryHeatNotifications() != enableHeatNotifications) + { + enableHeatNotifications = config.showGiantsFoundryHeatNotifications(); } } From 919ae6feb7609606d74aca688ce2c6738e01f406 Mon Sep 17 00:00:00 2001 From: Vanillj Date: Thu, 23 Jun 2022 01:33:18 +0200 Subject: [PATCH 3/3] Changed notification booleans, disabled by default and trigger logic --- .../EasyGiantsFoundryConfig.java | 4 +- .../EasyGiantsFoundryPlugin.java | 55 ++++++++----------- 2 files changed, 24 insertions(+), 35 deletions(-) diff --git a/src/main/java/com/toofifty/easygiantsfoundry/EasyGiantsFoundryConfig.java b/src/main/java/com/toofifty/easygiantsfoundry/EasyGiantsFoundryConfig.java index 40ab2dd..6b31224 100644 --- a/src/main/java/com/toofifty/easygiantsfoundry/EasyGiantsFoundryConfig.java +++ b/src/main/java/com/toofifty/easygiantsfoundry/EasyGiantsFoundryConfig.java @@ -16,7 +16,7 @@ public interface EasyGiantsFoundryConfig extends Config { ) default boolean showGiantsFoundryStageNotifications() { - return true; + return false; } @ConfigItem( @@ -27,7 +27,7 @@ public interface EasyGiantsFoundryConfig extends Config { ) default boolean showGiantsFoundryHeatNotifications() { - return true; + return false; } } diff --git a/src/main/java/com/toofifty/easygiantsfoundry/EasyGiantsFoundryPlugin.java b/src/main/java/com/toofifty/easygiantsfoundry/EasyGiantsFoundryPlugin.java index 56fae5a..16462cb 100644 --- a/src/main/java/com/toofifty/easygiantsfoundry/EasyGiantsFoundryPlugin.java +++ b/src/main/java/com/toofifty/easygiantsfoundry/EasyGiantsFoundryPlugin.java @@ -5,6 +5,7 @@ import lombok.extern.slf4j.Slf4j; import net.runelite.api.GameObject; import net.runelite.api.GameState; import net.runelite.api.InventoryID; +import net.runelite.api.Skill; import net.runelite.api.events.*; import net.runelite.client.Notifier; import net.runelite.client.eventbus.Subscribe; @@ -40,9 +41,7 @@ public class EasyGiantsFoundryPlugin extends Plugin private Stage oldStage; - private boolean enableStageNotifications; - - private boolean enableHeatNotifications; + private int lastBoost; @Inject private EasyGiantsFoundryState state; @@ -73,8 +72,6 @@ public class EasyGiantsFoundryPlugin extends Plugin { overlayManager.add(overlay2d); overlayManager.add(overlay3d); - enableStageNotifications = config.showGiantsFoundryStageNotifications(); - enableHeatNotifications = config.showGiantsFoundryHeatNotifications(); } @Override @@ -127,17 +124,27 @@ public class EasyGiantsFoundryPlugin extends Plugin @Subscribe public void onStatChanged(StatChanged statChanged) { - if (state.isEnabled() && state.getCurrentStage() != null) + final int currBoost = statChanged.getBoostedLevel(); + // if the difference between current and last boost is != 0 then a stat boost (or drop) change occurred + if (!statChanged.getSkill().equals(Skill.SMITHING) || + currBoost - lastBoost != 0 || + !state.isEnabled() || + state.getCurrentStage() == null) { - if (enableStageNotifications && helper.getActionsLeftInStage() == 1 && (oldStage == null || oldStage != state.getCurrentStage())) - { - notifier.notify("About to finish the current stage!"); - oldStage = state.getCurrentStage(); - } - else if (enableHeatNotifications && helper.getActionsForHeatLevel() == 1) - { - notifier.notify("About to run out of heat!"); - } + lastBoost = currBoost; + return; + } + + if (config.showGiantsFoundryStageNotifications() && + helper.getActionsLeftInStage() == 1 && + (oldStage == null || oldStage != state.getCurrentStage())) + { + notifier.notify("About to finish the current stage!"); + oldStage = state.getCurrentStage(); + } + else if (config.showGiantsFoundryHeatNotifications() && helper.getActionsForHeatLevel() == 1) + { + notifier.notify("About to run out of heat!"); } } @@ -213,24 +220,6 @@ public class EasyGiantsFoundryPlugin extends Plugin } } - @Subscribe - public void onConfigChanged(ConfigChanged event) - { - if (!event.getGroup().equals(EasyGiantsFoundryConfig.GROUP)) - { - return; - } - - if (config.showGiantsFoundryStageNotifications() != enableStageNotifications) - { - enableStageNotifications = config.showGiantsFoundryStageNotifications(); - } - - if (config.showGiantsFoundryHeatNotifications() != enableHeatNotifications) - { - enableHeatNotifications = config.showGiantsFoundryHeatNotifications(); - } - } @Provides EasyGiantsFoundryConfig provideConfig(ConfigManager configManager)