From 2bc38a124c036869008a470b121ad7d2c47d9377 Mon Sep 17 00:00:00 2001 From: Adam Date: Sun, 1 Jul 2018 11:08:39 -0400 Subject: [PATCH] chat commands: store kill counts in config This will be used later. --- .../chatcommands/ChatCommandsPlugin.java | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java index 5baddacf6e..c09805b1a3 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java @@ -31,6 +31,8 @@ import java.io.IOException; import java.util.List; import java.util.concurrent.ExecutionException; import java.util.concurrent.ScheduledExecutorService; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import javax.inject.Inject; import lombok.extern.slf4j.Slf4j; import net.runelite.api.ChatMessageType; @@ -38,6 +40,7 @@ import net.runelite.api.Client; import net.runelite.api.GameState; import net.runelite.api.ItemComposition; import net.runelite.api.MessageNode; +import net.runelite.api.events.ChatMessage; import net.runelite.api.events.SetMessage; import net.runelite.api.vars.AccountType; import net.runelite.client.chat.ChatColorType; @@ -66,6 +69,8 @@ import net.runelite.http.api.item.SearchResult; public class ChatCommandsPlugin extends Plugin { private static final float HIGH_ALCHEMY_CONSTANT = 0.6f; + private static final Pattern KILLCOUNT_PATERN = Pattern.compile("Your ([a-zA-Z ]+) kill count is: (\\d+)."); + private static final Pattern WINTERTODT_PATERN = Pattern.compile("Your subdued Wintertodt count is: (\\d+)."); private final HiscoreClient hiscoreClient = new HiscoreClient(); @@ -75,6 +80,9 @@ public class ChatCommandsPlugin extends Plugin @Inject private ChatCommandsConfig config; + @Inject + private ConfigManager configManager; + @Inject private ItemManager itemManager; @@ -108,6 +116,19 @@ public class ChatCommandsPlugin extends Plugin return configManager.getConfig(ChatCommandsConfig.class); } + private void setKc(String boss, int killcount) + { + configManager.setConfiguration("killcount." + client.getUsername().toLowerCase(), + boss.toLowerCase(), killcount); + } + + private int getKc(String boss) + { + Integer killCount = configManager.getConfiguration("killcount." + client.getUsername().toLowerCase(), + boss.toLowerCase(), int.class); + return killCount == null ? 0 : killCount; + } + /** * Checks if the chat message is a command. * @@ -170,7 +191,33 @@ public class ChatCommandsPlugin extends Plugin log.debug("Running clue lookup for {}", search); executor.submit(() -> playerClueLookup(setMessage.getType(), setMessage, search)); } + } + @Subscribe + public void onChatMessage(ChatMessage chatMessage) + { + if (chatMessage.getType() != ChatMessageType.SERVER && chatMessage.getType() != ChatMessageType.FILTERED) + { + return; + } + + String message = chatMessage.getMessage(); + Matcher matcher = KILLCOUNT_PATERN.matcher(message); + if (matcher.find()) + { + String boss = matcher.group(1); + int kc = Integer.parseInt(matcher.group(2)); + + setKc(boss, kc); + } + + matcher = WINTERTODT_PATERN.matcher(message); + if (matcher.find()) + { + int kc = Integer.parseInt(matcher.group(1)); + + setKc("Wintertodt", kc); + } } /**