diff --git a/runelite-api/src/main/java/net/runelite/api/events/WidgetPositioned.java b/runelite-api/src/main/java/net/runelite/api/events/WidgetPositioned.java deleted file mode 100644 index d5479e3485..0000000000 --- a/runelite-api/src/main/java/net/runelite/api/events/WidgetPositioned.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2018, Adam - * 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.events; - -import lombok.Value; - -/** - * An event where the position of a {@link net.runelite.api.widgets.Widget} - * relative to its parent has changed. - */ -@Value -public class WidgetPositioned -{ -} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/banktags/tabs/BankSearch.java b/runelite-client/src/main/java/net/runelite/client/plugins/banktags/tabs/BankSearch.java index 4aed474dae..73bfbc99a4 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/banktags/tabs/BankSearch.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/banktags/tabs/BankSearch.java @@ -85,7 +85,7 @@ public class BankSearch // selecting/changing tab if (closeInput) { - client.runScript(ScriptID.RESET_CHATBOX_INPUT); + client.runScript(ScriptID.RESET_CHATBOX_INPUT, 0, 0); } client.setVar(VarClientInt.INPUT_TYPE, inputType.getType()); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/banktags/tabs/TabInterface.java b/runelite-client/src/main/java/net/runelite/client/plugins/banktags/tabs/TabInterface.java index 1a751c7b2e..14b6ee9178 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/banktags/tabs/TabInterface.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/banktags/tabs/TabInterface.java @@ -336,7 +336,7 @@ public class TabInterface { bankSearch.reset(true); - clientThread.invokeLater(() -> client.runScript(ScriptID.RESET_CHATBOX_INPUT)); + clientThread.invokeLater(() -> client.runScript(ScriptID.RESET_CHATBOX_INPUT, 0, 0)); } else { diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/chatboxperformance/ChatboxPerformancePlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/chatboxperformance/ChatboxPerformancePlugin.java index aaf6634ead..a548bb44ff 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/chatboxperformance/ChatboxPerformancePlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/chatboxperformance/ChatboxPerformancePlugin.java @@ -26,12 +26,15 @@ package net.runelite.client.plugins.chatboxperformance; import javax.inject.Inject; import net.runelite.api.Client; +import net.runelite.api.GameState; +import net.runelite.api.ScriptID; +import net.runelite.api.events.ScriptCallbackEvent; import net.runelite.api.widgets.WidgetType; -import net.runelite.api.events.WidgetPositioned; import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.widgets.WidgetPositionMode; import net.runelite.api.widgets.WidgetSizeMode; +import net.runelite.client.callback.ClientThread; import net.runelite.client.eventbus.Subscribe; import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; @@ -45,36 +48,35 @@ public class ChatboxPerformancePlugin extends Plugin @Inject private Client client; + @Inject + private ClientThread clientThread; + + @Override + public void startUp() + { + if (client.getGameState() == GameState.LOGGED_IN) + { + clientThread.invokeLater(() -> client.runScript(ScriptID.RESET_CHATBOX_INPUT)); + } + } + + @Override + public void shutDown() + { + if (client.getGameState() == GameState.LOGGED_IN) + { + clientThread.invokeLater(() -> client.runScript(ScriptID.RESET_CHATBOX_INPUT)); + } + } + @Subscribe - public void onWidgetPositioned(WidgetPositioned event) + private void onScriptCallbackEvent(ScriptCallbackEvent ev) { - if (!areWidgetsFixed()) + if (!"chatboxBackgroundBuilt".equals(ev.getEventName())) { - fixChatbox(); - } - } - - private boolean areWidgetsFixed() - { - Widget widget = client.getWidget(WidgetInfo.CHATBOX_TRANSPARENT_BACKGROUND); - if (widget == null) - { - return true; + return; } - Widget[] widgets = widget.getChildren(); - - if (widgets != null && widgets.length > 0) - { - Widget last = widgets[widgets.length - 1]; - return last != null && last.getOpacity() < 254; - } - - return false; - } - - private void fixChatbox() - { fixDarkBackground(); fixWhiteLines(true); fixWhiteLines(false); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/interfacestyles/InterfaceStylesPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/interfacestyles/InterfaceStylesPlugin.java index c635eb9bd5..839fff4083 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/interfacestyles/InterfaceStylesPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/interfacestyles/InterfaceStylesPlugin.java @@ -36,10 +36,10 @@ import net.runelite.api.HealthBar; import net.runelite.api.SpriteID; import net.runelite.api.SpritePixels; import net.runelite.api.events.BeforeMenuRender; +import net.runelite.api.events.ClientTick; import net.runelite.api.events.ConfigChanged; import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.PostHealthBar; -import net.runelite.api.events.WidgetPositioned; import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.WidgetInfo; import net.runelite.client.callback.ClientThread; @@ -107,7 +107,7 @@ public class InterfaceStylesPlugin extends Plugin } @Subscribe - public void onWidgetPositioned(WidgetPositioned widgetPositioned) + public void onClientTick(ClientTick event) { adjustWidgetDimensions(); } diff --git a/runelite-client/src/main/scripts/ToplevelChatboxBackground.hash b/runelite-client/src/main/scripts/ToplevelChatboxBackground.hash new file mode 100644 index 0000000000..96871403a0 --- /dev/null +++ b/runelite-client/src/main/scripts/ToplevelChatboxBackground.hash @@ -0,0 +1 @@ +975C2E20F49CD83A72B6A7BA4CF34F9B476F26DCD2649B0CE79B3F93CBB892DD \ No newline at end of file diff --git a/runelite-client/src/main/scripts/ToplevelChatboxBackground.rs2asm b/runelite-client/src/main/scripts/ToplevelChatboxBackground.rs2asm new file mode 100644 index 0000000000..3504991537 --- /dev/null +++ b/runelite-client/src/main/scripts/ToplevelChatboxBackground.rs2asm @@ -0,0 +1,426 @@ +.id 923 +.int_stack_count 0 +.string_stack_count 0 +.int_var_count 5 +.string_var_count 0 +; callback "chatboxBackgroundBuilt" +; used by the ChatboxPerformancePlugin to know when it needs to rebuild. +; Unmark the plugin as hidden and toggle it. The chatbox should change opacity +; slightly + iconst 10616834 + cc_deleteall + iconst 0 + istore 0 + get_varc_int 41 + iconst 1337 + if_icmpeq LABEL8 + jump LABEL24 +LABEL8: + invoke 922 + iconst 1 + if_icmpeq LABEL12 + jump LABEL15 +LABEL12: + iconst 1 + istore 0 + jump LABEL24 +LABEL15: + getwindowmode + iconst 1 + if_icmpeq LABEL19 + jump LABEL24 +LABEL19: + iconst 0 + set_varc_int 41 + iconst 0 + iconst 0 + invoke 183 +LABEL24: + iload 0 + iconst 10616869 + if_sethide + get_varbit 6374 + iconst 1 + if_icmpeq LABEL31 + jump LABEL48 +LABEL31: + getwindowmode + iconst 1 + if_icmpne LABEL35 + jump LABEL48 +LABEL35: + iconst 1 + iconst 0 + iconst 2 + iconst 0 + iconst 10616890 + if_setposition + iconst -1 + iconst 0 + iconst 0 + iconst 0 + iconst 10617391 + if_setposition + jump LABEL60 +LABEL48: + iconst 0 + iconst 0 + iconst 0 + iconst 0 + iconst 10616890 + if_setposition + iconst 0 + iconst 0 + iconst 2 + iconst 0 + iconst 10617391 + if_setposition +LABEL60: + iconst 10616870 + cc_deleteall + iconst 10616888 + cc_deleteall + iconst 0 + istore 1 + clientclock + get_varc_int 223 + if_icmplt LABEL70 + jump LABEL82 +LABEL70: + invoke 900 + iconst 1129 + if_icmpne LABEL74 + jump LABEL82 +LABEL74: + iconst 1 + istore 1 + iconst 2155 + get_varc_int 223 + sconst "i" + iconst 10616870 + if_setontimer + jump LABEL86 +LABEL82: + iconst -1 + sconst "" + iconst 10616870 + if_setontimer +LABEL86: + invoke 921 + iconst 0 + if_icmpeq LABEL90 + jump LABEL156 +LABEL90: + iconst 1 + iconst 10616870 + if_setnoclickthrough + iload 1 + iconst 0 + if_icmpeq LABEL97 + jump LABEL135 +LABEL97: + iconst 10616870 + iconst 5 + iconst 0 + cc_create + iconst 0 + iconst 0 + iconst 1 + iconst 1 + cc_setsize + iconst 0 + iconst 0 + iconst 1 + iconst 1 + cc_setposition + iconst 1017 + cc_setgraphic + iconst 0 + cc_settiling + iconst 0 + cc_settrans + iconst 10616888 + iconst 3 + iconst 0 + cc_create + iconst 0 + iconst 1 + iconst 1 + iconst 0 + cc_setsize + iconst 0 + iconst 15 + iconst 1 + iconst 2 + cc_setposition + iconst 8418912 + cc_setcolour + iconst 1 + cc_setfill +LABEL135: + iconst 10617391 + iconst 792 + iconst 789 + iconst 790 + iconst 791 + iconst 773 + iconst 788 + iconst 0 + invoke 838 + invoke 2373 + iconst 1 + if_icmpeq LABEL148 + jump LABEL152 +LABEL148: + iconst 255 + iconst 10616835 + if_settrans + jump LABEL155 +LABEL152: + iconst 0 + iconst 10616835 + if_settrans +LABEL155: + return +LABEL156: + iconst 16384 + iconst 25 + div + istore 2 + iconst 16384 + istore 3 + get_varbit 2570 + iconst 1 + if_icmpeq LABEL166 + jump LABEL170 +LABEL166: + iconst 1 + iconst 10616870 + if_setnoclickthrough + jump LABEL176 +LABEL170: + iconst 0 + iconst 10616870 + if_setnoclickthrough + iconst 1 + iconst 10616870 + 2006 +LABEL176: + iconst 0 + istore 4 + iload 1 + iconst 0 + if_icmpeq LABEL182 + jump LABEL332 +LABEL182: + invoke 1972 + iconst 0 + if_icmpeq LABEL186 + jump LABEL266 +LABEL186: + iload 4 + iconst 20 + if_icmplt LABEL190 + jump LABEL265 +LABEL190: + iconst 10616870 + iconst 3 + iload 4 + cc_create + iconst 0 + iload 3 + iconst 1 + iconst 2 + cc_setsize + iconst 0 + iconst 0 + iconst 1 + iconst 2 + cc_setposition + iconst 0 + cc_setcolour + iconst 1 + cc_setfill + iconst 254 + cc_settrans + iconst 10616888 + iconst 3 + iload 4 + iconst 2 + multiply + cc_create + iconst 10616888 + iconst 3 + iload 4 + iconst 2 + multiply + iconst 1 + add + cc_create 1 + iload 3 + iconst 1 + iconst 2 + iconst 0 + cc_setsize + iload 3 + iconst 1 + iconst 2 + iconst 0 + cc_setsize 1 + iconst 0 + iconst 0 + iconst 0 + iconst 0 + cc_setposition + iconst 0 + iconst 15 + iconst 0 + iconst 2 + cc_setposition 1 + iconst 16777215 + cc_setcolour + iconst 16777215 + cc_setcolour 1 + iconst 1 + cc_setfill + iconst 1 + cc_setfill 1 + iconst 251 + cc_settrans + iconst 250 + cc_settrans 1 + iload 4 + iconst 1 + add + iload 3 + iload 2 + sub + istore 3 + istore 4 + jump LABEL186 +LABEL265: + sconst "chatboxBackgroundBuilt" + runelite_callback + jump LABEL332 +LABEL266: + iconst 10616870 + iconst 3 + iload 4 + cc_create + iconst 0 + iload 3 + iconst 1 + iconst 2 + cc_setsize + iconst 0 + iconst 0 + iconst 1 + iconst 2 + cc_setposition + iconst 0 + cc_setcolour + iconst 1 + cc_setfill + iconst 225 + cc_settrans + iconst 10616888 + iconst 3 + iload 4 + iconst 2 + multiply + cc_create + iconst 10616888 + iconst 3 + iload 4 + iconst 2 + multiply + iconst 1 + add + cc_create 1 + iload 3 + iconst 1 + iconst 2 + iconst 0 + cc_setsize + iload 3 + iconst 1 + iconst 2 + iconst 0 + cc_setsize 1 + iconst 0 + iconst 0 + iconst 0 + iconst 0 + cc_setposition + iconst 0 + iconst 15 + iconst 0 + iconst 2 + cc_setposition 1 + iconst 16777215 + cc_setcolour + iconst 16777215 + cc_setcolour 1 + iconst 1 + cc_setfill + iconst 1 + cc_setfill 1 + iconst 200 + cc_settrans + iconst 130 + cc_settrans 1 +LABEL332: + iconst 10617391 + iconst 1190 + iconst 1187 + iconst 1188 + iconst 1189 + iconst 1185 + iconst 1186 + iconst 1 + invoke 838 + iload 0 + iconst 1 + if_icmpeq LABEL345 + jump LABEL349 +LABEL345: + iconst 255 + iconst 10616835 + if_settrans + jump LABEL380 +LABEL349: + invoke 1972 + iconst 0 + if_icmpeq LABEL353 + jump LABEL357 +LABEL353: + iconst 155 + iconst 10616835 + if_settrans + jump LABEL380 +LABEL357: + iconst 255 + iconst 10616835 + if_settrans + iconst 10616834 + iconst 3 + iconst 0 + cc_create + iconst 0 + iconst 0 + iconst 1 + iconst 1 + cc_setsize + iconst 0 + iconst 0 + iconst 1 + iconst 1 + cc_setposition + iconst 0 + cc_setcolour + iconst 1 + cc_setfill + iconst 225 + cc_settrans +LABEL380: + return