fix message reader

This commit is contained in:
nick-delirium 2024-07-09 10:51:33 +02:00
parent d215161565
commit 3ee33391bc
No known key found for this signature in database
GPG key ID: 93ABD695DF5FDBA0
2 changed files with 11 additions and 15 deletions

View file

@ -45,11 +45,8 @@ export default class MessageLoader {
const mobBytes = await decrypt(b);
const data = unpack(mobBytes);
fileReader.append(data);
if (file?.endsWith('EFS')) {
fileReader.forceSkipIndexes()
} else {
fileReader.checkForIndexes();
}
fileReader.checkForIndexes();
const msgs: Array<PlayerMsg> = [];
let finished = false;
while (!finished) {

View file

@ -12,7 +12,6 @@ export default class MFileReader extends RawMessageReader {
private currentTime: number
public error: boolean = false
private noIndexes: boolean = false
private skipIndexes: boolean = false
constructor(data: Uint8Array, private startTime?: number, private logger= console) {
super(data)
}
@ -30,10 +29,6 @@ export default class MFileReader extends RawMessageReader {
}
}
public forceSkipIndexes() {
this.skipIndexes = true
}
private needSkipMessage(): boolean {
if (this.p === 0) return false
for (let i = 7; i >= 0; i--) {
@ -60,14 +55,18 @@ export default class MFileReader extends RawMessageReader {
* via super.append
* */
private readRawMessage(): RawMessage | null {
if (!this.noIndexes) {
this.skip(8)
}
try {
if (this.skipIndexes) {
this.skip(8)
const msg = super.readMessage()
if (!msg && !this.noIndexes) {
this.skip(-8)
}
return super.readMessage()
return msg
} catch (e) {
this.logger.error("Read message error:", e)
this.error = true
this.logger.error("Read message error:", e)
return null
}
}
@ -117,4 +116,4 @@ export default class MFileReader extends RawMessageReader {
return msg
}
}
}