mirror of
https://github.com/2006-Scape/2006Scape.git
synced 2026-07-06 00:32:01 +00:00
Rename & Repackage
This commit is contained in:
@@ -0,0 +1,419 @@
|
||||
package com.rs2.util;
|
||||
|
||||
import com.rs2.GameConstants;
|
||||
|
||||
public class Stream {
|
||||
|
||||
public Stream() {
|
||||
}
|
||||
|
||||
public Stream(byte abyte0[]) {
|
||||
buffer = abyte0;
|
||||
currentOffset = 0;
|
||||
}
|
||||
|
||||
public long readQWord2() {
|
||||
final long l = readDWord() & 0xffffffffL;
|
||||
final long l1 = readDWord() & 0xffffffffL;
|
||||
return (l << 32) + l1;
|
||||
}
|
||||
|
||||
public byte readSignedByteA() {
|
||||
return (byte) (buffer[currentOffset++] - 128);
|
||||
}
|
||||
|
||||
public byte readSignedByteC() {
|
||||
return (byte) -buffer[currentOffset++];
|
||||
}
|
||||
|
||||
public byte readSignedByteS() {
|
||||
return (byte) (128 - buffer[currentOffset++]);
|
||||
}
|
||||
|
||||
public int readUnsignedByteA() {
|
||||
return buffer[currentOffset++] - 128 & 0xff;
|
||||
}
|
||||
|
||||
public int readUnsignedByteC() {
|
||||
return -buffer[currentOffset++] & 0xff;
|
||||
}
|
||||
|
||||
public int readUnsignedByteS() {
|
||||
return 128 - buffer[currentOffset++] & 0xff;
|
||||
}
|
||||
|
||||
public void writeByteA(int i) {
|
||||
ensureCapacity(1);
|
||||
buffer[currentOffset++] = (byte) (i + 128);
|
||||
}
|
||||
|
||||
public void writeByteS(int i) {
|
||||
ensureCapacity(1);
|
||||
buffer[currentOffset++] = (byte) (128 - i);
|
||||
}
|
||||
|
||||
public void writeByteC(int i) {
|
||||
ensureCapacity(1);
|
||||
buffer[currentOffset++] = (byte) -i;
|
||||
}
|
||||
|
||||
public int readSignedWordBigEndian() {
|
||||
currentOffset += 2;
|
||||
int i = ((buffer[currentOffset - 1] & 0xff) << 8) + (buffer[currentOffset - 2] & 0xff);
|
||||
if (i > 32767) {
|
||||
i -= 0x10000;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
public int readSignedWordA() {
|
||||
currentOffset += 2;
|
||||
int i = ((buffer[currentOffset - 2] & 0xff) << 8) + (buffer[currentOffset - 1] - 128 & 0xff);
|
||||
if (i > 32767) {
|
||||
i -= 0x10000;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
public int readSignedWordBigEndianA() {
|
||||
currentOffset += 2;
|
||||
int i = ((buffer[currentOffset - 1] & 0xff) << 8) + (buffer[currentOffset - 2] - 128 & 0xff);
|
||||
if (i > 32767) {
|
||||
i -= 0x10000;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
public int readUnsignedWordBigEndian() {
|
||||
currentOffset += 2;
|
||||
return ((buffer[currentOffset - 1] & 0xff) << 8) + (buffer[currentOffset - 2] & 0xff);
|
||||
}
|
||||
|
||||
public int readUnsignedWordA() {
|
||||
currentOffset += 2;
|
||||
return ((buffer[currentOffset - 2] & 0xff) << 8) + (buffer[currentOffset - 1] - 128 & 0xff);
|
||||
}
|
||||
|
||||
public int readUnsignedWordBigEndianA() {
|
||||
currentOffset += 2;
|
||||
return ((buffer[currentOffset - 1] & 0xff) << 8) + (buffer[currentOffset - 2] - 128 & 0xff);
|
||||
}
|
||||
|
||||
public void writeWordBigEndianA(int i) {
|
||||
ensureCapacity(2);
|
||||
buffer[currentOffset++] = (byte) (i + 128);
|
||||
buffer[currentOffset++] = (byte) (i >> 8);
|
||||
}
|
||||
|
||||
public void writeWordA(int i) {
|
||||
ensureCapacity(2);
|
||||
buffer[currentOffset++] = (byte) (i >> 8);
|
||||
buffer[currentOffset++] = (byte) (i + 128);
|
||||
}
|
||||
|
||||
public void writeWordBigEndian_dup(int i) {
|
||||
ensureCapacity(2);
|
||||
buffer[currentOffset++] = (byte) i;
|
||||
buffer[currentOffset++] = (byte) (i >> 8);
|
||||
}
|
||||
|
||||
public int readDWord_v1() {
|
||||
currentOffset += 4;
|
||||
return ((buffer[currentOffset - 2] & 0xff) << 24)
|
||||
+ ((buffer[currentOffset - 1] & 0xff) << 16)
|
||||
+ ((buffer[currentOffset - 4] & 0xff) << 8)
|
||||
+ (buffer[currentOffset - 3] & 0xff);
|
||||
}
|
||||
|
||||
public int readDWord_v2() {
|
||||
currentOffset += 4;
|
||||
return ((buffer[currentOffset - 3] & 0xff) << 24)
|
||||
+ ((buffer[currentOffset - 4] & 0xff) << 16)
|
||||
+ ((buffer[currentOffset - 1] & 0xff) << 8)
|
||||
+ (buffer[currentOffset - 2] & 0xff);
|
||||
}
|
||||
|
||||
public void writeDWord_v1(int i) {
|
||||
ensureCapacity(4);
|
||||
buffer[currentOffset++] = (byte) (i >> 8);
|
||||
buffer[currentOffset++] = (byte) i;
|
||||
buffer[currentOffset++] = (byte) (i >> 24);
|
||||
buffer[currentOffset++] = (byte) (i >> 16);
|
||||
}
|
||||
|
||||
public void writeDWord_v2(int i) {
|
||||
ensureCapacity(4);
|
||||
buffer[currentOffset++] = (byte) (i >> 16);
|
||||
buffer[currentOffset++] = (byte) (i >> 24);
|
||||
buffer[currentOffset++] = (byte) i;
|
||||
buffer[currentOffset++] = (byte) (i >> 8);
|
||||
}
|
||||
|
||||
public void readBytes_reverse(byte abyte0[], int i, int j) {
|
||||
for (int k = j + i - 1; k >= j; k--) {
|
||||
abyte0[k] = buffer[currentOffset++];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void writeBytes_reverse(byte abyte0[], int i, int j) {
|
||||
ensureCapacity(i);
|
||||
for (int k = j + i - 1; k >= j; k--) {
|
||||
buffer[currentOffset++] = abyte0[k];
|
||||
}
|
||||
}
|
||||
|
||||
public void readBytes_reverseA(byte abyte0[], int i, int j) {
|
||||
ensureCapacity(i);
|
||||
for (int k = j + i - 1; k >= j; k--) {
|
||||
abyte0[k] = (byte) (buffer[currentOffset++] - 128);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void writeBytes_reverseA(byte abyte0[], int i, int j) {
|
||||
ensureCapacity(i);
|
||||
for (int k = j + i - 1; k >= j; k--) {
|
||||
buffer[currentOffset++] = (byte) (abyte0[k] + 128);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void createFrame(int id) {
|
||||
ensureCapacity(1);
|
||||
buffer[currentOffset++] = (byte) (id + packetEncryption.getNextKey());
|
||||
}
|
||||
|
||||
private static final int frameStackSize = 10;
|
||||
private int frameStackPtr = -1;
|
||||
private final int frameStack[] = new int[frameStackSize];
|
||||
|
||||
public void createFrameVarSize(int id) {
|
||||
ensureCapacity(3);
|
||||
buffer[currentOffset++] = (byte) (id + packetEncryption.getNextKey());
|
||||
buffer[currentOffset++] = 0;
|
||||
if (frameStackPtr >= frameStackSize - 1) {
|
||||
throw new RuntimeException("Stack overflow");
|
||||
} else {
|
||||
frameStack[++frameStackPtr] = currentOffset;
|
||||
}
|
||||
}
|
||||
|
||||
public void createFrameVarSizeWord(int id) {
|
||||
ensureCapacity(2);
|
||||
buffer[currentOffset++] = (byte) (id + packetEncryption.getNextKey());
|
||||
writeWord(0);
|
||||
if (frameStackPtr >= frameStackSize - 1) {
|
||||
throw new RuntimeException("Stack overflow");
|
||||
} else {
|
||||
frameStack[++frameStackPtr] = currentOffset;
|
||||
}
|
||||
}
|
||||
|
||||
public void endFrameVarSize() {
|
||||
if (frameStackPtr < 0) {
|
||||
throw new RuntimeException("Stack empty");
|
||||
} else {
|
||||
writeFrameSize(currentOffset - frameStack[frameStackPtr--]);
|
||||
}
|
||||
}
|
||||
|
||||
public void endFrameVarSizeWord() {
|
||||
if (frameStackPtr < 0) {
|
||||
throw new RuntimeException("Stack empty");
|
||||
} else {
|
||||
writeFrameSizeWord(currentOffset - frameStack[frameStackPtr--]);
|
||||
}
|
||||
}
|
||||
|
||||
public void writeByte(int i) {
|
||||
ensureCapacity(1);
|
||||
buffer[currentOffset++] = (byte) i;
|
||||
}
|
||||
|
||||
public void writeWord(int i) {
|
||||
ensureCapacity(2);
|
||||
buffer[currentOffset++] = (byte) (i >> 8);
|
||||
buffer[currentOffset++] = (byte) i;
|
||||
}
|
||||
|
||||
public void writeWordBigEndian(int i) {
|
||||
ensureCapacity(2);
|
||||
buffer[currentOffset++] = (byte) i;
|
||||
buffer[currentOffset++] = (byte) (i >> 8);
|
||||
}
|
||||
|
||||
public void write3Byte(int i) {
|
||||
ensureCapacity(3);
|
||||
buffer[currentOffset++] = (byte) (i >> 16);
|
||||
buffer[currentOffset++] = (byte) (i >> 8);
|
||||
buffer[currentOffset++] = (byte) i;
|
||||
}
|
||||
|
||||
public void writeDWord(int i) {
|
||||
ensureCapacity(4);
|
||||
buffer[currentOffset++] = (byte) (i >> 24);
|
||||
buffer[currentOffset++] = (byte) (i >> 16);
|
||||
buffer[currentOffset++] = (byte) (i >> 8);
|
||||
buffer[currentOffset++] = (byte) i;
|
||||
}
|
||||
|
||||
public void writeDWordBigEndian(int i) {
|
||||
ensureCapacity(4);
|
||||
buffer[currentOffset++] = (byte) i;
|
||||
buffer[currentOffset++] = (byte) (i >> 8);
|
||||
buffer[currentOffset++] = (byte) (i >> 16);
|
||||
buffer[currentOffset++] = (byte) (i >> 24);
|
||||
}
|
||||
|
||||
public void writeQWord(long l) {
|
||||
ensureCapacity(8);
|
||||
buffer[currentOffset++] = (byte) (int) (l >> 56);
|
||||
buffer[currentOffset++] = (byte) (int) (l >> 48);
|
||||
buffer[currentOffset++] = (byte) (int) (l >> 40);
|
||||
buffer[currentOffset++] = (byte) (int) (l >> 32);
|
||||
buffer[currentOffset++] = (byte) (int) (l >> 24);
|
||||
buffer[currentOffset++] = (byte) (int) (l >> 16);
|
||||
buffer[currentOffset++] = (byte) (int) (l >> 8);
|
||||
buffer[currentOffset++] = (byte) (int) l;
|
||||
}
|
||||
|
||||
public void writeString(java.lang.String s) {
|
||||
ensureCapacity(s.length());
|
||||
System.arraycopy(s.getBytes(), 0, buffer, currentOffset, s.length());
|
||||
currentOffset += s.length();
|
||||
buffer[currentOffset++] = 10;
|
||||
}
|
||||
|
||||
public void writeBytes(byte abyte0[], int i, int j) {
|
||||
ensureCapacity(i);
|
||||
for (int k = j; k < j + i; k++) {
|
||||
buffer[currentOffset++] = abyte0[k];
|
||||
}
|
||||
}
|
||||
|
||||
public void writeFrameSize(int i) {
|
||||
buffer[currentOffset - i - 1] = (byte) i;
|
||||
}
|
||||
|
||||
public void writeFrameSizeWord(int i) {
|
||||
buffer[currentOffset - i - 2] = (byte) (i >> 8);
|
||||
buffer[currentOffset - i - 1] = (byte) i;
|
||||
}
|
||||
|
||||
public int readUnsignedByte() {
|
||||
return buffer[currentOffset++] & 0xff;
|
||||
}
|
||||
|
||||
public byte readSignedByte() {
|
||||
return buffer[currentOffset++];
|
||||
}
|
||||
|
||||
public int readUnsignedWord() {
|
||||
currentOffset += 2;
|
||||
return ((buffer[currentOffset - 2] & 0xff) << 8) + (buffer[currentOffset - 1] & 0xff);
|
||||
}
|
||||
|
||||
public int readSignedWord() {
|
||||
currentOffset += 2;
|
||||
int i = ((buffer[currentOffset - 2] & 0xff) << 8) + (buffer[currentOffset - 1] & 0xff);
|
||||
if (i > 32767) {
|
||||
i -= 0x10000;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
public int readDWord() {
|
||||
currentOffset += 4;
|
||||
return ((buffer[currentOffset - 4] & 0xff) << 24)
|
||||
+ ((buffer[currentOffset - 3] & 0xff) << 16)
|
||||
+ ((buffer[currentOffset - 2] & 0xff) << 8)
|
||||
+ (buffer[currentOffset - 1] & 0xff);
|
||||
}
|
||||
|
||||
public long readQWord() {
|
||||
long l = readDWord() & 0xffffffffL;
|
||||
long l1 = readDWord() & 0xffffffffL;
|
||||
return (l << 32) + l1;
|
||||
}
|
||||
|
||||
public java.lang.String readString() {
|
||||
int i = currentOffset;
|
||||
while (buffer[currentOffset++] != 10) {
|
||||
;
|
||||
}
|
||||
return new String(buffer, i, currentOffset - i - 1);
|
||||
}
|
||||
|
||||
public void readBytes(byte abyte0[], int i, int j) {
|
||||
for (int k = j; k < j + i; k++) {
|
||||
abyte0[k] = buffer[currentOffset++];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void initBitAccess() {
|
||||
bitPosition = currentOffset * 8;
|
||||
}
|
||||
|
||||
public void writeBits(int numBits, int value) {
|
||||
ensureCapacity((int) Math.ceil(numBits * 8) * 4);
|
||||
int bytePos = bitPosition >> 3;
|
||||
int bitOffset = 8 - (bitPosition & 7);
|
||||
bitPosition += numBits;
|
||||
|
||||
for (; numBits > bitOffset; bitOffset = 8) {
|
||||
buffer[bytePos] &= ~bitMaskOut[bitOffset];
|
||||
buffer[bytePos++] |= value >> numBits - bitOffset
|
||||
& bitMaskOut[bitOffset];
|
||||
|
||||
numBits -= bitOffset;
|
||||
}
|
||||
if (numBits == bitOffset) {
|
||||
buffer[bytePos] &= ~bitMaskOut[bitOffset];
|
||||
buffer[bytePos] |= value & bitMaskOut[bitOffset];
|
||||
} else {
|
||||
buffer[bytePos] &= ~(bitMaskOut[numBits] << bitOffset - numBits);
|
||||
buffer[bytePos] |= (value & bitMaskOut[numBits]) << bitOffset
|
||||
- numBits;
|
||||
}
|
||||
}
|
||||
|
||||
public void finishBitAccess() {
|
||||
currentOffset = (bitPosition + 7) / 8;
|
||||
}
|
||||
|
||||
public byte buffer[] = null;
|
||||
public int currentOffset = 0;
|
||||
public int bitPosition = 0;
|
||||
|
||||
public static int bitMaskOut[] = new int[32];
|
||||
static {
|
||||
for (int i = 0; i < 32; i++) {
|
||||
bitMaskOut[i] = (1 << i) - 1;
|
||||
}
|
||||
}
|
||||
|
||||
public void ensureCapacity(int len) {
|
||||
if (currentOffset + len + 1 >= buffer.length) {
|
||||
byte[] oldBuffer = buffer;
|
||||
int newLength = buffer.length * 2;
|
||||
buffer = new byte[newLength];
|
||||
System.arraycopy(oldBuffer, 0, buffer, 0, oldBuffer.length);
|
||||
ensureCapacity(len);
|
||||
}
|
||||
}
|
||||
|
||||
public void reset() {
|
||||
if (!(currentOffset > GameConstants.BUFFER_SIZE)) {
|
||||
byte[] oldBuffer = buffer;
|
||||
buffer = new byte[GameConstants.BUFFER_SIZE];
|
||||
for (int i = 0; i < currentOffset; i++) {
|
||||
buffer[i] = oldBuffer[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public ISAACRandomGen packetEncryption = null;
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user