mirror of
https://github.com/demostf/demo.js
synced 2026-06-04 00:54:14 +02:00
Fix stringtable client table encoding
This commit is contained in:
parent
686f240c05
commit
a771702307
2 changed files with 21 additions and 17 deletions
|
|
@ -17,16 +17,7 @@ export const StringTableHandler: MessageHandler<StringTablesMessage> = {
|
|||
const tableName = messageStream.readASCIIString();
|
||||
const entryCount = messageStream.readUint16();
|
||||
for (let j = 0; j < entryCount; j++) {
|
||||
const entry: StringTableEntry = {
|
||||
text: messageStream.readUTF8String()
|
||||
};
|
||||
if (messageStream.readBoolean()) {
|
||||
const extraDataLength = messageStream.readUint16();
|
||||
if ((extraDataLength * 8) > messageStream.bitsLeft) {
|
||||
throw new Error(`to long extraData ${tableName}[${i}]`);
|
||||
}
|
||||
entry.extraData = messageStream.readBitStream(extraDataLength * 8);
|
||||
}
|
||||
const entry = readEntry(messageStream);
|
||||
entries.push(entry);
|
||||
}
|
||||
const table: StringTableObject = {
|
||||
|
|
@ -39,11 +30,7 @@ export const StringTableHandler: MessageHandler<StringTablesMessage> = {
|
|||
if (messageStream.readBoolean()) {
|
||||
const clientEntries = messageStream.readUint16();
|
||||
for (let j = 0; j < clientEntries; j++) {
|
||||
const entry: StringTableEntry = {text: messageStream.readUTF8String()};
|
||||
if (messageStream.readBoolean()) {
|
||||
const extraDataLength = messageStream.readBits(16);
|
||||
entry.extraData = messageStream.readBitStream(extraDataLength * 8);
|
||||
}
|
||||
const entry = readEntry(messageStream);
|
||||
(table.clientEntries as StringTableEntry[]).push(entry);
|
||||
}
|
||||
}
|
||||
|
|
@ -74,7 +61,7 @@ export const StringTableHandler: MessageHandler<StringTablesMessage> = {
|
|||
writeEntry(entry, stream);
|
||||
}
|
||||
|
||||
if (table.clientEntries) {
|
||||
if (table.clientEntries && table.clientEntries.length) {
|
||||
stream.writeBoolean(true);
|
||||
stream.writeUint16(table.clientEntries.length);
|
||||
for (const entry of table.clientEntries) {
|
||||
|
|
@ -98,6 +85,15 @@ export const StringTableHandler: MessageHandler<StringTablesMessage> = {
|
|||
}
|
||||
};
|
||||
|
||||
function readEntry(stream: BitStream): StringTableEntry {
|
||||
const entry: StringTableEntry = {text: stream.readUTF8String()};
|
||||
if (stream.readBoolean()) {
|
||||
const extraDataLength = stream.readUint16();
|
||||
entry.extraData = stream.readBitStream(extraDataLength * 8);
|
||||
}
|
||||
return entry;
|
||||
}
|
||||
|
||||
function writeEntry(entry: StringTableEntry, stream: BitStream) {
|
||||
stream.writeUTF8String(entry.text);
|
||||
if (entry.extraData) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue