549 lines
12 KiB
Java
549 lines
12 KiB
Java
import java.io.EOFException;
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
import java.io.OutputStream;
|
|
import java.net.Socket;
|
|
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;
|
|
|
|
@ObfuscatedName("fu")
|
|
@Implements("NetSocket")
|
|
public final class NetSocket extends AbstractSocket implements Runnable {
|
|
@ObfuscatedName("ly")
|
|
@ObfuscatedSignature(
|
|
signature = "Lho;"
|
|
)
|
|
@Export("mousedOverWidgetIf1")
|
|
static Widget mousedOverWidgetIf1;
|
|
@ObfuscatedName("z")
|
|
@Export("inputStream")
|
|
InputStream inputStream;
|
|
@ObfuscatedName("n")
|
|
@Export("outputStream")
|
|
OutputStream outputStream;
|
|
@ObfuscatedName("v")
|
|
@Export("socket")
|
|
Socket socket;
|
|
@ObfuscatedName("u")
|
|
@Export("isClosed")
|
|
boolean isClosed;
|
|
@ObfuscatedName("r")
|
|
@ObfuscatedSignature(
|
|
signature = "Lfm;"
|
|
)
|
|
@Export("taskHandler")
|
|
TaskHandler taskHandler;
|
|
@ObfuscatedName("p")
|
|
@ObfuscatedSignature(
|
|
signature = "Lfv;"
|
|
)
|
|
@Export("task")
|
|
Task task;
|
|
@ObfuscatedName("q")
|
|
@Export("outBuffer")
|
|
byte[] outBuffer;
|
|
@ObfuscatedName("m")
|
|
@ObfuscatedGetter(
|
|
intValue = -428981347
|
|
)
|
|
@Export("outLength")
|
|
int outLength;
|
|
@ObfuscatedName("y")
|
|
@ObfuscatedGetter(
|
|
intValue = 386347925
|
|
)
|
|
@Export("outOffset")
|
|
int outOffset;
|
|
@ObfuscatedName("i")
|
|
@Export("exceptionWriting")
|
|
boolean exceptionWriting;
|
|
@ObfuscatedName("c")
|
|
@ObfuscatedGetter(
|
|
intValue = -539294119
|
|
)
|
|
@Export("bufferLength")
|
|
final int bufferLength;
|
|
@ObfuscatedName("b")
|
|
@ObfuscatedGetter(
|
|
intValue = 312930257
|
|
)
|
|
@Export("maxPacketLength")
|
|
final int maxPacketLength;
|
|
|
|
@ObfuscatedSignature(
|
|
signature = "(Ljava/net/Socket;Lfm;I)V"
|
|
)
|
|
public NetSocket(Socket var1, TaskHandler var2, int var3) throws IOException {
|
|
this.isClosed = false;
|
|
this.outLength = 0;
|
|
this.outOffset = 0;
|
|
this.exceptionWriting = false;
|
|
this.taskHandler = var2;
|
|
this.socket = var1;
|
|
this.bufferLength = var3;
|
|
this.maxPacketLength = var3 - 100;
|
|
this.socket.setSoTimeout(30000);
|
|
this.socket.setTcpNoDelay(true);
|
|
this.socket.setReceiveBufferSize(65536);
|
|
this.socket.setSendBufferSize(65536);
|
|
this.inputStream = this.socket.getInputStream();
|
|
this.outputStream = this.socket.getOutputStream();
|
|
}
|
|
|
|
@ObfuscatedName("z")
|
|
@ObfuscatedSignature(
|
|
signature = "(B)V",
|
|
garbageValue = "-119"
|
|
)
|
|
@Export("close")
|
|
public void close() {
|
|
if (!this.isClosed) {
|
|
synchronized(this) {
|
|
this.isClosed = true;
|
|
this.notifyAll();
|
|
}
|
|
|
|
if (this.task != null) {
|
|
while (this.task.status == 0) {
|
|
try {
|
|
Thread.sleep(1L);
|
|
} catch (InterruptedException var4) {
|
|
}
|
|
}
|
|
|
|
if (this.task.status == 1) {
|
|
try {
|
|
((Thread)this.task.result).join();
|
|
} catch (InterruptedException var3) {
|
|
}
|
|
}
|
|
}
|
|
|
|
this.task = null;
|
|
}
|
|
}
|
|
|
|
@ObfuscatedName("n")
|
|
@ObfuscatedSignature(
|
|
signature = "(I)I",
|
|
garbageValue = "1784126558"
|
|
)
|
|
@Export("readUnsignedByte")
|
|
public int readUnsignedByte() throws IOException {
|
|
return this.isClosed ? 0 : this.inputStream.read();
|
|
}
|
|
|
|
@ObfuscatedName("v")
|
|
@ObfuscatedSignature(
|
|
signature = "(B)I",
|
|
garbageValue = "3"
|
|
)
|
|
@Export("available")
|
|
public int available() throws IOException {
|
|
return this.isClosed ? 0 : this.inputStream.available();
|
|
}
|
|
|
|
@ObfuscatedName("u")
|
|
@ObfuscatedSignature(
|
|
signature = "(II)Z",
|
|
garbageValue = "-336706705"
|
|
)
|
|
@Export("isAvailable")
|
|
public boolean isAvailable(int var1) throws IOException {
|
|
if (this.isClosed) {
|
|
return false;
|
|
} else {
|
|
return this.inputStream.available() >= var1;
|
|
}
|
|
}
|
|
|
|
@ObfuscatedName("r")
|
|
@ObfuscatedSignature(
|
|
signature = "([BIII)I",
|
|
garbageValue = "-2035668362"
|
|
)
|
|
@Export("read")
|
|
public int read(byte[] var1, int var2, int var3) throws IOException {
|
|
if (this.isClosed) {
|
|
return 0;
|
|
} else {
|
|
int var4;
|
|
int var5;
|
|
for (var4 = var3; var3 > 0; var3 -= var5) {
|
|
var5 = this.inputStream.read(var1, var2, var3);
|
|
if (var5 <= 0) {
|
|
throw new EOFException();
|
|
}
|
|
|
|
var2 += var5;
|
|
}
|
|
|
|
return var4;
|
|
}
|
|
}
|
|
|
|
@ObfuscatedName("p")
|
|
@ObfuscatedSignature(
|
|
signature = "([BIII)V",
|
|
garbageValue = "-2110504051"
|
|
)
|
|
@Export("write0")
|
|
void write0(byte[] var1, int var2, int var3) throws IOException {
|
|
if (!this.isClosed) {
|
|
if (this.exceptionWriting) {
|
|
this.exceptionWriting = false;
|
|
throw new IOException();
|
|
} else {
|
|
if (this.outBuffer == null) {
|
|
this.outBuffer = new byte[this.bufferLength];
|
|
}
|
|
|
|
synchronized(this) {
|
|
for (int var5 = 0; var5 < var3; ++var5) {
|
|
this.outBuffer[this.outOffset] = var1[var5 + var2];
|
|
this.outOffset = (this.outOffset + 1) % this.bufferLength;
|
|
if ((this.maxPacketLength + this.outLength) % this.bufferLength == this.outOffset) {
|
|
throw new IOException();
|
|
}
|
|
}
|
|
|
|
if (this.task == null) {
|
|
this.task = this.taskHandler.newThreadTask(this, 3);
|
|
}
|
|
|
|
this.notifyAll();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@ObfuscatedName("q")
|
|
@ObfuscatedSignature(
|
|
signature = "([BIIB)V",
|
|
garbageValue = "-68"
|
|
)
|
|
@Export("write")
|
|
public void write(byte[] var1, int var2, int var3) throws IOException {
|
|
this.write0(var1, var2, var3);
|
|
}
|
|
|
|
protected void finalize() {
|
|
this.close();
|
|
}
|
|
|
|
protected void aav() {
|
|
this.close();
|
|
}
|
|
|
|
protected void aao() {
|
|
this.close();
|
|
}
|
|
|
|
public void run() {
|
|
try {
|
|
while (true) {
|
|
label84: {
|
|
int var1;
|
|
int var2;
|
|
synchronized(this) {
|
|
if (this.outLength == this.outOffset) {
|
|
if (this.isClosed) {
|
|
break label84;
|
|
}
|
|
|
|
try {
|
|
this.wait();
|
|
} catch (InterruptedException var10) {
|
|
}
|
|
}
|
|
|
|
var2 = this.outLength;
|
|
if (this.outOffset >= this.outLength) {
|
|
var1 = this.outOffset - this.outLength;
|
|
} else {
|
|
var1 = this.bufferLength - this.outLength;
|
|
}
|
|
}
|
|
|
|
if (var1 <= 0) {
|
|
continue;
|
|
}
|
|
|
|
try {
|
|
this.outputStream.write(this.outBuffer, var2, var1);
|
|
} catch (IOException var9) {
|
|
this.exceptionWriting = true;
|
|
}
|
|
|
|
this.outLength = (var1 + this.outLength) % this.bufferLength;
|
|
|
|
try {
|
|
if (this.outOffset == this.outLength) {
|
|
this.outputStream.flush();
|
|
}
|
|
} catch (IOException var8) {
|
|
this.exceptionWriting = true;
|
|
}
|
|
continue;
|
|
}
|
|
|
|
try {
|
|
if (this.inputStream != null) {
|
|
this.inputStream.close();
|
|
}
|
|
|
|
if (this.outputStream != null) {
|
|
this.outputStream.close();
|
|
}
|
|
|
|
if (this.socket != null) {
|
|
this.socket.close();
|
|
}
|
|
} catch (IOException var7) {
|
|
}
|
|
|
|
this.outBuffer = null;
|
|
break;
|
|
}
|
|
} catch (Exception var12) {
|
|
class32.RunException_sendStackTrace((String)null, var12);
|
|
}
|
|
|
|
}
|
|
|
|
@ObfuscatedName("z")
|
|
@ObfuscatedSignature(
|
|
signature = "([Lga;II)Lga;",
|
|
garbageValue = "-846037107"
|
|
)
|
|
@Export("findEnumerated")
|
|
public static Enumerated findEnumerated(Enumerated[] var0, int var1) {
|
|
Enumerated[] var2 = var0;
|
|
|
|
for (int var3 = 0; var3 < var2.length; ++var3) {
|
|
Enumerated var4 = var2[var3];
|
|
if (var1 == var4.rsOrdinal()) {
|
|
return var4;
|
|
}
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
@ObfuscatedName("n")
|
|
@ObfuscatedSignature(
|
|
signature = "(Ljava/lang/CharSequence;B)Z",
|
|
garbageValue = "-100"
|
|
)
|
|
@Export("isNumber")
|
|
public static boolean isNumber(CharSequence var0) {
|
|
return MouseRecorder.method1209(var0, 10, true);
|
|
}
|
|
|
|
@ObfuscatedName("o")
|
|
@ObfuscatedSignature(
|
|
signature = "(Ljava/lang/String;I)Ljava/lang/String;",
|
|
garbageValue = "-175447114"
|
|
)
|
|
public static String method3467(String var0) {
|
|
int var1 = var0.length();
|
|
char[] var2 = new char[var1];
|
|
byte var3 = 2;
|
|
|
|
for (int var4 = 0; var4 < var1; ++var4) {
|
|
char var5 = var0.charAt(var4);
|
|
if (var3 == 0) {
|
|
var5 = Character.toLowerCase(var5);
|
|
} else if (var3 == 2 || Character.isUpperCase(var5)) {
|
|
var5 = UrlRequester.method3256(var5);
|
|
}
|
|
|
|
if (Character.isLetter(var5)) {
|
|
var3 = 0;
|
|
} else if (var5 != '.' && var5 != '?' && var5 != '!') {
|
|
if (Character.isSpaceChar(var5)) {
|
|
if (var3 != 2) {
|
|
var3 = 1;
|
|
}
|
|
} else {
|
|
var3 = 1;
|
|
}
|
|
} else {
|
|
var3 = 2;
|
|
}
|
|
|
|
var2[var4] = var5;
|
|
}
|
|
|
|
return new String(var2);
|
|
}
|
|
|
|
@ObfuscatedName("jp")
|
|
@ObfuscatedSignature(
|
|
signature = "(II)V",
|
|
garbageValue = "-1514465632"
|
|
)
|
|
static final void method3468(int var0) {
|
|
class325.method6167();
|
|
|
|
for (ObjectSound var1 = (ObjectSound)ObjectSound.objectSounds.last(); var1 != null; var1 = (ObjectSound)ObjectSound.objectSounds.previous()) {
|
|
if (var1.obj != null) {
|
|
var1.set();
|
|
}
|
|
}
|
|
|
|
int var4 = AbstractWorldMapData.method288(var0).type;
|
|
if (var4 != 0) {
|
|
int var2 = Varps.Varps_main[var0];
|
|
if (var4 == 1) {
|
|
if (var2 == 1) {
|
|
Rasterizer3D.Rasterizer3D_setBrightness(0.9D);
|
|
((TextureProvider)Rasterizer3D.Rasterizer3D_textureLoader).setBrightness(0.9D);
|
|
}
|
|
|
|
if (var2 == 2) {
|
|
Rasterizer3D.Rasterizer3D_setBrightness(0.8D);
|
|
((TextureProvider)Rasterizer3D.Rasterizer3D_textureLoader).setBrightness(0.8D);
|
|
}
|
|
|
|
if (var2 == 3) {
|
|
Rasterizer3D.Rasterizer3D_setBrightness(0.7D);
|
|
((TextureProvider)Rasterizer3D.Rasterizer3D_textureLoader).setBrightness(0.7D);
|
|
}
|
|
|
|
if (var2 == 4) {
|
|
Rasterizer3D.Rasterizer3D_setBrightness(0.6D);
|
|
((TextureProvider)Rasterizer3D.Rasterizer3D_textureLoader).setBrightness(0.6D);
|
|
}
|
|
|
|
ItemDefinition.ItemDefinition_cachedSprites.clear();
|
|
}
|
|
|
|
if (var4 == 3) {
|
|
short var3 = 0;
|
|
if (var2 == 0) {
|
|
var3 = 255;
|
|
}
|
|
|
|
if (var2 == 1) {
|
|
var3 = 192;
|
|
}
|
|
|
|
if (var2 == 2) {
|
|
var3 = 128;
|
|
}
|
|
|
|
if (var2 == 3) {
|
|
var3 = 64;
|
|
}
|
|
|
|
if (var2 == 4) {
|
|
var3 = 0;
|
|
}
|
|
|
|
if (var3 != Client.field761) {
|
|
if (Client.field761 == 0 && Client.field666 != -1) {
|
|
class83.method2064(class225.archive6, Client.field666, 0, var3, false);
|
|
Client.field759 = false;
|
|
} else if (var3 == 0) {
|
|
VertexNormal.method2956();
|
|
Client.field759 = false;
|
|
} else if (class197.field2386 != 0) {
|
|
TileItem.field1223 = var3;
|
|
} else {
|
|
class49.midiPcmStream.method3751(var3);
|
|
}
|
|
|
|
Client.field761 = var3;
|
|
}
|
|
}
|
|
|
|
if (var4 == 4) {
|
|
if (var2 == 0) {
|
|
Client.soundEffectVolume = 127;
|
|
}
|
|
|
|
if (var2 == 1) {
|
|
Client.soundEffectVolume = 96;
|
|
}
|
|
|
|
if (var2 == 2) {
|
|
Client.soundEffectVolume = 64;
|
|
}
|
|
|
|
if (var2 == 3) {
|
|
Client.soundEffectVolume = 32;
|
|
}
|
|
|
|
if (var2 == 4) {
|
|
Client.soundEffectVolume = 0;
|
|
}
|
|
}
|
|
|
|
if (var4 == 5) {
|
|
Client.leftClickOpensMenu = var2;
|
|
}
|
|
|
|
if (var4 == 6) {
|
|
Client.chatEffects = var2;
|
|
}
|
|
|
|
if (var4 == 9) {
|
|
Client.field873 = var2;
|
|
}
|
|
|
|
if (var4 == 10) {
|
|
if (var2 == 0) {
|
|
Client.field868 = 127;
|
|
}
|
|
|
|
if (var2 == 1) {
|
|
Client.field868 = 96;
|
|
}
|
|
|
|
if (var2 == 2) {
|
|
Client.field868 = 64;
|
|
}
|
|
|
|
if (var2 == 3) {
|
|
Client.field868 = 32;
|
|
}
|
|
|
|
if (var2 == 4) {
|
|
Client.field868 = 0;
|
|
}
|
|
}
|
|
|
|
if (var4 == 17) {
|
|
Client.followerIndex = var2 & 65535;
|
|
}
|
|
|
|
if (var4 == 18) {
|
|
Client.playerAttackOption = (AttackOption)findEnumerated(FloorUnderlayDefinition.method4383(), var2);
|
|
if (Client.playerAttackOption == null) {
|
|
Client.playerAttackOption = AttackOption.AttackOption_dependsOnCombatLevels;
|
|
}
|
|
}
|
|
|
|
if (var4 == 19) {
|
|
if (var2 == -1) {
|
|
Client.combatTargetPlayerIndex = -1;
|
|
} else {
|
|
Client.combatTargetPlayerIndex = var2 & 2047;
|
|
}
|
|
}
|
|
|
|
if (var4 == 22) {
|
|
Client.npcAttackOption = (AttackOption)findEnumerated(FloorUnderlayDefinition.method4383(), var2);
|
|
if (Client.npcAttackOption == null) {
|
|
Client.npcAttackOption = AttackOption.AttackOption_dependsOnCombatLevels;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|