chat commands: add support for league hiscores

This commit is contained in:
Adam
2019-11-15 10:02:05 -05:00
parent 39e40b655c
commit d76a2670de

View File

@@ -27,6 +27,7 @@ package net.runelite.client.plugins.chatcommands;
import com.google.inject.Provides;
import java.io.IOException;
import java.util.EnumSet;
import java.util.List;
import java.util.concurrent.ScheduledExecutorService;
import java.util.regex.Matcher;
@@ -41,8 +42,10 @@ import net.runelite.api.Experience;
import net.runelite.api.IconID;
import net.runelite.api.ItemComposition;
import net.runelite.api.MessageNode;
import net.runelite.api.Player;
import net.runelite.api.VarPlayer;
import net.runelite.api.Varbits;
import net.runelite.api.WorldType;
import net.runelite.api.events.ChatMessage;
import net.runelite.api.events.GameTick;
import net.runelite.api.events.VarbitChanged;
@@ -1126,31 +1129,28 @@ public class ChatCommandsPlugin extends Plugin
*/
private HiscoreLookup getCorrectLookupFor(final ChatMessage chatMessage)
{
final String player;
final HiscoreEndpoint ironmanStatus;
Player localPlayer = client.getLocalPlayer();
final String player = sanitize(chatMessage.getName());
if (chatMessage.getType().equals(ChatMessageType.PRIVATECHATOUT))
// If we are sending the message then just use the local hiscore endpoint for the world
if (chatMessage.getType().equals(ChatMessageType.PRIVATECHATOUT)
|| player.equals(localPlayer.getName()))
{
player = client.getLocalPlayer().getName();
ironmanStatus = hiscoreEndpoint;
return new HiscoreLookup(localPlayer.getName(), hiscoreEndpoint);
}
else
{
player = sanitize(chatMessage.getName());
if (player.equals(client.getLocalPlayer().getName()))
// Public chat on a leagues world is always league hiscores, regardless of icon
if (chatMessage.getType() == ChatMessageType.PUBLICCHAT || chatMessage.getType() == ChatMessageType.MODCHAT)
{
if (client.getWorldType().contains(WorldType.LEAGUE))
{
// Get ironman status from for the local player
ironmanStatus = hiscoreEndpoint;
}
else
{
// Get ironman status from their icon in chat
ironmanStatus = getHiscoreEndpointByName(chatMessage.getName());
return new HiscoreLookup(player, HiscoreEndpoint.LEAGUE);
}
}
return new HiscoreLookup(player, ironmanStatus);
// Get ironman status from their icon in chat
HiscoreEndpoint endpoint = getHiscoreEndpointByName(chatMessage.getName());
return new HiscoreLookup(player, endpoint);
}
/**
@@ -1189,6 +1189,12 @@ public class ChatCommandsPlugin extends Plugin
*/
private HiscoreEndpoint getLocalHiscoreEndpointType()
{
EnumSet<WorldType> worldType = client.getWorldType();
if (worldType.contains(WorldType.LEAGUE))
{
return HiscoreEndpoint.LEAGUE;
}
return toEndPoint(client.getAccountType());
}