360 lines
15 KiB
Java
Executable File
360 lines
15 KiB
Java
Executable File
package rs;
|
|
|
|
import rs.animable.Model;
|
|
import rs.config.EntityDef;
|
|
import rs.config.ItemDef;
|
|
import rs.graphics.Sprite;
|
|
import rs.graphics.TextDrawingArea;
|
|
import rs.stream.Stream;
|
|
import rs.stream.StreamLoader;
|
|
// Jad home page: http://www.kpdus.com/jad.html
|
|
// Decompiler options: packimports(3)
|
|
|
|
public final class RSInterface {
|
|
|
|
public void swapInventoryItems(int i, int j) {
|
|
int k = inv[i];
|
|
inv[i] = inv[j];
|
|
inv[j] = k;
|
|
k = invStackSizes[i];
|
|
invStackSizes[i] = invStackSizes[j];
|
|
invStackSizes[j] = k;
|
|
}
|
|
|
|
public static void unpack(StreamLoader streamLoader, TextDrawingArea textDrawingAreas[], StreamLoader streamLoader_1) {
|
|
aMRUNodes_238 = new MRUNodes(50000);
|
|
Stream stream = new Stream(streamLoader.getDataForName("data"));
|
|
int i = -1;
|
|
int j = stream.readUnsignedWord();
|
|
interfaceCache = new RSInterface[j];
|
|
while (stream.currentOffset < stream.buffer.length) {
|
|
int k = stream.readUnsignedWord();
|
|
if (k == 65535) {
|
|
i = stream.readUnsignedWord();
|
|
k = stream.readUnsignedWord();
|
|
}
|
|
RSInterface rsInterface = interfaceCache[k] = new RSInterface();
|
|
rsInterface.id = k;
|
|
rsInterface.parentID = i;
|
|
rsInterface.type = stream.readUnsignedByte();
|
|
rsInterface.atActionType = stream.readUnsignedByte();
|
|
rsInterface.anInt214 = stream.readUnsignedWord();
|
|
rsInterface.width = stream.readUnsignedWord();
|
|
rsInterface.height = stream.readUnsignedWord();
|
|
rsInterface.aByte254 = (byte) stream.readUnsignedByte();
|
|
rsInterface.anInt230 = stream.readUnsignedByte();
|
|
if (rsInterface.anInt230 != 0)
|
|
rsInterface.anInt230 = (rsInterface.anInt230 - 1 << 8) + stream.readUnsignedByte();
|
|
else
|
|
rsInterface.anInt230 = -1;
|
|
int i1 = stream.readUnsignedByte();
|
|
if (i1 > 0) {
|
|
rsInterface.anIntArray245 = new int[i1];
|
|
rsInterface.anIntArray212 = new int[i1];
|
|
for (int j1 = 0; j1 < i1; j1++) {
|
|
rsInterface.anIntArray245[j1] = stream.readUnsignedByte();
|
|
rsInterface.anIntArray212[j1] = stream.readUnsignedWord();
|
|
}
|
|
|
|
}
|
|
int k1 = stream.readUnsignedByte();
|
|
if (k1 > 0) {
|
|
rsInterface.scripts = new int[k1][];
|
|
for (int l1 = 0; l1 < k1; l1++) {
|
|
int i3 = stream.readUnsignedWord();
|
|
rsInterface.scripts[l1] = new int[i3];
|
|
for (int l4 = 0; l4 < i3; l4++)
|
|
rsInterface.scripts[l1][l4] = stream.readUnsignedWord();
|
|
|
|
}
|
|
|
|
}
|
|
if (rsInterface.type == 0) {
|
|
rsInterface.scrollMax = stream.readUnsignedWord();
|
|
rsInterface.aBoolean266 = stream.readUnsignedByte() == 1;
|
|
int i2 = stream.readUnsignedWord();
|
|
rsInterface.children = new int[i2];
|
|
rsInterface.childX = new int[i2];
|
|
rsInterface.childY = new int[i2];
|
|
for (int j3 = 0; j3 < i2; j3++) {
|
|
rsInterface.children[j3] = stream.readUnsignedWord();
|
|
rsInterface.childX[j3] = stream.readSignedWord();
|
|
rsInterface.childY[j3] = stream.readSignedWord();
|
|
}
|
|
|
|
}
|
|
if (rsInterface.type == 1) {
|
|
stream.readUnsignedWord();
|
|
stream.readUnsignedByte();
|
|
}
|
|
if (rsInterface.type == 2) {
|
|
rsInterface.inv = new int[rsInterface.width * rsInterface.height];
|
|
rsInterface.invStackSizes = new int[rsInterface.width * rsInterface.height];
|
|
rsInterface.aBoolean259 = stream.readUnsignedByte() == 1;
|
|
rsInterface.isInventoryInterface = stream.readUnsignedByte() == 1;
|
|
rsInterface.usableItemInterface = stream.readUnsignedByte() == 1;
|
|
rsInterface.aBoolean235 = stream.readUnsignedByte() == 1;
|
|
rsInterface.invSpritePadX = stream.readUnsignedByte();
|
|
rsInterface.invSpritePadY = stream.readUnsignedByte();
|
|
rsInterface.spritesX = new int[20];
|
|
rsInterface.spritesY = new int[20];
|
|
rsInterface.sprites = new Sprite[20];
|
|
for (int j2 = 0; j2 < 20; j2++) {
|
|
int k3 = stream.readUnsignedByte();
|
|
if (k3 == 1) {
|
|
rsInterface.spritesX[j2] = stream.readSignedWord();
|
|
rsInterface.spritesY[j2] = stream.readSignedWord();
|
|
String s1 = stream.readString();
|
|
if (streamLoader_1 != null && s1.length() > 0) {
|
|
int i5 = s1.lastIndexOf(",");
|
|
rsInterface.sprites[j2] = method207(Integer.parseInt(s1.substring(i5 + 1)), streamLoader_1, s1.substring(0, i5));
|
|
}
|
|
}
|
|
}
|
|
|
|
rsInterface.actions = new String[5];
|
|
for (int l3 = 0; l3 < 5; l3++) {
|
|
rsInterface.actions[l3] = stream.readString();
|
|
if (rsInterface.actions[l3].length() == 0)
|
|
rsInterface.actions[l3] = null;
|
|
}
|
|
|
|
}
|
|
if (rsInterface.type == 3)
|
|
rsInterface.aBoolean227 = stream.readUnsignedByte() == 1;
|
|
if (rsInterface.type == 4 || rsInterface.type == 1) {
|
|
rsInterface.aBoolean223 = stream.readUnsignedByte() == 1;
|
|
int k2 = stream.readUnsignedByte();
|
|
if (textDrawingAreas != null)
|
|
rsInterface.textDrawingAreas = textDrawingAreas[k2];
|
|
rsInterface.aBoolean268 = stream.readUnsignedByte() == 1;
|
|
}
|
|
if (rsInterface.type == 4) {
|
|
rsInterface.message = stream.readString();
|
|
rsInterface.aString228 = stream.readString();
|
|
}
|
|
if (rsInterface.type == 1 || rsInterface.type == 3 || rsInterface.type == 4)
|
|
rsInterface.textColor = stream.readDWord();
|
|
if (rsInterface.type == 3 || rsInterface.type == 4) {
|
|
rsInterface.anInt219 = stream.readDWord();
|
|
rsInterface.anInt216 = stream.readDWord();
|
|
rsInterface.anInt239 = stream.readDWord();
|
|
}
|
|
if (rsInterface.type == 5) {
|
|
String s = stream.readString();
|
|
if (streamLoader_1 != null && s.length() > 0) {
|
|
int i4 = s.lastIndexOf(",");
|
|
rsInterface.sprite1 = method207(Integer.parseInt(s.substring(i4 + 1)), streamLoader_1, s.substring(0, i4));
|
|
}
|
|
s = stream.readString();
|
|
if (streamLoader_1 != null && s.length() > 0) {
|
|
int j4 = s.lastIndexOf(",");
|
|
rsInterface.sprite2 = method207(Integer.parseInt(s.substring(j4 + 1)), streamLoader_1, s.substring(0, j4));
|
|
}
|
|
}
|
|
if (rsInterface.type == 6) {
|
|
int l = stream.readUnsignedByte();
|
|
if (l != 0) {
|
|
rsInterface.anInt233 = 1;
|
|
rsInterface.mediaID = (l - 1 << 8) + stream.readUnsignedByte();
|
|
}
|
|
l = stream.readUnsignedByte();
|
|
if (l != 0) {
|
|
rsInterface.anInt255 = 1;
|
|
rsInterface.anInt256 = (l - 1 << 8) + stream.readUnsignedByte();
|
|
}
|
|
l = stream.readUnsignedByte();
|
|
if (l != 0)
|
|
rsInterface.anInt257 = (l - 1 << 8) + stream.readUnsignedByte();
|
|
else
|
|
rsInterface.anInt257 = -1;
|
|
l = stream.readUnsignedByte();
|
|
if (l != 0)
|
|
rsInterface.anInt258 = (l - 1 << 8) + stream.readUnsignedByte();
|
|
else
|
|
rsInterface.anInt258 = -1;
|
|
rsInterface.anInt269 = stream.readUnsignedWord();
|
|
rsInterface.anInt270 = stream.readUnsignedWord();
|
|
rsInterface.anInt271 = stream.readUnsignedWord();
|
|
}
|
|
if (rsInterface.type == 7) {
|
|
rsInterface.inv = new int[rsInterface.width * rsInterface.height];
|
|
rsInterface.invStackSizes = new int[rsInterface.width * rsInterface.height];
|
|
rsInterface.aBoolean223 = stream.readUnsignedByte() == 1;
|
|
int l2 = stream.readUnsignedByte();
|
|
if (textDrawingAreas != null)
|
|
rsInterface.textDrawingAreas = textDrawingAreas[l2];
|
|
rsInterface.aBoolean268 = stream.readUnsignedByte() == 1;
|
|
rsInterface.textColor = stream.readDWord();
|
|
rsInterface.invSpritePadX = stream.readSignedWord();
|
|
rsInterface.invSpritePadY = stream.readSignedWord();
|
|
rsInterface.isInventoryInterface = stream.readUnsignedByte() == 1;
|
|
rsInterface.actions = new String[5];
|
|
for (int k4 = 0; k4 < 5; k4++) {
|
|
rsInterface.actions[k4] = stream.readString();
|
|
if (rsInterface.actions[k4].length() == 0)
|
|
rsInterface.actions[k4] = null;
|
|
}
|
|
|
|
}
|
|
if (rsInterface.atActionType == 2 || rsInterface.type == 2) {
|
|
rsInterface.selectedActionName = stream.readString();
|
|
rsInterface.spellName = stream.readString();
|
|
rsInterface.spellUsableOn = stream.readUnsignedWord();
|
|
}
|
|
|
|
if (rsInterface.type == 8)
|
|
rsInterface.message = stream.readString();
|
|
|
|
if (rsInterface.atActionType == 1 || rsInterface.atActionType == 4 || rsInterface.atActionType == 5 || rsInterface.atActionType == 6) {
|
|
rsInterface.tooltip = stream.readString();
|
|
if (rsInterface.tooltip.length() == 0) {
|
|
if (rsInterface.atActionType == 1)
|
|
rsInterface.tooltip = "Ok";
|
|
if (rsInterface.atActionType == 4)
|
|
rsInterface.tooltip = "Select";
|
|
if (rsInterface.atActionType == 5)
|
|
rsInterface.tooltip = "Select";
|
|
if (rsInterface.atActionType == 6)
|
|
rsInterface.tooltip = "Continue";
|
|
}
|
|
}
|
|
|
|
//aryan Bot.notifyInterface(rsInterface);
|
|
}
|
|
aMRUNodes_238 = null;
|
|
}
|
|
|
|
private Model method206(int i, int j) {
|
|
Model model = (Model) aMRUNodes_264.insertFromCache((i << 16) + j);
|
|
if (model != null)
|
|
return model;
|
|
if (i == 1)
|
|
model = Model.method462(j);
|
|
if (i == 2)
|
|
model = EntityDef.forID(j).method160();
|
|
if (i == 3)
|
|
model = client.myPlayer.method453();
|
|
if (i == 4)
|
|
model = ItemDef.forID(j).method202(50);
|
|
if (i == 5)
|
|
model = null;
|
|
if (model != null)
|
|
aMRUNodes_264.removeFromCache(model, (i << 16) + j);
|
|
return model;
|
|
}
|
|
|
|
private static Sprite method207(int i, StreamLoader streamLoader, String s) {
|
|
long l = (TextClass.method585(s) << 8) + (long) i;
|
|
Sprite sprite = (Sprite) aMRUNodes_238.insertFromCache(l);
|
|
if (sprite != null)
|
|
return sprite;
|
|
try {
|
|
sprite = new Sprite(streamLoader, s, i);
|
|
aMRUNodes_238.removeFromCache(sprite, l);
|
|
}
|
|
catch (Exception _ex) {
|
|
return null;
|
|
}
|
|
return sprite;
|
|
}
|
|
|
|
public static void method208(boolean flag, Model model) {
|
|
int i = 0;//was parameter
|
|
int j = 5;//was parameter
|
|
if (flag)
|
|
return;
|
|
aMRUNodes_264.unlinkAll();
|
|
if (model != null && j != 4)
|
|
aMRUNodes_264.removeFromCache(model, (j << 16) + i);
|
|
}
|
|
|
|
public Model method209(int j, int k, boolean flag) {
|
|
Model model;
|
|
if (flag)
|
|
model = method206(anInt255, anInt256);
|
|
else
|
|
model = method206(anInt233, mediaID);
|
|
if (model == null)
|
|
return null;
|
|
if (k == -1 && j == -1 && model.anIntArray1640 == null)
|
|
return model;
|
|
Model model_1 = new Model(true, Class36.method532(k) & Class36.method532(j), false, model);
|
|
if (k != -1 || j != -1)
|
|
model_1.method469();
|
|
if (k != -1)
|
|
model_1.method470(k);
|
|
if (j != -1)
|
|
model_1.method470(j);
|
|
model_1.method479(64, 768, -50, -10, -50, true);
|
|
return model_1;
|
|
}
|
|
|
|
public RSInterface() {
|
|
}
|
|
|
|
public Sprite sprite1;
|
|
public int anInt208;
|
|
public Sprite sprites[];
|
|
public static RSInterface interfaceCache[];
|
|
public int anIntArray212[];
|
|
public int anInt214;
|
|
public int spritesX[];
|
|
public int anInt216;
|
|
public int atActionType;
|
|
public String spellName;
|
|
public int anInt219;
|
|
public int width;
|
|
public String tooltip;
|
|
public String selectedActionName;
|
|
public boolean aBoolean223;
|
|
public int scrollPosition;
|
|
public String actions[];
|
|
public int scripts[][];
|
|
public boolean aBoolean227;
|
|
public String aString228;
|
|
public int anInt230;
|
|
public int invSpritePadX;
|
|
public int textColor;
|
|
public int anInt233;
|
|
public int mediaID;
|
|
public boolean aBoolean235;
|
|
public int parentID;
|
|
public int spellUsableOn;
|
|
private static MRUNodes aMRUNodes_238;
|
|
public int anInt239;
|
|
public int children[];
|
|
public int childX[];
|
|
public boolean usableItemInterface;
|
|
public TextDrawingArea textDrawingAreas;
|
|
public int invSpritePadY;
|
|
public int anIntArray245[];
|
|
public int anInt246;
|
|
public int spritesY[];
|
|
public String message;
|
|
public boolean isInventoryInterface;
|
|
public int id;
|
|
public int invStackSizes[];
|
|
public int inv[];
|
|
public byte aByte254;
|
|
private int anInt255;
|
|
private int anInt256;
|
|
public int anInt257;
|
|
public int anInt258;
|
|
public boolean aBoolean259;
|
|
public Sprite sprite2;
|
|
public int scrollMax;
|
|
public int type;
|
|
public int anInt263;
|
|
private static final MRUNodes aMRUNodes_264 = new MRUNodes(30);
|
|
public int anInt265;
|
|
public boolean aBoolean266;
|
|
public int height;
|
|
public boolean aBoolean268;
|
|
public int anInt269;
|
|
public int anInt270;
|
|
public int anInt271;
|
|
public int childY[];
|
|
|
|
}
|