feat: more sc2 x2

This commit is contained in:
TrèsAbhi committed 2023-12-08 18:32:11 -06:00
1 parent 365c714213
commit a0434b6ed2
2 files changed
+25 -6

No files matched your search

+1
View File
@@ -1,5 +1,6 @@
{ {
"cSpell.words": [ "cSpell.words": [
"AABBOX",
"Abhi", "Abhi",
"accountinfo", "accountinfo",
"bepaint", "bepaint",
+24 -6
View File
@@ -119,12 +119,19 @@ class SCPGStream {
skip(size: number) { skip(size: number) {
this.index += size; this.index += size;
} }
read(size: number) {
return this.buffer.subarray(this.index, this.index + size);
}
consume(size: number) { consume(size: number) {
const subarray = this.buffer.subarray(this.index, this.index + size); const subarray = this.read(size);
this.index += size; this.index += size;
return subarray; return subarray;
} }
readRemaining() {
return this.read(Number.POSITIVE_INFINITY);
}
consumeRemaining() { consumeRemaining() {
return this.consume(Number.POSITIVE_INFINITY); return this.consume(Number.POSITIVE_INFINITY);
} }
@@ -154,8 +161,8 @@ class SCPGStream {
return { buffer, value: buffer.readInt32LE() }; return { buffer, value: buffer.readInt32LE() };
} }
consumeInt64() { consumeInt64() {
const buffer = this.consume(4); const buffer = this.consume(8);
return { buffer, value: buffer.readInt32LE() }; return { buffer, value: buffer.readBigInt64LE() };
} }
consumeUInt8() { consumeUInt8() {
const buffer = this.consume(1); const buffer = this.consume(1);
@@ -170,14 +177,19 @@ class SCPGStream {
return { buffer, value: buffer.readUInt32LE() }; return { buffer, value: buffer.readUInt32LE() };
} }
consumeUInt64() { consumeUInt64() {
const buffer = this.consume(4); const buffer = this.consume(8);
return { buffer, value: buffer.readUInt32LE() }; return { buffer, value: buffer.readBigUInt64LE() };
} }
consumeFloat() { consumeFloat() {
const buffer = this.consume(4); const buffer = this.consume(4);
return { buffer, value: buffer.readFloatLE() }; return { buffer, value: buffer.readFloatLE() };
} }
consumeBoolean() {
const buffer = this.consume(1);
return { buffer, value: buffer.readUInt8() === 1 };
}
consumeSCGHeader() { consumeSCGHeader() {
return { return {
name: this.consumeAscii(4).value, name: this.consumeAscii(4).value,
@@ -325,6 +337,12 @@ class SCPGStream {
case KAType.UINT64: case KAType.UINT64:
return this.consumeUInt64() as KAResolvedValue<Type>; return this.consumeUInt64() as KAResolvedValue<Type>;
case KAType.UINT32:
return this.consumeUInt32() as KAResolvedValue<Type>;
case KAType.BOOLEAN:
return this.consumeBoolean() as KAResolvedValue<Type>;
default: default:
throw new TypeError( throw new TypeError(
`Unknown KA type: ${type} (${KAType[type] ?? 'unknown type'})`, `Unknown KA type: ${type} (${KAType[type] ?? 'unknown type'})`,
@@ -389,7 +407,7 @@ class SCPGStream {
const value = stringTable[valueIndex]; const value = stringTable[valueIndex];
pairs[key] = value; pairs[key] = value;
} else { } else {
const { value } = this.consumeKAValue(valueType); const { value } = this.consumeKAValue(valueType, stringTable);
pairs[key] = value; pairs[key] = value;
} }