From f1d919765de2dbbceebd5aa09cc653a1b66b7ec7 Mon Sep 17 00:00:00 2001 From: Max Weber Date: Fri, 8 Mar 2019 03:56:17 -0700 Subject: [PATCH] runelite-client: Remove ChatboxInputManager It was superseded by ChatboxPanelManager and has been broken for a while now --- .../main/java/net/runelite/api/ScriptID.java | 9 - .../client/game/ChatboxInputManager.java | 158 ------------------ .../main/scripts/ChatboxInputHandler.rs2asm | 79 --------- .../src/main/scripts/ChatboxInputInit.rs2asm | 88 ---------- 4 files changed, 334 deletions(-) delete mode 100644 runelite-client/src/main/java/net/runelite/client/game/ChatboxInputManager.java delete mode 100644 runelite-client/src/main/scripts/ChatboxInputHandler.rs2asm delete mode 100644 runelite-client/src/main/scripts/ChatboxInputInit.rs2asm diff --git a/runelite-api/src/main/java/net/runelite/api/ScriptID.java b/runelite-api/src/main/java/net/runelite/api/ScriptID.java index 6ac6aa42bb..68abc5e0f7 100644 --- a/runelite-api/src/main/java/net/runelite/api/ScriptID.java +++ b/runelite-api/src/main/java/net/runelite/api/ScriptID.java @@ -116,15 +116,6 @@ public final class ScriptID */ public static final int DIARY_QUEST_UPDATE_LINECOUNT = 2523; - /** - * Initializes the chatbox input to use RuneLite callbacks - * - */ - public static final int RUNELITE_CHATBOX_INPUT_INIT = 10001; - /** * Does nothing * diff --git a/runelite-client/src/main/java/net/runelite/client/game/ChatboxInputManager.java b/runelite-client/src/main/java/net/runelite/client/game/ChatboxInputManager.java deleted file mode 100644 index ec8905e380..0000000000 --- a/runelite-client/src/main/java/net/runelite/client/game/ChatboxInputManager.java +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Copyright (c) 2018 Abex - * 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.client.game; - -import com.google.inject.Inject; -import com.google.inject.Singleton; -import java.util.function.Consumer; -import lombok.Getter; -import net.runelite.api.Client; -import net.runelite.api.ScriptID; -import net.runelite.api.events.ScriptCallbackEvent; -import net.runelite.client.callback.ClientThread; -import net.runelite.client.eventbus.EventBus; -import net.runelite.client.eventbus.Subscribe; - -@Singleton -public class ChatboxInputManager -{ - public static final int NO_LIMIT = Integer.MAX_VALUE; - private final Client client; - private final ClientThread clientThread; - - private Consumer done; - private Consumer changed; - private int characterLimit = NO_LIMIT; - - @Getter - private boolean open = false; - - @Inject - public ChatboxInputManager(Client client, ClientThread clientThread, EventBus eventBus) - { - this.client = client; - this.clientThread = clientThread; - eventBus.register(this); - } - - /** - * Opens a RuneScape-style chatbox input - * - * @param text Text to show at the top of the window - * @param defaul Default text in the editable field - * @param done Callback when the text box has been exited, called with "" on esc - */ - public void openInputWindow(String text, String defaul, Consumer done) - { - openInputWindow(text, defaul, NO_LIMIT, done); - } - - public void openInputWindow(String text, String defaul, int characterLimit, Consumer done) - { - openInputWindow(text, defaul, characterLimit, null, done); - } - - public void openInputWindow(String text, String defaul, int characterLimit, Consumer changed, Consumer done) - { - this.done = done; - this.changed = changed; - this.characterLimit = characterLimit; - this.open = true; - clientThread.invoke(() -> client.runScript( - ScriptID.RUNELITE_CHATBOX_INPUT_INIT, - text, - defaul - )); - } - - /** - * Closes the RuneScape-style chatbox input - */ - public void closeInputWindow() - { - if (!this.open) - { - return; - } - this.open = false; - clientThread.invoke(() -> client.runScript( - ScriptID.RESET_CHATBOX_INPUT, - 1, - 1 - )); - } - - @Subscribe - public void onScriptCallbackEvent(ScriptCallbackEvent ev) - { - // This replaces script 74 and most of 112 - if ("chatboxInputHandler".equals(ev.getEventName())) - { - int intStackSize = client.getIntStackSize(); - int stringStackSize = client.getStringStackSize(); - int typedKey = client.getIntStack()[--intStackSize]; - String str = client.getStringStack()[--stringStackSize]; - boolean isDone = false; - - switch (typedKey) - { - case 27: // Escape - str = ""; - // fallthrough - case '\n': - this.open = false; - isDone = true; - break; - case '\b': - if (!str.isEmpty()) - { - str = str.substring(0, str.length() - 1); - } - break; - default: - // If we wanted to do numbers only, we could add a limit here - if (typedKey >= 32 && (str.length() < characterLimit)) - { - str += Character.toString((char) typedKey); - } - } - - if (changed != null) - { - changed.accept(str); - } - - if (isDone && done != null) - { - done.accept(str); - } - - client.getStringStack()[stringStackSize++] = str; - client.getIntStack()[intStackSize++] = isDone ? 1 : 0; - client.setIntStackSize(intStackSize); - client.setStringStackSize(stringStackSize); - } - } -} diff --git a/runelite-client/src/main/scripts/ChatboxInputHandler.rs2asm b/runelite-client/src/main/scripts/ChatboxInputHandler.rs2asm deleted file mode 100644 index 106f53218e..0000000000 --- a/runelite-client/src/main/scripts/ChatboxInputHandler.rs2asm +++ /dev/null @@ -1,79 +0,0 @@ -; Copyright (c) 2018 Abex -; 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. - -;; -; Keylistener for ChatboxInputInit -; -; Script 112 Normal keylistener -; -; @param int pressedKey -; @param int typedKey -;; - -.id 10002 -.int_stack_count 1 -.string_stack_count 1 -.int_var_count 2 -.string_var_count 1 - -; If we are not the active listener, the widget ids have probably changed - get_varc 5 - load_int -2 - if_icmpeq LABEL2 - -; Log the error - load_string "Got input while not active; Widget ids in ChatboxInputInit are probably wrong." - load_string "debug" - runelite_callback - return - -LABEL2: -; Discard zero presses - iload 0 - load_int 0 - if_icmpeq LABEL1 - -; Call runelite - iload 0 - get_varc_string 22 - load_string "chatboxInputHandler" - runelite_callback - istore 0 - put_varc_string 22 - -; Check return value - iload 0 - load_int 1 - if_icmpne LABEL0 - -; Close the dialog - load_int 1 - load_int 1 - invoke 299 - -; Update UI -LABEL0: - load_string "" - invoke 222 -LABEL1: - return diff --git a/runelite-client/src/main/scripts/ChatboxInputInit.rs2asm b/runelite-client/src/main/scripts/ChatboxInputInit.rs2asm deleted file mode 100644 index a29faa76c6..0000000000 --- a/runelite-client/src/main/scripts/ChatboxInputInit.rs2asm +++ /dev/null @@ -1,88 +0,0 @@ -; Copyright (c) 2018 Abex -; 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. - -;; -; Creates a chatbox text input -; -; @param String Prompt text -; @param String Default value -; -; Script 752 GE input panel -; Script 103-111 various input panels -; Script 74 validates input -; script 112 key callback -;; - -.id 10001 -.int_stack_count 0 -.string_stack_count 2 -.int_var_count 0 -.string_var_count 2 - -; Hide the chat pane - invoke 677 - -; Set current value - sload 1 - put_varc_string 22 - -; Mark varcstring22 for our use - load_int -2 - put_varc 5 - -; Set text - sload 0 - load_int 10616876 - widget_put_text_widget - -; Init the widgets - load_string "" - invoke 222 - -; Register the key listener - load_int 10002 - load_int -2147483639 ; typedKey - load_string "i" - load_int 10616877 - widget_put_key_listener_widget - -; Restore the chatbox on exit - load_int 299 - load_int 1 - load_int 1 - load_string "ii" - load_int 10616877 - widget_put_dialog_abort_listener_widget - -; 70% sure this opens the keyboard on mobile - invoke 1972 - load_int 1 - if_icmpeq LABEL25 - jump LABEL26 -LABEL25: - load_int 1 - load_int 10 - invoke 1983 -LABEL26: - - return