From f803e584791f2e31c9d940d5e5b8cd03b412803c Mon Sep 17 00:00:00 2001 From: Hydrox6 Date: Sun, 18 Nov 2018 13:00:48 +0000 Subject: [PATCH] wasdplugin: Show Ironman Icons when chat is locked (#6347) --- .../main/java/net/runelite/api/IconID.java | 58 +++++++++++++++++++ .../chatcommands/ChatCommandsPlugin.java | 7 ++- .../plugins/wasdcamera/WASDCameraPlugin.java | 27 ++++++++- 3 files changed, 86 insertions(+), 6 deletions(-) create mode 100644 runelite-api/src/main/java/net/runelite/api/IconID.java diff --git a/runelite-api/src/main/java/net/runelite/api/IconID.java b/runelite-api/src/main/java/net/runelite/api/IconID.java new file mode 100644 index 0000000000..7874179a3f --- /dev/null +++ b/runelite-api/src/main/java/net/runelite/api/IconID.java @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2018, Hydrox6 + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.api; + +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +/** + * Enum of all official icons that Jagex uses in chat. + */ +@RequiredArgsConstructor +@Getter +public enum IconID +{ + PLAYER_MODERATOR(0), + JAGEX_MODERATOR(1), + IRONMAN(2), + ULTIMATE_IRONMAN(3), + DMM_SKULL_5_KEYS(4), + DMM_SKULL_4_KEYS(5), + DMM_SKULL_3_KEYS(6), + DMM_SKULL_2_KEYS(7), + DMM_SKULL_1_KEYS(8), + SKULL(9), + HARDCORE_IRONMAN(10), + NO_ENTRY(11), + CHAIN_LINK(12); + + private final int index; + + @Override + public String toString() + { + return ""; + } +} 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 659529b00a..5a811a7eab 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 @@ -39,6 +39,7 @@ import net.runelite.api.ChatMessageType; import net.runelite.api.Client; import net.runelite.api.Experience; import net.runelite.api.GameState; +import net.runelite.api.IconID; import net.runelite.api.ItemComposition; import net.runelite.api.MessageNode; import net.runelite.api.events.ChatMessage; @@ -811,15 +812,15 @@ public class ChatCommandsPlugin extends Plugin implements ChatboxInputListener */ private static HiscoreEndpoint getHiscoreEndpointByName(final String name) { - if (name.contains("")) + if (name.contains(IconID.IRONMAN.toString())) { return toEndPoint(AccountType.IRONMAN); } - else if (name.contains("")) + else if (name.contains(IconID.ULTIMATE_IRONMAN.toString())) { return toEndPoint(AccountType.ULTIMATE_IRONMAN); } - else if (name.contains("")) + else if (name.contains(IconID.HARDCORE_IRONMAN.toString())) { return toEndPoint(AccountType.HARDCORE_IRONMAN); } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/wasdcamera/WASDCameraPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/wasdcamera/WASDCameraPlugin.java index 8740e65ac4..f93d065fd3 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/wasdcamera/WASDCameraPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/wasdcamera/WASDCameraPlugin.java @@ -34,6 +34,7 @@ import lombok.Getter; import lombok.Setter; import net.runelite.api.Client; import net.runelite.api.GameState; +import net.runelite.api.IconID; import net.runelite.api.VarClientInt; import net.runelite.api.VarClientStr; import net.runelite.api.Varbits; @@ -141,7 +142,7 @@ public class WASDCameraPlugin extends Plugin { if (chatboxFocused() && !typing) { - chatboxInput.setText(client.getLocalPlayer().getName() + ": " + PRESS_ENTER_TO_CHAT); + chatboxInput.setText(getPlayerNameWithIcon() + ": " + PRESS_ENTER_TO_CHAT); } } break; @@ -164,7 +165,7 @@ public class WASDCameraPlugin extends Plugin Widget chatboxInput = client.getWidget(WidgetInfo.CHATBOX_INPUT); if (chatboxInput != null) { - chatboxInput.setText(client.getLocalPlayer().getName() + ": " + PRESS_ENTER_TO_CHAT); + chatboxInput.setText(getPlayerNameWithIcon() + ": " + PRESS_ENTER_TO_CHAT); } } } @@ -181,9 +182,29 @@ public class WASDCameraPlugin extends Plugin { final boolean isChatboxTransparent = client.isResized() && client.getVar(Varbits.TRANSPARENT_CHATBOX) == 1; final Color textColor = isChatboxTransparent ? JagexColors.CHAT_TYPED_TEXT_TRANSPARENT_BACKGROUND : JagexColors.CHAT_TYPED_TEXT_OPAQUE_BACKGROUND; - chatboxInput.setText(client.getLocalPlayer().getName() + ": " + ColorUtil.wrapWithColorTag(client.getVar(VarClientStr.CHATBOX_TYPED_TEXT) + "*", textColor)); + chatboxInput.setText(getPlayerNameWithIcon() + ": " + ColorUtil.wrapWithColorTag(client.getVar(VarClientStr.CHATBOX_TYPED_TEXT) + "*", textColor)); } } } } + + private String getPlayerNameWithIcon() + { + IconID icon; + switch (client.getAccountType()) + { + case IRONMAN: + icon = IconID.IRONMAN; + break; + case ULTIMATE_IRONMAN: + icon = IconID.ULTIMATE_IRONMAN; + break; + case HARDCORE_IRONMAN: + icon = IconID.HARDCORE_IRONMAN; + break; + default: + return client.getLocalPlayer().getName(); + } + return icon + client.getLocalPlayer().getName(); + } }