wasd plugin: use clientscript to determine what input to block

This commit is contained in:
trimbe
2018-08-17 22:18:51 -04:00
committed by Adam
parent 1fb5365e7c
commit 1f82fe4c8d
3 changed files with 23 additions and 142 deletions

View File

@@ -55,22 +55,6 @@ class WASDCameraListener extends MouseListener implements KeyListener
@Override @Override
public void keyTyped(KeyEvent e) public void keyTyped(KeyEvent e)
{ {
// allow if not typing in chatbox, or typing mode is enabled
if (client.getGameState() != GameState.LOGGED_IN
|| !plugin.chatboxFocused()
|| plugin.isTyping())
{
return;
}
// otherwise allow typing if a digit and this is a dialog
if (Character.isDigit(e.getKeyChar()) && plugin.chatboxDialog())
{
return;
}
// otherwise consume
e.consume();
} }
@Override @Override
@@ -107,35 +91,6 @@ class WASDCameraListener extends MouseListener implements KeyListener
{ {
switch (e.getKeyCode()) switch (e.getKeyCode())
{ {
case KeyEvent.VK_0:
case KeyEvent.VK_1:
case KeyEvent.VK_2:
case KeyEvent.VK_3:
case KeyEvent.VK_4:
case KeyEvent.VK_5:
case KeyEvent.VK_6:
case KeyEvent.VK_7:
case KeyEvent.VK_8:
case KeyEvent.VK_9:
case KeyEvent.VK_NUMPAD0:
case KeyEvent.VK_NUMPAD1:
case KeyEvent.VK_NUMPAD2:
case KeyEvent.VK_NUMPAD3:
case KeyEvent.VK_NUMPAD4:
case KeyEvent.VK_NUMPAD5:
case KeyEvent.VK_NUMPAD6:
case KeyEvent.VK_NUMPAD7:
case KeyEvent.VK_NUMPAD8:
case KeyEvent.VK_NUMPAD9:
case KeyEvent.VK_SPACE:
// numbers normally are consumed, unless a dialog box is open.
// most dialogs in the chatbox use the same chatbox input handler
// as normal chat
if (!plugin.chatboxDialog())
{
e.consume();
}
break;
case KeyEvent.VK_ENTER: case KeyEvent.VK_ENTER:
case KeyEvent.VK_SLASH: case KeyEvent.VK_SLASH:
// refocus chatbox // refocus chatbox
@@ -145,32 +100,6 @@ class WASDCameraListener extends MouseListener implements KeyListener
plugin.unlockChat(); plugin.unlockChat();
}); });
break; break;
case KeyEvent.VK_F1:
case KeyEvent.VK_F2:
case KeyEvent.VK_F3:
case KeyEvent.VK_F4:
case KeyEvent.VK_F5:
case KeyEvent.VK_F6:
case KeyEvent.VK_F7:
case KeyEvent.VK_F8:
case KeyEvent.VK_F9:
case KeyEvent.VK_F10:
case KeyEvent.VK_F11:
case KeyEvent.VK_F12:
case KeyEvent.VK_UP:
case KeyEvent.VK_DOWN:
case KeyEvent.VK_LEFT:
case KeyEvent.VK_RIGHT:
case KeyEvent.VK_SHIFT:
case KeyEvent.VK_ESCAPE:
case KeyEvent.VK_CONTROL:
case KeyEvent.VK_ALT:
case KeyEvent.VK_TAB:
break;
default:
e.consume();
break;
} }
} }
} }
@@ -225,64 +154,6 @@ class WASDCameraListener extends MouseListener implements KeyListener
{ {
e.setKeyCode(KeyEvent.VK_RIGHT); e.setKeyCode(KeyEvent.VK_RIGHT);
} }
else
{
switch (e.getKeyCode())
{
case KeyEvent.VK_0:
case KeyEvent.VK_1:
case KeyEvent.VK_2:
case KeyEvent.VK_3:
case KeyEvent.VK_4:
case KeyEvent.VK_5:
case KeyEvent.VK_6:
case KeyEvent.VK_7:
case KeyEvent.VK_8:
case KeyEvent.VK_9:
case KeyEvent.VK_NUMPAD0:
case KeyEvent.VK_NUMPAD1:
case KeyEvent.VK_NUMPAD2:
case KeyEvent.VK_NUMPAD3:
case KeyEvent.VK_NUMPAD4:
case KeyEvent.VK_NUMPAD5:
case KeyEvent.VK_NUMPAD6:
case KeyEvent.VK_NUMPAD7:
case KeyEvent.VK_NUMPAD8:
case KeyEvent.VK_NUMPAD9:
case KeyEvent.VK_SPACE:
if (!plugin.chatboxDialog())
{
e.consume();
}
break;
case KeyEvent.VK_SLASH:
case KeyEvent.VK_F1:
case KeyEvent.VK_F2:
case KeyEvent.VK_F3:
case KeyEvent.VK_F4:
case KeyEvent.VK_F5:
case KeyEvent.VK_F6:
case KeyEvent.VK_F7:
case KeyEvent.VK_F8:
case KeyEvent.VK_F9:
case KeyEvent.VK_F10:
case KeyEvent.VK_F11:
case KeyEvent.VK_F12:
case KeyEvent.VK_UP:
case KeyEvent.VK_DOWN:
case KeyEvent.VK_LEFT:
case KeyEvent.VK_RIGHT:
case KeyEvent.VK_SHIFT:
case KeyEvent.VK_ESCAPE:
case KeyEvent.VK_CONTROL:
case KeyEvent.VK_ALT:
case KeyEvent.VK_TAB:
break;
default:
e.consume();
break;
}
}
} }
else else
{ {

View File

@@ -54,6 +54,7 @@ public class WASDCameraPlugin extends Plugin
{ {
private static final String PRESS_ENTER_TO_CHAT = "Press Enter to Chat..."; private static final String PRESS_ENTER_TO_CHAT = "Press Enter to Chat...";
private static final String SCRIPT_EVENT_SET_CHATBOX_INPUT = "setChatboxInput"; private static final String SCRIPT_EVENT_SET_CHATBOX_INPUT = "setChatboxInput";
private static final String SCRIPT_EVENT_BLOCK_CHAT_INPUT = "blockChatInput";
@Inject @Inject
private Client client; private Client client;
@@ -125,25 +126,29 @@ public class WASDCameraPlugin extends Plugin
return true; return true;
} }
boolean chatboxDialog()
{
Widget chatboxInput = client.getWidget(WidgetInfo.CHATBOX_INPUT);
return chatboxInput == null || chatboxInput.isHidden();
}
@Subscribe @Subscribe
public void onScriptEvent(ScriptCallbackEvent scriptCallbackEvent) public void onScriptEvent(ScriptCallbackEvent scriptCallbackEvent)
{ {
if (scriptCallbackEvent.getEventName().equals(SCRIPT_EVENT_SET_CHATBOX_INPUT)) switch (scriptCallbackEvent.getEventName())
{ {
Widget chatboxInput = client.getWidget(WidgetInfo.CHATBOX_INPUT); case SCRIPT_EVENT_SET_CHATBOX_INPUT:
if (chatboxInput != null) Widget chatboxInput = client.getWidget(WidgetInfo.CHATBOX_INPUT);
{ if (chatboxInput != null)
if (chatboxFocused() && !typing)
{ {
chatboxInput.setText(PRESS_ENTER_TO_CHAT); if (chatboxFocused() && !typing)
{
chatboxInput.setText(PRESS_ENTER_TO_CHAT);
}
} }
} break;
case SCRIPT_EVENT_BLOCK_CHAT_INPUT:
if (!typing)
{
int[] intStack = client.getIntStack();
int intStackSize = client.getIntStackSize();
intStack[intStackSize - 1] = 1;
}
break;
} }
} }

View File

@@ -317,6 +317,11 @@ LABEL244:
iload 0 iload 0
iload 1 iload 1
invoke 74 invoke 74
load_int 1 ; check if we're ignoring input
load_int 0 ;
load_string "blockChatInput" ;
runelite_callback ;
if_icmpeq LABEL250 ; don't add to input varcstr
put_varc_string 1 put_varc_string 1
LABEL250: LABEL250:
invoke 223 invoke 223