runelite-client: Call scripts with the correct number of arguments

This commit is contained in:
Max Weber
2019-08-09 08:06:59 -06:00
parent 4cec794a29
commit 56f7d09c92
6 changed files with 23 additions and 51 deletions

View File

@@ -73,14 +73,6 @@ public final class ScriptID
@ScriptArguments(string = 1) @ScriptArguments(string = 1)
public static final int CHAT_TEXT_INPUT_REBUILD = 222; public static final int CHAT_TEXT_INPUT_REBUILD = 222;
/**
* Layouts the bank widgets
*
* Takes 13 widget ids of various parts of the bank interface
*/
@ScriptArguments(integer = 17)
public static final int BANK_LAYOUT = 277;
/** /**
* Closes the chatbox input * Closes the chatbox input
* <ul> * <ul>
@@ -89,14 +81,17 @@ public final class ScriptID
* </ul> * </ul>
*/ */
@ScriptArguments(integer = 2) @ScriptArguments(integer = 2)
public static final int RESET_CHATBOX_INPUT = 299; public static final int MESSAGE_LAYER_CLOSE = 299;
/** /**
* Readies the chatbox panel for things like the chatbox input * Readies the chatbox panel for things like the chatbox input
* Inverse of RESET_CHATBOX_INPUT * Inverse of MESSAGE_LAYER_CLOSE
* <ul>
* <li> int (InputType) message layer type we are changing to </li>
* </ul>
*/ */
@ScriptArguments(integer = 1) @ScriptArguments(integer = 1)
public static final int CLEAR_CHATBOX_PANEL = 677; public static final int MESSAGE_LAYER_OPEN = 677;
/** /**
* Builds the chatbox input widget * Builds the chatbox input widget

View File

@@ -42,6 +42,10 @@ public enum VarClientInt
*/ */
TOOLTIP_VISIBLE(2), TOOLTIP_VISIBLE(2),
/**
* Current message layer mode
* @see net.runelite.api.vars.InputType
*/
INPUT_TYPE(5), INPUT_TYPE(5),
MEMBERSHIP_STATUS(103), MEMBERSHIP_STATUS(103),

View File

