Merge pull request #2124 from SoyChai/discord-skilling-icons

Display skill icons in Discord while training
This commit is contained in:
Adam
2018-04-29 12:05:52 -04:00
committed by GitHub
3 changed files with 55 additions and 39 deletions

View File

@@ -129,7 +129,7 @@ public class DiscordService implements AutoCloseable
discordRichPresence.largeImageText = discordPresence.getLargeImageText(); discordRichPresence.largeImageText = discordPresence.getLargeImageText();
discordRichPresence.smallImageKey = Strings.isNullOrEmpty(discordPresence.getSmallImageKey()) discordRichPresence.smallImageKey = Strings.isNullOrEmpty(discordPresence.getSmallImageKey())
? "default" ? "default"
: discordPresence.getLargeImageKey(); : discordPresence.getSmallImageKey();
discordRichPresence.smallImageText = discordPresence.getSmallImageText(); discordRichPresence.smallImageText = discordPresence.getSmallImageText();
discordRichPresence.partyId = discordPresence.getPartyId(); discordRichPresence.partyId = discordPresence.getPartyId();
discordRichPresence.partySize = discordPresence.getPartySize(); discordRichPresence.partySize = discordPresence.getPartySize();

View File

@@ -24,7 +24,7 @@
*/ */
package net.runelite.client.plugins.discord; package net.runelite.client.plugins.discord;
import com.google.common.collect.Sets; import com.google.common.collect.ImmutableSet;
import java.util.Set; import java.util.Set;
import java.util.function.Function; import java.util.function.Function;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@@ -62,32 +62,34 @@ public enum DiscordGameEventType
{ {
IN_GAME("In Game", false), IN_GAME("In Game", false),
IN_MENU("In Menu", false), IN_MENU("In Menu", false),
TRAINING_ATTACK(training(ATTACK), DiscordGameEventType::combatSkillChanged), TRAINING_ATTACK(ATTACK, DiscordGameEventType::combatSkillChanged),
TRAINING_DEFENCE(training(DEFENCE), DiscordGameEventType::combatSkillChanged), TRAINING_DEFENCE(DEFENCE, DiscordGameEventType::combatSkillChanged),
TRAINING_STRENGTH(training(STRENGTH), DiscordGameEventType::combatSkillChanged), TRAINING_STRENGTH(STRENGTH, DiscordGameEventType::combatSkillChanged),
TRAINING_HITPOINTS(training(HITPOINTS), DiscordGameEventType::combatSkillChanged), TRAINING_HITPOINTS(HITPOINTS, DiscordGameEventType::combatSkillChanged),
TRAINING_SLAYER(training(SLAYER), 1, DiscordGameEventType::combatSkillChanged), TRAINING_SLAYER(SLAYER, 1, DiscordGameEventType::combatSkillChanged),
TRAINING_RANGED(training(RANGED), DiscordGameEventType::combatSkillChanged), TRAINING_RANGED(RANGED, DiscordGameEventType::combatSkillChanged),
TRAINING_MAGIC(training(MAGIC), DiscordGameEventType::combatSkillChanged), TRAINING_MAGIC(MAGIC, DiscordGameEventType::combatSkillChanged),
TRAINING_PRAYER(training(PRAYER)), TRAINING_PRAYER(PRAYER),
TRAINING_COOKING(training(COOKING)), TRAINING_COOKING(COOKING),
TRAINING_WOODCUTTING(training(WOODCUTTING)), TRAINING_WOODCUTTING(WOODCUTTING),
TRAINING_FLETCHING(training(FLETCHING)), TRAINING_FLETCHING(FLETCHING),
TRAINING_FISHING(training(FISHING)), TRAINING_FISHING(FISHING),
TRAINING_FIREMAKING(training(FIREMAKING)), TRAINING_FIREMAKING(FIREMAKING),
TRAINING_CRAFTING(training(CRAFTING)), TRAINING_CRAFTING(CRAFTING),
TRAINING_SMITHING(training(SMITHING)), TRAINING_SMITHING(SMITHING),
TRAINING_MINING(training(MINING)), TRAINING_MINING(MINING),
TRAINING_HERBLORE(training(HERBLORE)), TRAINING_HERBLORE(HERBLORE),
TRAINING_AGILITY(training(AGILITY)), TRAINING_AGILITY(AGILITY),
TRAINING_THIEVING(training(THIEVING)), TRAINING_THIEVING(THIEVING),
TRAINING_FARMING(training(FARMING)), TRAINING_FARMING(FARMING),
TRAINING_RUNECRAFT(training(RUNECRAFT)), TRAINING_RUNECRAFT(RUNECRAFT),
TRAINING_HUNTER(training(HUNTER)), TRAINING_HUNTER(HUNTER),
TRAINING_CONSTRUCTION(training(CONSTRUCTION)); TRAINING_CONSTRUCTION(CONSTRUCTION);
private static final Set<Skill> COMBAT_SKILLS = ImmutableSet.of(ATTACK, STRENGTH, DEFENCE, HITPOINTS, SLAYER, RANGED, MAGIC);
private static final Set<Skill> COMBAT_SKILLS = Sets.newHashSet(ATTACK, STRENGTH, DEFENCE, HITPOINTS, SLAYER, RANGED, MAGIC);
private final String state; private final String state;
private final String imageKey;
private String details; private String details;
private boolean considerDelay = true; private boolean considerDelay = true;
private Function<DiscordGameEventType, Boolean> isChanged = (l) -> true; private Function<DiscordGameEventType, Boolean> isChanged = (l) -> true;
@@ -96,22 +98,31 @@ public enum DiscordGameEventType
DiscordGameEventType(String state, boolean considerDelay) DiscordGameEventType(String state, boolean considerDelay)
{ {
this.state = state; this.state = state;
this.imageKey = "default";
this.considerDelay = considerDelay; this.considerDelay = considerDelay;
} }
DiscordGameEventType(String state, int priority, Function<DiscordGameEventType, Boolean> isChanged) DiscordGameEventType(Skill skill, int priority, Function<DiscordGameEventType, Boolean> isChanged)
{ {
this.state = state; this.state = training(skill);
this.imageKey = imageKeyOf(skill);
this.priority = priority; this.priority = priority;
this.isChanged = isChanged; this.isChanged = isChanged;
} }
DiscordGameEventType(String state, Function<DiscordGameEventType, Boolean> isChanged) DiscordGameEventType(Skill skill, Function<DiscordGameEventType, Boolean> isChanged)
{ {
this.state = state; this.state = training(skill);
this.imageKey = imageKeyOf(skill);
this.isChanged = isChanged; this.isChanged = isChanged;
} }
DiscordGameEventType(Skill skill)
{
this.state = training(skill);
this.imageKey = imageKeyOf(skill);
}
private static String training(final Skill skill) private static String training(final Skill skill)
{ {
return training(skill.getName()); return training(skill.getName());
@@ -122,7 +133,17 @@ public enum DiscordGameEventType
return "Training: " + what; return "Training: " + what;
} }
static boolean combatSkillChanged(final DiscordGameEventType l) private static String imageKeyOf(final Skill skill)
{
return imageKeyOf(skill.getName().toLowerCase());
}
private static String imageKeyOf(final String what)
{
return "icon_" + what;
}
private static boolean combatSkillChanged(final DiscordGameEventType l)
{ {
for (Skill skill : Skill.values()) for (Skill skill : Skill.values())
{ {
@@ -161,8 +182,7 @@ public enum DiscordGameEventType
case RUNECRAFT: return TRAINING_RUNECRAFT; case RUNECRAFT: return TRAINING_RUNECRAFT;
case HUNTER: return TRAINING_HUNTER; case HUNTER: return TRAINING_HUNTER;
case CONSTRUCTION: return TRAINING_CONSTRUCTION; case CONSTRUCTION: return TRAINING_CONSTRUCTION;
default: return null;
} }
return null;
} }
} }

View File

@@ -111,6 +111,7 @@ public class DiscordState
.state(lastEvent.getState()) .state(lastEvent.getState())
.details(lastEvent.getDetails()) .details(lastEvent.getDetails())
.startTimestamp(startOfAction) .startTimestamp(startOfAction)
.smallImageKey(newEvent.getImageKey())
.build(); .build();
needsFlush = true; needsFlush = true;
@@ -126,11 +127,6 @@ public class DiscordState
final Duration actionTimeout = Duration.ofMinutes(timeout); final Duration actionTimeout = Duration.ofMinutes(timeout);
if (Instant.now().compareTo(lastAction.plus(actionTimeout)) >= 0) return Instant.now().isAfter(lastAction.plus(actionTimeout));
{
return true;
}
return false;
} }
} }