Allow get/setVarbitValue to operate on arbitrary varp sets
This commit is contained in:
@@ -173,6 +173,7 @@ public interface Client extends GameEngine
|
||||
|
||||
int[][] getXteaKeys();
|
||||
|
||||
@VisibleForDevtools
|
||||
int[] getVarps();
|
||||
|
||||
@VisibleForDevtools
|
||||
@@ -193,10 +194,10 @@ public interface Client extends GameEngine
|
||||
void setSetting(Varbits varbit, int value);
|
||||
|
||||
@VisibleForDevtools
|
||||
int getVarbitValue(int varbit);
|
||||
int getVarbitValue(int[] varps, int varbitId);
|
||||
|
||||
@VisibleForDevtools
|
||||
void setVarbitValue(int varbit, int value);
|
||||
void setVarbitValue(int[] varps, int varbit, int value);
|
||||
|
||||
HashTable getWidgetFlags();
|
||||
|
||||
|
||||
@@ -174,7 +174,7 @@ public class DevToolsPlugin extends Plugin
|
||||
case "getvar":
|
||||
{
|
||||
int varbit = Integer.parseInt(args[0]);
|
||||
int value = client.getVarbitValue(varbit);
|
||||
int value = client.getVarbitValue(client.getVarps(), varbit);
|
||||
client.addChatMessage(ChatMessageType.SERVER, "", "Varbit " + varbit + ": " + value, null);
|
||||
break;
|
||||
}
|
||||
@@ -182,7 +182,7 @@ public class DevToolsPlugin extends Plugin
|
||||
{
|
||||
int varbit = Integer.parseInt(args[0]);
|
||||
int value = Integer.parseInt(args[1]);
|
||||
client.setVarbitValue(varbit, value);
|
||||
client.setVarbitValue(client.getVarps(), varbit, value);
|
||||
client.addChatMessage(ChatMessageType.SERVER, "", "Set varbit " + varbit + " to " + value, null);
|
||||
eventBus.post(new VarbitChanged()); // fake event
|
||||
break;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user