@@ -89,7 +89,7 @@ public class ChatboxPanelManager
private void unsafeCloseInput() private void unsafeCloseInput()
{ {
client.runScript( client.runScript(
ScriptID.RESET_CHATBOX_INPUT, ScriptID.MESSAGE_LAYER_CLOSE,
0, 0,
1 1
); );
@@ -101,7 +101,7 @@ public class ChatboxPanelManager
private void unsafeOpenInput(ChatboxInput input) private void unsafeOpenInput(ChatboxInput input)
{ {
client.runScript(ScriptID.CLEAR_CHATBOX_PANEL); client.runScript(ScriptID.MESSAGE_LAYER_OPEN, 0);
eventBus.register(input); eventBus.register(input);
if (input instanceof KeyListener) if (input instanceof KeyListener)

View File

@@ -37,20 +37,6 @@ import net.runelite.client.callback.ClientThread;
public class BankSearch public class BankSearch
{ {
// Widget indexes for searching
private static final int INNER_CONTAINER_IDX = 2;
private static final int SETTINGS_IDX = 4;
private static final int ITEM_CONTAINER_IDX = 7;
private static final int SCROLLBAR_IDX = 8;
private static final int BOTTOM_BAR_IDX = 9;
private static final int SEARCH_BUTTON_BACKGROUND_IDX = 15;
private static final int TITLE_BAR_IDX = 16;
private static final int ITEM_COUNT_IDX = 17;
private static final int TAB_BAR_IDX = 18;
private static final int INCINERATOR_IDX = 19;
private static final int INCINERATOR_CONFIRM_IDX = 20;
private static final int HIDDEN_WIDGET_IDX = 21;
private final Client client; private final Client client;
private final ClientThread clientThread; private final ClientThread clientThread;
@@ -64,51 +50,38 @@ public class BankSearch
this.clientThread = clientThread; this.clientThread = clientThread;
} }
public void search(InputType inputType, String search, Boolean closeInput) public void search(InputType inputType, String search, boolean closeInput)
{ {
clientThread.invoke(() -> clientThread.invoke(() ->
{ {
Widget bankContainer = client.getWidget(WidgetInfo.BANK_CONTAINER); Widget bankContainer = client.getWidget(WidgetInfo.BANK_ITEM_CONTAINER);
if (bankContainer == null || bankContainer.isHidden()) if (bankContainer == null || bankContainer.isHidden())
{ {
return; return;
} }
Object[] widgetIds = bankContainer.getOnLoadListener(); Object[] scriptArgs = bankContainer.getOnInvTransmitListener();
// In case the widget ids array is incorrect, do not proceed if (scriptArgs == null)
if (widgetIds == null || widgetIds.length < 21)
{ {
return; return;
} }
// This ensures that any chatbox input (e.g from search) will not remain visible when // This ensures that any chatbox input (e.g from search) will not remain visible when
// selecting/changing tab // selecting/changing tab
if (closeInput) if (closeInput)
{ {
client.runScript(ScriptID.RESET_CHATBOX_INPUT, 0, 0); client.runScript(ScriptID.MESSAGE_LAYER_CLOSE, 0, 0);
} }
client.setVar(VarClientInt.INPUT_TYPE, inputType.getType()); client.setVar(VarClientInt.INPUT_TYPE, inputType.getType());
client.setVar(VarClientStr.INPUT_TEXT, search); client.setVar(VarClientStr.INPUT_TEXT, search);
client.runScript(ScriptID.BANK_LAYOUT, client.runScript(scriptArgs);
WidgetInfo.BANK_CONTAINER.getId(),
widgetIds[INNER_CONTAINER_IDX],
widgetIds[SETTINGS_IDX],
widgetIds[ITEM_CONTAINER_IDX],
widgetIds[SCROLLBAR_IDX],
widgetIds[BOTTOM_BAR_IDX],
widgetIds[TITLE_BAR_IDX],
widgetIds[ITEM_COUNT_IDX],
widgetIds[SEARCH_BUTTON_BACKGROUND_IDX],
widgetIds[TAB_BAR_IDX],
widgetIds[INCINERATOR_IDX],
widgetIds[INCINERATOR_CONFIRM_IDX],
widgetIds[HIDDEN_WIDGET_IDX]);
}); });
} }
public void reset(Boolean closeChat) public void reset(boolean closeChat)
{ {
search(InputType.NONE, "", closeChat); search(InputType.NONE, "", closeChat);
} }

View File

@@ -336,7 +336,7 @@ public class TabInterface
{ {
bankSearch.reset(true); bankSearch.reset(true);
clientThread.invokeLater(() -> client.runScript(ScriptID.RESET_CHATBOX_INPUT, 0, 0)); clientThread.invokeLater(() -> client.runScript(ScriptID.MESSAGE_LAYER_CLOSE, 0, 0));
} }
else else
{ {

View File

@@ -56,7 +56,7 @@ public class ChatboxPerformancePlugin extends Plugin
{ {
if (client.getGameState() == GameState.LOGGED_IN) if (client.getGameState() == GameState.LOGGED_IN)
{ {
clientThread.invokeLater(() -> client.runScript(ScriptID.RESET_CHATBOX_INPUT)); clientThread.invokeLater(() -> client.runScript(ScriptID.MESSAGE_LAYER_CLOSE, 0, 0));
} }
} }
@@ -65,7 +65,7 @@ public class ChatboxPerformancePlugin extends Plugin
{ {
if (client.getGameState() == GameState.LOGGED_IN) if (client.getGameState() == GameState.LOGGED_IN)
{ {
clientThread.invokeLater(() -> client.runScript(ScriptID.RESET_CHATBOX_INPUT)); clientThread.invokeLater(() -> client.runScript(ScriptID.MESSAGE_LAYER_CLOSE, 0, 0));
} }
} }