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 net.runelite.api.Client;
|
||||
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.WidgetInfo;
|
||||
import net.runelite.client.RuneLiteProperties;
|
||||
@@ -155,6 +155,7 @@ public class RuneLitePlusPlugin extends Plugin
|
||||
private RuneLitePlusKeyListener keyListener = new RuneLitePlusKeyListener();
|
||||
private int entered = -1;
|
||||
private int enterIdx;
|
||||
private boolean expectInput;
|
||||
|
||||
@Override
|
||||
protected void startUp() throws Exception
|
||||
@@ -170,6 +171,7 @@ public class RuneLitePlusPlugin extends Plugin
|
||||
|
||||
entered = -1;
|
||||
enterIdx = 0;
|
||||
expectInput = false;
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
@@ -202,8 +204,9 @@ public class RuneLitePlusPlugin extends Plugin
|
||||
|
||||
else if (!config.keyboardPin())
|
||||
{
|
||||
entered = -1;
|
||||
entered = 0;
|
||||
enterIdx = 0;
|
||||
expectInput = false;
|
||||
keyManager.unregisterKeyListener(keyListener);
|
||||
}
|
||||
}
|
||||
@@ -211,33 +214,41 @@ public class RuneLitePlusPlugin extends Plugin
|
||||
@Override
|
||||
protected void shutDown() throws Exception
|
||||
{
|
||||
entered = -1;
|
||||
entered = 0;
|
||||
enterIdx = 0;
|
||||
expectInput = false;
|
||||
keyManager.unregisterKeyListener(keyListener);
|
||||
}
|
||||
|
||||
@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)
|
||||
{
|
||||
// log.debug("Bank opened, removing key listener");
|
||||
keyManager.unregisterKeyListener(keyListener);
|
||||
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;
|
||||
}
|
||||
// This'll be anywhere from -1 to 3
|
||||
// 0 = first number, 1 second, etc
|
||||
// Anything other than 0123 means the bankpin interface closes
|
||||
int enterIdx = intStack[intStackSize - 1];
|
||||
|
||||
// log.debug("Registering key listener");
|
||||
keyManager.registerKeyListener(keyListener);
|
||||
if (enterIdx < 0 || enterIdx > 3)
|
||||
{
|
||||
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)
|
||||
@@ -245,37 +256,39 @@ public class RuneLitePlusPlugin extends Plugin
|
||||
if (client.getWidget(WidgetID.BANK_PIN_GROUP_ID, 0) == null
|
||||
|| !client.getWidget(WidgetInfo.BANK_PIN_TOP_LEFT_TEXT).getText().equals("Bank of Gielinor"))
|
||||
{
|
||||
// log.debug("Key was pressed, but widget wasn't open");
|
||||
entered = -1;
|
||||
entered = 0;
|
||||
enterIdx = 0;
|
||||
expectInput = false;
|
||||
keyManager.unregisterKeyListener(keyListener);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!expectInput)
|
||||
{
|
||||
return;
|
||||
}
|
||||
log.debug(c + " " + enterIdx + " " + entered);
|
||||
|
||||
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;
|
||||
enterIdx++;
|
||||
}
|
||||
else if (enterIdx == 1)
|
||||
else if (oldEnterIdx == 1)
|
||||
{
|
||||
entered += num * 100;
|
||||
enterIdx++;
|
||||
}
|
||||
else if (enterIdx == 2)
|
||||
else if (oldEnterIdx == 2)
|
||||
{
|
||||
entered += num * 10;
|
||||
enterIdx++;
|
||||
}
|
||||
else if (enterIdx == 3)
|
||||
{
|
||||
entered = -1;
|
||||
enterIdx = 0;
|
||||
keyManager.unregisterKeyListener(keyListener);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
.int_var_count 22
|
||||
.string_var_count 0
|
||||
iload 0
|
||||
sconst "bankpin"
|
||||
runelite_callback
|
||||
iconst 3
|
||||
if_icmpeq LABEL4
|
||||
jump LABEL20
|
||||
|
||||
Reference in New Issue
Block a user