Merge pull request #5992 from deathbeam/discord-raids

Add raiding activity to Discord plugin
This commit is contained in:
Tomas Slusny
2018-10-14 02:59:52 +02:00
committed by GitHub
4 changed files with 71 additions and 2 deletions

View File

@@ -29,5 +29,6 @@ enum DiscordAreaType
BOSSES,
CITIES,
DUNGEONS,
MINIGAMES;
MINIGAMES,
RAIDS
}

View File

@@ -107,4 +107,15 @@ public interface DiscordConfig extends Config
{
return true;
}
@ConfigItem(
keyName = "showRaidingActivity",
name = "Show activity at raids",
description = "Configures if your activity at raids should be shown.",
position = 8
)
default boolean showRaidingActivity()
{
return true;
}
}

View File

@@ -25,11 +25,15 @@
*/
package net.runelite.client.plugins.discord;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import lombok.AllArgsConstructor;
import lombok.Getter;
import net.runelite.api.Client;
import net.runelite.api.Skill;
import net.runelite.api.Varbits;
@AllArgsConstructor
@Getter
@@ -237,14 +241,25 @@ enum DiscordGameEventType
MG_TROUBLE_BREWING("Trouble Brewing", DiscordAreaType.MINIGAMES, 15150),
MG_TZHAAR_FIGHT_CAVES("Tzhaar Fight Caves", DiscordAreaType.MINIGAMES, 9551),
MG_TZHAAR_FIGHT_PITS("Tzhaar Fight Pits", DiscordAreaType.MINIGAMES, 9552),
MG_VOLCANIC_MINE("Volcanic Mine", DiscordAreaType.MINIGAMES, 15263, 15262);
MG_VOLCANIC_MINE("Volcanic Mine", DiscordAreaType.MINIGAMES, 15263, 15262),
// Raids
RAIDS_CHAMBERS_OF_XERIC("Chambers of Xeric", DiscordAreaType.RAIDS, Varbits.IN_RAID),
RAIDS_THEATRE_OF_BLOOD("Theatre of Blood", DiscordAreaType.RAIDS, Varbits.THEATRE_OF_BLOOD);
private static final Map<Integer, DiscordGameEventType> FROM_REGION = new HashMap<>();
private static final List<DiscordGameEventType> FROM_VARBITS = new ArrayList<>();
static
{
for (DiscordGameEventType discordGameEventType : DiscordGameEventType.values())
{
if (discordGameEventType.getVarbits() != null)
{
FROM_VARBITS.add(discordGameEventType);
continue;
}
if (discordGameEventType.getRegionIds() == null)
{
continue;
@@ -266,6 +281,7 @@ enum DiscordGameEventType
private boolean shouldTimeout;
private DiscordAreaType discordAreaType;
private Varbits varbits;
private int[] regionIds;
DiscordGameEventType(Skill skill)
@@ -298,6 +314,15 @@ enum DiscordGameEventType
this.shouldClear = true;
}
DiscordGameEventType(String areaName, DiscordAreaType areaType, Varbits varbits)
{
this.details = exploring(areaType, areaName);
this.priority = -2;
this.discordAreaType = areaType;
this.varbits = varbits;
this.shouldClear = true;
}
private static String training(final Skill skill)
{
return training(skill.getName());
@@ -330,6 +355,8 @@ enum DiscordGameEventType
return "Location: " + areaName;
case MINIGAMES:
return "Playing: " + areaName;
case RAIDS:
return "Raiding: " + areaName;
}
return "";
@@ -369,4 +396,17 @@ enum DiscordGameEventType
{
return FROM_REGION.get(regionId);
}
public static DiscordGameEventType fromVarbit(final Client client)
{
for (DiscordGameEventType fromVarbit : FROM_VARBITS)
{
if (client.getVar(fromVarbit.getVarbits()) != 0)
{
return fromVarbit;
}
}
return null;
}
}

View File

@@ -41,6 +41,7 @@ import net.runelite.api.coords.WorldPoint;
import net.runelite.api.events.ConfigChanged;
import net.runelite.api.events.ExperienceChanged;
import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.VarbitChanged;
import net.runelite.client.RuneLiteProperties;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin;
@@ -159,6 +160,22 @@ public class DiscordPlugin extends Plugin
}
}
@Subscribe
public void onVarbitChanged(VarbitChanged event)
{
if (!config.showRaidingActivity())
{
return;
}
final DiscordGameEventType discordGameEventType = DiscordGameEventType.fromVarbit(client);
if (discordGameEventType != null)
{
discordState.triggerEvent(discordGameEventType);
}
}
@Schedule(
period = 1,
unit = ChronoUnit.MINUTES