Files
runelite/runescape-client/src/main/java/BufferedSource.java
2021-02-24 08:08:39 -05:00

325 lines
9.3 KiB
Java

import java.io.EOFException;
import java.io.IOException;
import java.io.InputStream;
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("ll")
@Implements("BufferedSource")
public class BufferedSource implements Runnable {
@ObfuscatedName("n")
@Export("thread")
Thread thread;
@ObfuscatedName("v")
@Export("inputStream")
InputStream inputStream;
@ObfuscatedName("d")
@ObfuscatedGetter(
intValue = 1953404091
)
@Export("capacity")
int capacity;
@ObfuscatedName("c")
@Export("buffer")
byte[] buffer;
@ObfuscatedName("y")
@ObfuscatedGetter(
intValue = -2146586711
)
@Export("position")
int position = 0;
@ObfuscatedName("h")
@ObfuscatedGetter(
intValue = 2116402287
)
@Export("limit")
int limit = 0;
@ObfuscatedName("z")
@Export("exception")
IOException exception;
BufferedSource(InputStream var1, int var2) {
this.inputStream = var1;
this.capacity = var2 + 1;
this.buffer = new byte[this.capacity];
this.thread = new Thread(this);
this.thread.setDaemon(true);
this.thread.start();
}
@ObfuscatedName("n")
@ObfuscatedSignature(
descriptor = "(II)Z",
garbageValue = "-1444651631"
)
@Export("isAvailable")
boolean isAvailable(int var1) throws IOException {
if (var1 == 0) {
return true;
} else if (var1 > 0 && var1 < this.capacity) {
synchronized(this) {
int var3;
if (this.position <= this.limit) {
var3 = this.limit - this.position;
} else {
var3 = this.capacity - this.position + this.limit;
}
if (var3 < var1) {
if (this.exception != null) {
throw new IOException(this.exception.toString());
} else {
this.notifyAll();
return false;
}
} else {
return true;
}
}
} else {
throw new IOException();
}
}
@ObfuscatedName("v")
@ObfuscatedSignature(
descriptor = "(S)I",
garbageValue = "5789"
)
@Export("available")
int available() throws IOException {
synchronized(this) {
int var2;
if (this.position <= this.limit) {
var2 = this.limit - this.position;
} else {
var2 = this.capacity - this.position + this.limit;
}
if (var2 <= 0 && this.exception != null) {
throw new IOException(this.exception.toString());
} else {
this.notifyAll();
return var2;
}
}
}
@ObfuscatedName("d")
@ObfuscatedSignature(
descriptor = "(I)I",
garbageValue = "-1306188380"
)
@Export("readUnsignedByte")
int readUnsignedByte() throws IOException {
synchronized(this) {
if (this.limit == this.position) {
if (this.exception != null) {
throw new IOException(this.exception.toString());
} else {
return -1;
}
} else {
int var2 = this.buffer[this.position] & 255;
this.position = (this.position + 1) % this.capacity;
this.notifyAll();
return var2;
}
}
}
@ObfuscatedName("c")
@ObfuscatedSignature(
descriptor = "([BIII)I",
garbageValue = "255172200"
)
@Export("read")
int read(byte[] var1, int var2, int var3) throws IOException {
if (var3 >= 0 && var2 >= 0 && var3 + var2 <= var1.length) {
synchronized(this) {
int var5;
if (this.position <= this.limit) {
var5 = this.limit - this.position;
} else {
var5 = this.capacity - this.position + this.limit;
}
if (var3 > var5) {
var3 = var5;
}
if (var3 == 0 && this.exception != null) {
throw new IOException(this.exception.toString());
} else {
if (var3 + this.position <= this.capacity) {
System.arraycopy(this.buffer, this.position, var1, var2, var3);
} else {
int var6 = this.capacity - this.position;
System.arraycopy(this.buffer, this.position, var1, var2, var6);
System.arraycopy(this.buffer, 0, var1, var6 + var2, var3 - var6);
}
this.position = (var3 + this.position) % this.capacity;
this.notifyAll();
return var3;
}
}
} else {
throw new IOException();
}
}
@ObfuscatedName("y")
@ObfuscatedSignature(
descriptor = "(I)V",
garbageValue = "-489650908"
)
@Export("close")
void close() {
synchronized(this) {
if (this.exception == null) {
this.exception = new IOException("");
}
this.notifyAll();
}
try {
this.thread.join();
} catch (InterruptedException var3) {
;
}
}
public void run() {
while(true) {
int var1;
synchronized(this) {
while(true) {
if (this.exception != null) {
return;
}
if (this.position == 0) {
var1 = this.capacity - this.limit - 1;
} else if (this.position <= this.limit) {
var1 = this.capacity - this.limit;
} else {
var1 = this.position - this.limit - 1;
}
if (var1 > 0) {
break;
}
try {
this.wait();
} catch (InterruptedException var10) {
;
}
}
}
int var7;
try {
var7 = this.inputStream.read(this.buffer, this.limit, var1);
if (var7 == -1) {
throw new EOFException();
}
} catch (IOException var11) {
IOException var3 = var11;
synchronized(this) {
this.exception = var3;
return;
}
}
synchronized(this) {
this.limit = (var7 + this.limit) % this.capacity;
}
}
}
@ObfuscatedName("d")
@ObfuscatedSignature(
descriptor = "(Lig;III)Llm;",
garbageValue = "34379622"
)
@Export("SpriteBuffer_getSprite")
public static SpritePixels SpriteBuffer_getSprite(AbstractArchive var0, int var1, int var2) {
byte[] var4 = var0.takeFile(var1, var2);
boolean var3;
if (var4 == null) {
var3 = false;
} else {
GrandExchangeOfferNameComparator.SpriteBuffer_decode(var4);
var3 = true;
}
if (!var3) {
return null;
} else {
SpritePixels var5 = new SpritePixels();
var5.width = class336.SpriteBuffer_spriteWidth;
var5.height = class336.SpriteBuffer_spriteHeight;
var5.xOffset = class105.SpriteBuffer_xOffsets[0];
var5.yOffset = class336.SpriteBuffer_yOffsets[0];
var5.subWidth = class336.SpriteBuffer_spriteWidths[0];
var5.subHeight = class225.SpriteBuffer_spriteHeights[0];
int var6 = var5.subHeight * var5.subWidth;
byte[] var7 = class2.SpriteBuffer_pixels[0];
var5.pixels = new int[var6];
for(int var8 = 0; var8 < var6; ++var8) {
var5.pixels[var8] = HorizontalAlignment.SpriteBuffer_spritePalette[var7[var8] & 255];
}
class105.SpriteBuffer_xOffsets = null;
class336.SpriteBuffer_yOffsets = null;
class336.SpriteBuffer_spriteWidths = null;
class225.SpriteBuffer_spriteHeights = null;
HorizontalAlignment.SpriteBuffer_spritePalette = null;
class2.SpriteBuffer_pixels = null;
return var5;
}
}
@ObfuscatedName("e")
@ObfuscatedSignature(
descriptor = "(B)[Llm;",
garbageValue = "49"
)
static SpritePixels[] method6103() {
SpritePixels[] var0 = new SpritePixels[class336.SpriteBuffer_spriteCount];
for(int var1 = 0; var1 < class336.SpriteBuffer_spriteCount; ++var1) {
SpritePixels var2 = var0[var1] = new SpritePixels();
var2.width = class336.SpriteBuffer_spriteWidth;
var2.height = class336.SpriteBuffer_spriteHeight;
var2.xOffset = class105.SpriteBuffer_xOffsets[var1];
var2.yOffset = class336.SpriteBuffer_yOffsets[var1];
var2.subWidth = class336.SpriteBuffer_spriteWidths[var1];
var2.subHeight = class225.SpriteBuffer_spriteHeights[var1];
int var3 = var2.subHeight * var2.subWidth;
byte[] var4 = class2.SpriteBuffer_pixels[var1];
var2.pixels = new int[var3];
for(int var5 = 0; var5 < var3; ++var5) {
var2.pixels[var5] = HorizontalAlignment.SpriteBuffer_spritePalette[var4[var5] & 255];
}
}
class105.SpriteBuffer_xOffsets = null;
class336.SpriteBuffer_yOffsets = null;
class336.SpriteBuffer_spriteWidths = null;
class225.SpriteBuffer_spriteHeights = null;
HorizontalAlignment.SpriteBuffer_spritePalette = null;
class2.SpriteBuffer_pixels = null;
return var0;
}
}