Merge pull request #3075 from Abextm/var-inspector

Var inspector
This commit is contained in:
Adam
2018-05-21 19:49:21 -04:00
committed by GitHub
9 changed files with 493 additions and 129 deletions

View File

@@ -0,0 +1,27 @@
package net.runelite.mixins;
import net.runelite.api.events.VarClientIntChanged;
import net.runelite.api.events.VarClientStrChanged;
import net.runelite.api.mixins.FieldHook;
import net.runelite.api.mixins.Inject;
import net.runelite.api.mixins.Mixin;
import net.runelite.client.callback.Hooks;
import net.runelite.rs.api.RSVarcs;
@Mixin(RSVarcs.class)
public abstract class RSVarcsMixin implements RSVarcs
{
@FieldHook("varCInts")
@Inject
public void onVarCIntChanged(int idx)
{
Hooks.eventBus.post(new VarClientIntChanged(idx));
}
@FieldHook("varCStrings")
@Inject
public void onVarCStrChanged(int idx)
{
Hooks.eventBus.post(new VarClientStrChanged(idx));
}
}

View File

@@ -57,7 +57,7 @@ public abstract class VarbitMixin implements RSClient
public int getVar(Varbits varbit)
{
int varbitId = varbit.getId();
return getVarbitValue(varbitId);
return getVarbitValue(getVarps(), varbitId);
}
@Inject
@@ -65,12 +65,12 @@ public abstract class VarbitMixin implements RSClient
public void setSetting(Varbits varbit, int value)
{
int varbitId = varbit.getId();
setVarbitValue(varbitId, value);
setVarbitValue(getVarps(), varbitId, value);
}
@Inject
@Override
public int getVarbitValue(int varbitId)
public int getVarbitValue(int[] varps, int varbitId)
{
RSVarbit v = varbitCache.getIfPresent(varbitId);
if (v == null)
@@ -81,7 +81,11 @@ public abstract class VarbitMixin implements RSClient
varbitCache.put(varbitId, v);
}
int[] varps = getVarps();
if (v.getIndex() == 0 && v.getLeastSignificantBit() == 0 && v.getMostSignificantBit() == 0)
{
throw new IndexOutOfBoundsException("Varbit " + varbitId + " does not exist");
}
int value = varps[v.getIndex()];
int lsb = v.getLeastSignificantBit();
int msb = v.getMostSignificantBit();
@@ -91,7 +95,7 @@ public abstract class VarbitMixin implements RSClient
@Inject
@Override
public void setVarbitValue(int varbitId, int value)
public void setVarbitValue(int[] varps, int varbitId, int value)
{
RSVarbit v = varbitCache.getIfPresent(varbitId);
if (v == null)
@@ -102,7 +106,6 @@ public abstract class VarbitMixin implements RSClient
varbitCache.put(varbitId, v);
}
int[] varps = getVarps();
int lsb = v.getLeastSignificantBit();
int msb = v.getMostSignificantBit();
int mask = (1 << ((msb - lsb) + 1)) - 1;
@@ -113,13 +116,27 @@ public abstract class VarbitMixin implements RSClient
@Override
public int getVar(VarClientInt varClientInt)
{
return getVarcs().getIntVarcs()[varClientInt.getIndex()];
return getIntVarcs()[varClientInt.getIndex()];
}
@Inject
@Override
public String getVar(VarClientStr varClientStr)
{
return getVarcs().getStrVarcs()[varClientStr.getIndex()];
return getStrVarcs()[varClientStr.getIndex()];
}
@Inject
@Override
public int[] getIntVarcs()
{
return getVarcs().getIntVarcs();
}
@Inject
@Override
public String[] getStrVarcs()
{
return getVarcs().getStrVarcs();
}
}