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();
|
int[][] getXteaKeys();
|
||||||
|
|
||||||
|
@VisibleForDevtools
|
||||||
int[] getVarps();
|
int[] getVarps();
|
||||||
|
|
||||||
@VisibleForDevtools
|
@VisibleForDevtools
|
||||||
@@ -193,10 +194,10 @@ public interface Client extends GameEngine
|
|||||||
void setSetting(Varbits varbit, int value);
|
void setSetting(Varbits varbit, int value);
|
||||||
|
|
||||||
@VisibleForDevtools
|
@VisibleForDevtools
|
||||||
int getVarbitValue(int varbit);
|
int getVarbitValue(int[] varps, int varbitId);
|
||||||
|
|
||||||
@VisibleForDevtools
|
@VisibleForDevtools
|
||||||
void setVarbitValue(int varbit, int value);
|
void setVarbitValue(int[] varps, int varbit, int value);
|
||||||
|
|
||||||
HashTable getWidgetFlags();
|
HashTable getWidgetFlags();
|
||||||
|
|
||||||
|
|||||||
@@ -174,7 +174,7 @@ public class DevToolsPlugin extends Plugin
|
|||||||
case "getvar":
|
case "getvar":
|
||||||
{
|
{
|
||||||
int varbit = Integer.parseInt(args[0]);
|
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);
|
client.addChatMessage(ChatMessageType.SERVER, "", "Varbit " + varbit + ": " + value, null);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -182,7 +182,7 @@ public class DevToolsPlugin extends Plugin
|
|||||||
{
|
{
|
||||||
int varbit = Integer.parseInt(args[0]);
|
int varbit = Integer.parseInt(args[0]);
|
||||||
int value = Integer.parseInt(args[1]);
|
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);
|
client.addChatMessage(ChatMessageType.SERVER, "", "Set varbit " + varbit + " to " + value, null);
|
||||||
eventBus.post(new VarbitChanged()); // fake event
|
eventBus.post(new VarbitChanged()); // fake event
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ public abstract class VarbitMixin implements RSClient
|
|||||||
public int getVar(Varbits varbit)
|
public int getVar(Varbits varbit)
|
||||||
{
|
{
|
||||||
int varbitId = varbit.getId();
|
int varbitId = varbit.getId();
|
||||||
return getVarbitValue(varbitId);
|
return getVarbitValue(getVarps(), varbitId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@@ -65,12 +65,12 @@ public abstract class VarbitMixin implements RSClient
|
|||||||
public void setSetting(Varbits varbit, int value)
|
public void setSetting(Varbits varbit, int value)
|
||||||
{
|
{
|
||||||
int varbitId = varbit.getId();
|
int varbitId = varbit.getId();
|
||||||
setVarbitValue(varbitId, value);
|
setVarbitValue(getVarps(), varbitId, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@Override
|
@Override
|
||||||
public int getVarbitValue(int varbitId)
|
public int getVarbitValue(int[] varps, int varbitId)
|
||||||
{
|
{
|
||||||
RSVarbit v = varbitCache.getIfPresent(varbitId);
|
RSVarbit v = varbitCache.getIfPresent(varbitId);
|
||||||
if (v == null)
|
if (v == null)
|
||||||
@@ -81,7 +81,11 @@ public abstract class VarbitMixin implements RSClient
|
|||||||
varbitCache.put(varbitId, v);
|
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 value = varps[v.getIndex()];
|
||||||
int lsb = v.getLeastSignificantBit();
|
int lsb = v.getLeastSignificantBit();
|
||||||
int msb = v.getMostSignificantBit();
|
int msb = v.getMostSignificantBit();
|
||||||
@@ -91,7 +95,7 @@ public abstract class VarbitMixin implements RSClient
|
|||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@Override
|
@Override
|
||||||
public void setVarbitValue(int varbitId, int value)
|
public void setVarbitValue(int[] varps, int varbitId, int value)
|
||||||
{
|
{
|
||||||
RSVarbit v = varbitCache.getIfPresent(varbitId);
|
RSVarbit v = varbitCache.getIfPresent(varbitId);
|
||||||
if (v == null)
|
if (v == null)
|
||||||
@@ -102,7 +106,6 @@ public abstract class VarbitMixin implements RSClient
|
|||||||
varbitCache.put(varbitId, v);
|
varbitCache.put(varbitId, v);
|
||||||
}
|
}
|
||||||
|
|
||||||
int[] varps = getVarps();
|
|
||||||
int lsb = v.getLeastSignificantBit();
|
int lsb = v.getLeastSignificantBit();
|
||||||
int msb = v.getMostSignificantBit();
|
int msb = v.getMostSignificantBit();
|
||||||
int mask = (1 << ((msb - lsb) + 1)) - 1;
|
int mask = (1 << ((msb - lsb) + 1)) - 1;
|
||||||
|
|||||||
Reference in New Issue
Block a user