wasd plugin: check chatbox input widget visibility to determine if a dialog is open
Fix using numbers to navigate dialog, and fix using wasd with dialog open
This commit is contained in:
@@ -51,7 +51,22 @@ class WASDCameraListener extends MouseListener implements KeyListener
|
|||||||
@Override
|
@Override
|
||||||
public void keyTyped(KeyEvent e)
|
public void keyTyped(KeyEvent e)
|
||||||
{
|
{
|
||||||
handleKey(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
|
||||||
@@ -84,6 +99,35 @@ 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
|
||||||
@@ -147,11 +191,6 @@ class WASDCameraListener extends MouseListener implements KeyListener
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void keyReleased(KeyEvent e)
|
public void keyReleased(KeyEvent e)
|
||||||
{
|
|
||||||
handleKey(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void handleKey(KeyEvent e)
|
|
||||||
{
|
{
|
||||||
if (client.getGameState() != GameState.LOGGED_IN || !plugin.chatboxFocused())
|
if (client.getGameState() != GameState.LOGGED_IN || !plugin.chatboxFocused())
|
||||||
{
|
{
|
||||||
@@ -180,6 +219,32 @@ 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:
|
||||||
|
if (!plugin.chatboxDialog())
|
||||||
|
{
|
||||||
|
e.consume();
|
||||||
|
}
|
||||||
|
break;
|
||||||
case KeyEvent.VK_SLASH:
|
case KeyEvent.VK_SLASH:
|
||||||
case KeyEvent.VK_F1:
|
case KeyEvent.VK_F1:
|
||||||
case KeyEvent.VK_F2:
|
case KeyEvent.VK_F2:
|
||||||
|
|||||||
@@ -108,21 +108,13 @@ public class WASDCameraPlugin extends Plugin
|
|||||||
boolean chatboxFocused()
|
boolean chatboxFocused()
|
||||||
{
|
{
|
||||||
Widget chatboxParent = client.getWidget(WidgetInfo.CHATBOX_PARENT);
|
Widget chatboxParent = client.getWidget(WidgetInfo.CHATBOX_PARENT);
|
||||||
if (chatboxParent == null || chatboxParent.getOnKeyListener() == null)
|
return chatboxParent != null && chatboxParent.getOnKeyListener() != null;
|
||||||
{
|
}
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// chat dialogs use the same key listener as chat
|
boolean chatboxDialog()
|
||||||
if (client.getWidget(WidgetInfo.DIALOG_NPC) != null
|
{
|
||||||
|| client.getWidget(WidgetInfo.DIALOG_SPRITE) != null
|
Widget chatboxInput = client.getWidget(WidgetInfo.CHATBOX_INPUT);
|
||||||
|| client.getWidget(WidgetInfo.DIALOG_OPTION) != null
|
return chatboxInput == null || chatboxInput.isHidden();
|
||||||
|| client.getWidget(WidgetInfo.DIALOG_PLAYER) != null)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
|
|||||||
Reference in New Issue
Block a user