Add bonus notifications with configs

This commit is contained in:
Patrick
2022-06-23 22:47:20 +04:00
parent 61b4b572a4
commit 6481791892
2 changed files with 99 additions and 1 deletions

View File

@@ -8,6 +8,7 @@ import net.runelite.client.config.ConfigSection;
@ConfigGroup(EasyGiantsFoundryConfig.GROUP) @ConfigGroup(EasyGiantsFoundryConfig.GROUP)
public interface EasyGiantsFoundryConfig extends Config { public interface EasyGiantsFoundryConfig extends Config {
String GROUP = "easygiantsfoundry"; String GROUP = "easygiantsfoundry";
String SOUND_ID = "soundID";
@ConfigSection( @ConfigSection(
name = "Notifications", name = "Notifications",
@@ -38,6 +39,39 @@ public interface EasyGiantsFoundryConfig extends Config {
return true; return true;
} }
@ConfigItem(
keyName = "bonusNotification",
name = "Notify bonus",
description = "Notifies when bonus appears",
position = 2,
section = notificationList
)
default boolean bonusNotification() {
return false;
}
@ConfigItem(
keyName = "bonusSound",
name = "Bonus sound",
description = "Plays a sound when bonus appears",
position = 3,
section = notificationList
)
default boolean bonusSoundNotify() {
return true;
}
@ConfigItem(
keyName = SOUND_ID,
name = "Bonus sound ID",
description = "Sound Effect ID to play when bonus appears",
position = 4,
section = notificationList
)
default int soundId() {
return 4212;
}
@ConfigSection( @ConfigSection(
name = "Highlights", name = "Highlights",

View File

@@ -2,12 +2,22 @@ package com.toofifty.easygiantsfoundry;
import com.google.inject.Provides; import com.google.inject.Provides;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client;
import net.runelite.api.GameObject; import net.runelite.api.GameObject;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.InventoryID; import net.runelite.api.InventoryID;
import net.runelite.api.Skill; import net.runelite.api.Skill;
import net.runelite.api.events.*; import net.runelite.api.events.GameObjectDespawned;
import net.runelite.api.events.GameObjectSpawned;
import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.GameTick;
import net.runelite.api.events.ItemContainerChanged;
import net.runelite.api.events.NpcDespawned;
import net.runelite.api.events.NpcSpawned;
import net.runelite.api.events.ScriptPostFired;
import net.runelite.api.events.StatChanged;
import net.runelite.client.Notifier; import net.runelite.client.Notifier;
import net.runelite.client.callback.ClientThread;
import net.runelite.client.eventbus.Subscribe; import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged; import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
@@ -43,6 +53,8 @@ public class EasyGiantsFoundryPlugin extends Plugin
private int lastBoost; private int lastBoost;
private boolean bonusNotified = false;
@Inject @Inject
private EasyGiantsFoundryState state; private EasyGiantsFoundryState state;
@@ -67,6 +79,12 @@ public class EasyGiantsFoundryPlugin extends Plugin
@Inject @Inject
private Notifier notifier; private Notifier notifier;
@Inject
private Client client;
@Inject
private ClientThread clientThread;
@Override @Override
protected void startUp() protected void startUp()
{ {
@@ -220,6 +238,52 @@ public class EasyGiantsFoundryPlugin extends Plugin
} }
} }
@Subscribe
protected void onConfigChanged(ConfigChanged configChanged)
{
if (!EasyGiantsFoundryConfig.GROUP.equals(configChanged.getGroup()))
{
return;
}
if (EasyGiantsFoundryConfig.SOUND_ID.equals(configChanged.getKey()))
{
clientThread.invoke(() -> client.playSoundEffect(config.soundId()));
}
}
@Subscribe
public void onGameTick(GameTick event)
{
checkBonus();
}
private void checkBonus()
{
if (!state.isEnabled() || state.getCurrentStage() == null
|| state.getCurrentStage().getHeat() != state.getCurrentHeat()
|| !BonusWidget.isActive(client))
{
bonusNotified = false;
return;
}
if (bonusNotified)
{
return;
}
if (config.bonusNotification())
{
notifier.notify("Bonus - Click tool");
}
if (config.bonusSoundNotify())
{
client.playSoundEffect(config.soundId());
}
bonusNotified = true;
}
@Provides @Provides
EasyGiantsFoundryConfig provideConfig(ConfigManager configManager) EasyGiantsFoundryConfig provideConfig(ConfigManager configManager)