Files
runelite/runescape-client/src/main/java/Player.java
Lucwousin 596689a4f7 rs-client: Cleanup (#1087)
* rs-client: name SpriteBuffer

* rs-client: (re)name spritebuffer methods

* rs-client/deob: Add missed @Export's, make updatemappings fix this next time

* rs-client: run intellij redundant else inspection

* rs-client: invert some script interpreter if's

* deob: checkstyle fixes

* rs-client: SpriteBuffer_loadSprite -> SpriteBuffer_bufferFile
2019-07-23 19:43:31 +02:00

606 lines
14 KiB
Java

import java.applet.Applet;
import java.net.URL;
import net.runelite.mapping.Export;
import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
import netscape.javascript.JSObject;
@ObfuscatedName("bd")
@Implements("Player")
public final class Player extends Actor {
@ObfuscatedName("q")
@ObfuscatedSignature(
signature = "Ljv;"
)
@Export("username")
Username username;
@ObfuscatedName("w")
@ObfuscatedSignature(
signature = "Lhh;"
)
@Export("appearance")
PlayerAppearance appearance;
@ObfuscatedName("e")
@ObfuscatedGetter(
intValue = -1793171209
)
@Export("headIconPk")
int headIconPk;
@ObfuscatedName("p")
@ObfuscatedGetter(
intValue = -116528069
)
@Export("headIconPrayer")
int headIconPrayer;
@ObfuscatedName("l")
@Export("actions")
String[] actions;
@ObfuscatedName("b")
@ObfuscatedGetter(
intValue = -1476185215
)
@Export("combatLevel")
int combatLevel;
@ObfuscatedName("i")
@ObfuscatedGetter(
intValue = 1080230181
)
@Export("skillLevel")
int skillLevel;
@ObfuscatedName("c")
@ObfuscatedGetter(
intValue = -2135092057
)
@Export("tileHeight")
int tileHeight;
@ObfuscatedName("f")
@ObfuscatedGetter(
intValue = 1201001853
)
@Export("animationCycleStart")
int animationCycleStart;
@ObfuscatedName("m")
@ObfuscatedGetter(
intValue = -638825891
)
@Export("animationCycleEnd")
int animationCycleEnd;
@ObfuscatedName("u")
@ObfuscatedGetter(
intValue = -1264352661
)
int field633;
@ObfuscatedName("x")
@ObfuscatedGetter(
intValue = -1920260179
)
@Export("tileHeight2")
int tileHeight2;
@ObfuscatedName("r")
@ObfuscatedGetter(
intValue = -458476465
)
int field620;
@ObfuscatedName("v")
@ObfuscatedSignature(
signature = "Ldm;"
)
@Export("model0")
Model model0;
@ObfuscatedName("y")
@ObfuscatedGetter(
intValue = 122892619
)
int field627;
@ObfuscatedName("g")
@ObfuscatedGetter(
intValue = 496730799
)
int field625;
@ObfuscatedName("a")
@ObfuscatedGetter(
intValue = -1488894543
)
int field612;
@ObfuscatedName("j")
@ObfuscatedGetter(
intValue = -87750643
)
int field630;
@ObfuscatedName("t")
@Export("isUnanimated")
boolean isUnanimated;
@ObfuscatedName("h")
@ObfuscatedGetter(
intValue = 1859866113
)
@Export("team")
int team;
@ObfuscatedName("o")
@Export("isHidden")
boolean isHidden;
@ObfuscatedName("n")
@ObfuscatedGetter(
intValue = -1801151479
)
@Export("plane")
int plane;
@ObfuscatedName("d")
@ObfuscatedGetter(
intValue = -1548494187
)
@Export("index")
int index;
@ObfuscatedName("s")
@ObfuscatedSignature(
signature = "Ljy;"
)
@Export("isFriendTriBool")
TriBool isFriendTriBool;
@ObfuscatedName("z")
@ObfuscatedSignature(
signature = "Ljy;"
)
@Export("isInClanChat")
TriBool isInClanChat;
@ObfuscatedName("al")
boolean field638;
@ObfuscatedName("av")
@ObfuscatedGetter(
intValue = 811764289
)
@Export("tileX")
int tileX;
@ObfuscatedName("as")
@ObfuscatedGetter(
intValue = -1120087893
)
@Export("tileY")
int tileY;
Player() {
this.headIconPk = -1;
this.headIconPrayer = -1;
this.actions = new String[3];
for (int var1 = 0; var1 < 3; ++var1) {
this.actions[var1] = "";
}
this.combatLevel = 0;
this.skillLevel = 0;
this.animationCycleStart = 0;
this.animationCycleEnd = 0;
this.isUnanimated = false;
this.team = 0;
this.isHidden = false;
this.isFriendTriBool = TriBool.TriBool_unknown;
this.isInClanChat = TriBool.TriBool_unknown;
this.field638 = false;
}
@ObfuscatedName("q")
@ObfuscatedSignature(
signature = "(Lkf;I)V",
garbageValue = "-641392846"
)
@Export("read")
final void read(Buffer var1) {
var1.offset = 0;
int var2 = var1.readUnsignedByte();
this.headIconPk = var1.readByte();
this.headIconPrayer = var1.readByte();
int var3 = -1;
this.team = 0;
int[] var4 = new int[12];
int var6;
int var7;
for (int var5 = 0; var5 < 12; ++var5) {
var6 = var1.readUnsignedByte();
if (var6 == 0) {
var4[var5] = 0;
} else {
var7 = var1.readUnsignedByte();
var4[var5] = var7 + (var6 << 8);
if (var5 == 0 && var4[0] == 65535) {
var3 = var1.readUnsignedShort();
break;
}
if (var4[var5] >= 512) {
int var8 = WorldMapArea.getItemDefinition(var4[var5] - 512).team;
if (var8 != 0) {
this.team = var8;
}
}
}
}
int[] var9 = new int[5];
for (var6 = 0; var6 < 5; ++var6) {
var7 = var1.readUnsignedByte();
if (var7 < 0 || var7 >= class247.field3291[var6].length) {
var7 = 0;
}
var9[var6] = var7;
}
super.readySequence = var1.readUnsignedShort();
if (super.readySequence == 65535) {
super.readySequence = -1;
}
super.turnLeftSequence = var1.readUnsignedShort();
if (super.turnLeftSequence == 65535) {
super.turnLeftSequence = -1;
}
super.turnRightSequence = super.turnLeftSequence;
super.walkSequence = var1.readUnsignedShort();
if (super.walkSequence == 65535) {
super.walkSequence = -1;
}
super.walkBackSequence = var1.readUnsignedShort();
if (super.walkBackSequence == 65535) {
super.walkBackSequence = -1;
}
super.walkLeftSequence = var1.readUnsignedShort();
if (super.walkLeftSequence == 65535) {
super.walkLeftSequence = -1;
}
super.walkRightSequence = var1.readUnsignedShort();
if (super.walkRightSequence == 65535) {
super.walkRightSequence = -1;
}
super.runSequence = var1.readUnsignedShort();
if (super.runSequence == 65535) {
super.runSequence = -1;
}
this.username = new Username(var1.readStringCp1252NullTerminated(), class40.loginType);
this.clearIsFriend();
this.clearIsInClanChat();
if (this == Client.localPlayer) {
GrandExchangeOfferUnitPriceComparator.localPlayerName = this.username.getName();
}
this.combatLevel = var1.readUnsignedByte();
this.skillLevel = var1.readUnsignedShort();
this.isHidden = var1.readUnsignedByte() == 1;
if (Client.gameBuild == 0 && Client.staffModLevel >= 2) {
this.isHidden = false;
}
if (this.appearance == null) {
this.appearance = new PlayerAppearance();
}
this.appearance.update(var4, var9, var2 == 1, var3);
}
@ObfuscatedName("w")
@ObfuscatedSignature(
signature = "(I)Z",
garbageValue = "-1900430541"
)
@Export("isFriend")
boolean isFriend() {
if (this.isFriendTriBool == TriBool.TriBool_unknown) {
this.checkIsFriend();
}
return this.isFriendTriBool == TriBool.TriBool_true;
}
@ObfuscatedName("e")
@ObfuscatedSignature(
signature = "(B)V",
garbageValue = "-29"
)
@Export("clearIsFriend")
void clearIsFriend() {
this.isFriendTriBool = TriBool.TriBool_unknown;
}
@ObfuscatedName("p")
@ObfuscatedSignature(
signature = "(I)V",
garbageValue = "1998050438"
)
@Export("checkIsFriend")
void checkIsFriend() {
this.isFriendTriBool = ArchiveLoader.friendSystem.isFriendAndHasWorld(this.username) ? TriBool.TriBool_true : TriBool.TriBool_false;
}
@ObfuscatedName("k")
@ObfuscatedSignature(
signature = "(B)Z",
garbageValue = "12"
)
@Export("isClanMember")
boolean isClanMember() {
if (this.isInClanChat == TriBool.TriBool_unknown) {
this.updateIsInClanChat();
}
return this.isInClanChat == TriBool.TriBool_true;
}
@ObfuscatedName("l")
@ObfuscatedSignature(
signature = "(I)V",
garbageValue = "-2115191954"
)
@Export("clearIsInClanChat")
void clearIsInClanChat() {
this.isInClanChat = TriBool.TriBool_unknown;
}
@ObfuscatedName("b")
@ObfuscatedSignature(
signature = "(I)V",
garbageValue = "-1972244682"
)
@Export("updateIsInClanChat")
void updateIsInClanChat() {
this.isInClanChat = DevicePcmPlayerProvider.clanChat != null && DevicePcmPlayerProvider.clanChat.contains(this.username) ? TriBool.TriBool_true : TriBool.TriBool_false;
}
@ObfuscatedName("i")
@ObfuscatedSignature(
signature = "(I)I",
garbageValue = "-1116736107"
)
@Export("transformedSize")
int transformedSize() {
return this.appearance != null && this.appearance.npcTransformId != -1 ? GameShell.getNpcDefinition(this.appearance.npcTransformId).size : 1;
}
@ObfuscatedName("c")
@ObfuscatedSignature(
signature = "(I)Ldm;",
garbageValue = "759381421"
)
@Export("getModel")
protected final Model getModel() {
if (this.appearance == null) {
return null;
}
SequenceDefinition var1 = super.sequence != -1 && super.sequenceDelay == 0 ? GrandExchangeEvent.getSequenceDefinition(super.sequence) : null;
SequenceDefinition var2 = super.movementSequence != -1 && !this.isUnanimated && (super.movementSequence != super.readySequence || var1 == null) ? GrandExchangeEvent.getSequenceDefinition(super.movementSequence) : null;
Model var3 = this.appearance.getModel(var1, super.sequenceFrame, var2, super.movementFrame);
if (var3 == null) {
return null;
}
var3.calculateBoundsCylinder();
super.defaultHeight = var3.height;
Model var4;
Model[] var5;
if (!this.isUnanimated && super.spotAnimation != -1 && super.spotAnimationFrame != -1) {
var4 = MusicPatch.getSpotAnimationDefinition(super.spotAnimation).getModel(super.spotAnimationFrame);
if (var4 != null) {
var4.offsetBy(0, -super.heightOffset, 0);
var5 = new Model[]{var3, var4};
var3 = new Model(var5, 2);
}
}
if (!this.isUnanimated && this.model0 != null) {
if (Client.cycle >= this.animationCycleEnd) {
this.model0 = null;
}
if (Client.cycle >= this.animationCycleStart && Client.cycle < this.animationCycleEnd) {
var4 = this.model0;
var4.offsetBy(this.field633 * 4096 - super.x, this.tileHeight2 - this.tileHeight, this.field620 * 4096 - super.y);
if (super.orientation == 512) {
var4.rotateY90Ccw();
var4.rotateY90Ccw();
var4.rotateY90Ccw();
} else if (super.orientation == 1024) {
var4.rotateY90Ccw();
var4.rotateY90Ccw();
} else if (super.orientation == 1536) {
var4.rotateY90Ccw();
}
var5 = new Model[]{var3, var4};
var3 = new Model(var5, 2);
if (super.orientation == 512) {
var4.rotateY90Ccw();
} else if (super.orientation == 1024) {
var4.rotateY90Ccw();
var4.rotateY90Ccw();
} else if (super.orientation == 1536) {
var4.rotateY90Ccw();
var4.rotateY90Ccw();
var4.rotateY90Ccw();
}
var4.offsetBy(super.x - this.field633 * 4096, this.tileHeight - this.tileHeight2, super.y - this.field620 * 4096);
}
}
var3.isSingleTile = true;
return var3;
}
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "(IIBS)V",
garbageValue = "-30153"
)
final void method1189(int var1, int var2, byte var3) {
if (super.sequence != -1 && GrandExchangeEvent.getSequenceDefinition(super.sequence).field3532 == 1) {
super.sequence = -1;
}
super.field976 = -1;
if (var1 >= 0 && var1 < 104 && var2 >= 0 && var2 < 104) {
if (super.pathX[0] >= 0 && super.pathX[0] < 104 && super.pathY[0] >= 0 && super.pathY[0] < 104) {
if (var3 == 2) {
Widget.method4056(this, var1, var2, (byte)2);
}
this.method1191(var1, var2, var3);
} else {
this.resetPath(var1, var2);
}
} else {
this.resetPath(var1, var2);
}
}
@ObfuscatedName("x")
@ObfuscatedSignature(
signature = "(III)V",
garbageValue = "1369099765"
)
@Export("resetPath")
void resetPath(int var1, int var2) {
super.pathLength = 0;
super.field1008 = 0;
super.field1007 = 0;
super.pathX[0] = var1;
super.pathY[0] = var2;
int var3 = this.transformedSize();
super.x = super.pathX[0] * 128 + var3 * 64;
super.y = var3 * 64 + super.pathY[0] * 128;
}
@ObfuscatedName("r")
@ObfuscatedSignature(
signature = "(IIBB)V",
garbageValue = "1"
)
final void method1191(int var1, int var2, byte var3) {
if (super.pathLength < 9) {
++super.pathLength;
}
for (int var4 = super.pathLength; var4 > 0; --var4) {
super.pathX[var4] = super.pathX[var4 - 1];
super.pathY[var4] = super.pathY[var4 - 1];
super.pathTraversed[var4] = super.pathTraversed[var4 - 1];
}
super.pathX[0] = var1;
super.pathY[0] = var2;
super.pathTraversed[0] = var3;
}
@ObfuscatedName("v")
@ObfuscatedSignature(
signature = "(I)Z",
garbageValue = "-1461786701"
)
@Export("isVisible")
final boolean isVisible() {
return this.appearance != null;
}
@ObfuscatedName("p")
@ObfuscatedSignature(
signature = "(Ljava/lang/String;ILjava/lang/String;I)Z",
garbageValue = "1838105426"
)
static boolean method1226(String var0, int var1, String var2) {
if (var1 == 0) {
try {
if (!class51.field434.startsWith("win")) {
throw new Exception();
}
if (!var0.startsWith("http://") && !var0.startsWith("https://")) {
throw new Exception();
}
String var11 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?&=,.%+-_#:/*";
for (int var4 = 0; var4 < var0.length(); ++var4) {
if (var11.indexOf(var0.charAt(var4)) == -1) {
throw new Exception();
}
}
Runtime.getRuntime().exec("cmd /c start \"j\" \"" + var0 + "\"");
return true;
} catch (Throwable var5) {
return false;
}
}
if (var1 == 1) {
try {
Object var10 = class47.method806(class51.applet, var2, new Object[]{(new URL(class51.applet.getCodeBase(), var0)).toString()});
return var10 != null;
} catch (Throwable var6) {
return false;
}
}
if (var1 == 2) {
try {
class51.applet.getAppletContext().showDocument(new URL(class51.applet.getCodeBase(), var0), "_blank");
return true;
} catch (Exception var7) {
return false;
}
}
if (var1 == 3) {
try {
Applet var3 = class51.applet;
JSObject.getWindow(var3).call("loggedout", (Object[])null);
} catch (Throwable var9) {
}
try {
class51.applet.getAppletContext().showDocument(new URL(class51.applet.getCodeBase(), var0), "_top");
return true;
} catch (Exception var8) {
return false;
}
}
throw new IllegalArgumentException();
}
@ObfuscatedName("ff")
@ObfuscatedSignature(
signature = "(I)V",
garbageValue = "1715272698"
)
@Export("processOverheadText")
static final void processOverheadText() {
int[] var0 = Players.Players_indices;
int var1;
for (var1 = 0; var1 < Players.Players_count; ++var1) {
Player var2 = Client.players[var0[var1]];
if (var2 != null && var2.overheadTextCyclesRemaining > 0) {
--var2.overheadTextCyclesRemaining;
if (var2.overheadTextCyclesRemaining == 0) {
var2.overheadText = null;
}
}
}
for (var1 = 0; var1 < Client.npcCount; ++var1) {
int var4 = Client.npcIndices[var1];
NPC var3 = Client.npcs[var4];
if (var3 != null && var3.overheadTextCyclesRemaining > 0) {
--var3.overheadTextCyclesRemaining;
if (var3.overheadTextCyclesRemaining == 0) {
var3.overheadText = null;
}
}
}
}
}