fix ui: fix EFS indexes check for reader (#2171)

This commit is contained in:
Delirium 2024-05-06 14:34:39 +02:00 committed by GitHub
parent 24f4bf6414
commit a7b34c41be
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 13 additions and 1 deletions

View file

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

View file

@ -12,6 +12,7 @@ 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)
}
@ -29,6 +30,10 @@ 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--) {
@ -56,6 +61,9 @@ export default class MFileReader extends RawMessageReader {
* */
private readRawMessage(): RawMessage | null {
try {
if (this.skipIndexes) {
this.skip(8)
}
return super.readMessage()
} catch (e) {
this.logger.error("Read message error:", e)