Use scripts for enabling and removing bankpin keylistener
This commit is contained in:
@@ -32,7 +32,7 @@ import javax.inject.Inject;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
import net.runelite.api.events.ConfigChanged;
|
import net.runelite.api.events.ConfigChanged;
|
||||||
import net.runelite.api.events.WidgetLoaded;
|
import net.runelite.api.events.ScriptCallbackEvent;
|
||||||
import net.runelite.api.widgets.WidgetID;
|
import net.runelite.api.widgets.WidgetID;
|
||||||
import net.runelite.api.widgets.WidgetInfo;
|
import net.runelite.api.widgets.WidgetInfo;
|
||||||
import net.runelite.client.RuneLiteProperties;
|
import net.runelite.client.RuneLiteProperties;
|
||||||
@@ -155,6 +155,7 @@ public class RuneLitePlusPlugin extends Plugin
|
|||||||
private RuneLitePlusKeyListener keyListener = new RuneLitePlusKeyListener();
|
private RuneLitePlusKeyListener keyListener = new RuneLitePlusKeyListener();
|
||||||
private int entered = -1;
|
private int entered = -1;
|
||||||
private int enterIdx;
|
private int enterIdx;
|
||||||
|
private boolean expectInput;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void startUp() throws Exception
|
protected void startUp() throws Exception
|
||||||
@@ -170,6 +171,7 @@ public class RuneLitePlusPlugin extends Plugin
|
|||||||
|
|
||||||
entered = -1;
|
entered = -1;
|
||||||
enterIdx = 0;
|
enterIdx = 0;
|
||||||
|
expectInput = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
@@ -202,8 +204,9 @@ public class RuneLitePlusPlugin extends Plugin
|
|||||||
|
|
||||||
else if (!config.keyboardPin())
|
else if (!config.keyboardPin())
|
||||||
{
|
{
|
||||||
entered = -1;
|
entered = 0;
|
||||||
enterIdx = 0;
|
enterIdx = 0;
|
||||||
|
expectInput = false;
|
||||||
keyManager.unregisterKeyListener(keyListener);
|
keyManager.unregisterKeyListener(keyListener);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -211,33 +214,41 @@ public class RuneLitePlusPlugin extends Plugin
|
|||||||
@Override
|
@Override
|
||||||
protected void shutDown() throws Exception
|
protected void shutDown() throws Exception
|
||||||
{
|
{
|
||||||
entered = -1;
|
entered = 0;
|
||||||
enterIdx = 0;
|
enterIdx = 0;
|
||||||
|
expectInput = false;
|
||||||
keyManager.unregisterKeyListener(keyListener);
|
keyManager.unregisterKeyListener(keyListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void onWidgetLoaded(WidgetLoaded event)
|
private void onScriptCallbackEvent(ScriptCallbackEvent e)
|
||||||
{
|
{
|
||||||
if (!config.keyboardPin())
|
if (e.getEventName().equals("bankpin"))
|
||||||
{
|
{
|
||||||
return;
|
int[] intStack = client.getIntStack();
|
||||||
}
|
int intStackSize = client.getIntStackSize();
|
||||||
|
|
||||||
if (event.getGroupId() == WidgetID.BANK_GROUP_ID)
|
// This'll be anywhere from -1 to 3
|
||||||
{
|
// 0 = first number, 1 second, etc
|
||||||
// log.debug("Bank opened, removing key listener");
|
// Anything other than 0123 means the bankpin interface closes
|
||||||
keyManager.unregisterKeyListener(keyListener);
|
int enterIdx = intStack[intStackSize - 1];
|
||||||
return;
|
|
||||||
}
|
|
||||||
else if (event.getGroupId() != WidgetID.BANK_PIN_GROUP_ID)
|
|
||||||
//|| !Text.standardize(client.getWidget(WidgetInfo.BANK_PIN_TOP_LEFT_TEXT).getText()).equals("bank of gielinor"))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// log.debug("Registering key listener");
|
if (enterIdx < 0 || enterIdx > 3)
|
||||||
keyManager.registerKeyListener(keyListener);
|
{
|
||||||
|
keyManager.unregisterKeyListener(keyListener);
|
||||||
|
this.enterIdx = 0;
|
||||||
|
this.entered = 0;
|
||||||
|
expectInput = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (enterIdx == 0)
|
||||||
|
{
|
||||||
|
keyManager.registerKeyListener(keyListener);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.enterIdx = enterIdx;
|
||||||
|
expectInput = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleKey(char c)
|
private void handleKey(char c)
|
||||||
@@ -245,37 +256,39 @@ public class RuneLitePlusPlugin extends Plugin
|
|||||||
if (client.getWidget(WidgetID.BANK_PIN_GROUP_ID, 0) == null
|
if (client.getWidget(WidgetID.BANK_PIN_GROUP_ID, 0) == null
|
||||||
|| !client.getWidget(WidgetInfo.BANK_PIN_TOP_LEFT_TEXT).getText().equals("Bank of Gielinor"))
|
|| !client.getWidget(WidgetInfo.BANK_PIN_TOP_LEFT_TEXT).getText().equals("Bank of Gielinor"))
|
||||||
{
|
{
|
||||||
// log.debug("Key was pressed, but widget wasn't open");
|
entered = 0;
|
||||||
entered = -1;
|
|
||||||
enterIdx = 0;
|
enterIdx = 0;
|
||||||
|
expectInput = false;
|
||||||
keyManager.unregisterKeyListener(keyListener);
|
keyManager.unregisterKeyListener(keyListener);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!expectInput)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
log.debug(c + " " + enterIdx + " " + entered);
|
||||||
|
|
||||||
int num = Character.getNumericValue(c);
|
int num = Character.getNumericValue(c);
|
||||||
|
|
||||||
client.runScript(685, num, enterIdx, entered, 13959181, 13959183, 13959184, 13959186, 13959188, 13959190, 13959192, 13959194, 13959196, 13959198, 13959200, 13959202, 13959171, 13959172, 13959173, 13959174, 13959178);
|
// We gotta copy this cause enteridx changes while the script is executing
|
||||||
|
int oldEnterIdx = enterIdx;
|
||||||
|
|
||||||
if (enterIdx == 0)
|
// Script 685 will call 653, which in turn will set expectInput to true
|
||||||
|
expectInput = false;
|
||||||
|
client.runScript(685, num, enterIdx, entered, 13959181, 13959183, 13959184, 13959186, 13959188, 13959190, 13959192, 13959194, 13959196, 13959198, 13959200, 13959202, 13959171, 13959172, 13959173, 13959174, 13959178);
|
||||||
|
|
||||||
|
if (oldEnterIdx == 0)
|
||||||
{
|
{
|
||||||
entered = num * 1000;
|
entered = num * 1000;
|
||||||
enterIdx++;
|
|
||||||
}
|
}
|
||||||
else if (enterIdx == 1)
|
else if (oldEnterIdx == 1)
|
||||||
{
|
{
|
||||||
entered += num * 100;
|
entered += num * 100;
|
||||||
enterIdx++;
|
|
||||||
}
|
}
|
||||||
else if (enterIdx == 2)
|
else if (oldEnterIdx == 2)
|
||||||
{
|
{
|
||||||
entered += num * 10;
|
entered += num * 10;
|
||||||
enterIdx++;
|
|
||||||
}
|
|
||||||
else if (enterIdx == 3)
|
|
||||||
{
|
|
||||||
entered = -1;
|
|
||||||
enterIdx = 0;
|
|
||||||
keyManager.unregisterKeyListener(keyListener);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
.int_var_count 22
|
.int_var_count 22
|
||||||
.string_var_count 0
|
.string_var_count 0
|
||||||
iload 0
|
iload 0
|
||||||
|
sconst "bankpin"
|
||||||
|
runelite_callback
|
||||||
iconst 3
|
iconst 3
|
||||||
if_icmpeq LABEL4
|
if_icmpeq LABEL4
|
||||||
jump LABEL20
|
jump LABEL20
|
||||||
|
|||||||
Reference in New Issue
Block a user