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 com.google.inject.Provides;
import java.io.IOException; import java.io.IOException;
import java.util.EnumSet;
import java.util.List; import java.util.List;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
import java.util.regex.Matcher; import java.util.regex.Matcher;
@@ -41,8 +42,10 @@ import net.runelite.api.Experience;
import net.runelite.api.IconID; import net.runelite.api.IconID;
import net.runelite.api.ItemComposition; import net.runelite.api.ItemComposition;
import net.runelite.api.MessageNode; import net.runelite.api.MessageNode;
import net.runelite.api.Player;
import net.runelite.api.VarPlayer; import net.runelite.api.VarPlayer;
import net.runelite.api.Varbits; import net.runelite.api.Varbits;
import net.runelite.api.WorldType;
import net.runelite.api.events.ChatMessage; import net.runelite.api.events.ChatMessage;
import net.runelite.api.events.GameTick; import net.runelite.api.events.GameTick;
import net.runelite.api.events.VarbitChanged; import net.runelite.api.events.VarbitChanged;
@@ -1126,31 +1129,28 @@ public class ChatCommandsPlugin extends Plugin
*/ */
private HiscoreLookup getCorrectLookupFor(final ChatMessage chatMessage) private HiscoreLookup getCorrectLookupFor(final ChatMessage chatMessage)
{ {
final String player; Player localPlayer = client.getLocalPlayer();
final HiscoreEndpoint ironmanStatus; 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(); return new HiscoreLookup(localPlayer.getName(), hiscoreEndpoint);
ironmanStatus = 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 return new HiscoreLookup(player, HiscoreEndpoint.LEAGUE);
ironmanStatus = hiscoreEndpoint;
}
else
{
// Get ironman status from their icon in chat
ironmanStatus = getHiscoreEndpointByName(chatMessage.getName());
} }
} }
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() private HiscoreEndpoint getLocalHiscoreEndpointType()
{ {
EnumSet<WorldType> worldType = client.getWorldType();
if (worldType.contains(WorldType.LEAGUE))
{
return HiscoreEndpoint.LEAGUE;
}
return toEndPoint(client.getAccountType()); return toEndPoint(client.getAccountType());
} }