Use scripts for enabling and removing bankpin keylistener

This commit is contained in:
Lucas
2019-06-11 00:02:53 +02:00
parent eeab0d0650
commit 30c105a4cf
2 changed files with 50 additions and 35 deletions

View File

@@ -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);
} }
} }
} }

View File

@@ -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