patchwork-mapconverter
Version:
Executable wrapper for https://github.com/ChiefOfGxBxL/WC3MapTranslator
59 lines • 4.53 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.W3Buffer = void 0;
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-var-requires
const roundTo = require('round-to');
class W3Buffer {
constructor(buffer) {
this._offset = 0;
this._buffer = buffer;
}
readInt() {
const int = this._buffer.readInt32LE(this._offset);
this._offset += 4;
return int;
}
readShort() {
const int = this._buffer.readInt16LE(this._offset);
this._offset += 2;
return int;
}
readFloat() {
const float = this._buffer.readFloatLE(this._offset);
this._offset += 4;
// eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call
return roundTo(float, 3);
}
readString() {
const string = [];
while (this._buffer[this._offset] !== 0x00) {
string.push(this._buffer[this._offset]);
this._offset += 1;
}
this._offset += 1; // consume the \0 end-of-string delimiter
return Buffer.from(string).toString();
}
readChars(len = 1) {
const string = [];
const numCharsToRead = len;
for (let i = 0; i < numCharsToRead; i++) {
string.push(this._buffer[this._offset]);
this._offset += 1;
}
return string.map((ch) => {
// if (ch === 0x0) return '0' //Curse spell has a "Crs" field, whose 4th byte is probably a 0x0, and not a "0", causing the editor to just ignore this change when converting back...
return String.fromCharCode(ch);
}).join('');
}
readByte() {
// TODO what kind of binary? Do we use a BigInt or a node provided type from Buffer?
const byte = this._buffer[this._offset];
this._offset += 1;
return byte;
}
isExhausted() {
return this._offset === this._buffer.length;
}
}
exports.W3Buffer = W3Buffer;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVzNCdWZmZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd2MzbWFwdHJhbnNsYXRvci9XM0J1ZmZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1R0FBdUc7QUFDdkcsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0FBRW5DLE1BQWEsUUFBUTtJQUluQixZQUFhLE1BQWM7UUFIbkIsWUFBTyxHQUFHLENBQUMsQ0FBQTtRQUlqQixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQTtJQUN2QixDQUFDO0lBRU0sT0FBTztRQUNaLE1BQU0sR0FBRyxHQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUMxRCxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQTtRQUNqQixPQUFPLEdBQUcsQ0FBQTtJQUNaLENBQUM7SUFFTSxTQUFTO1FBQ2QsTUFBTSxHQUFHLEdBQVcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQzFELElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFBO1FBQ2pCLE9BQU8sR0FBRyxDQUFBO0lBQ1osQ0FBQztJQUVNLFNBQVM7UUFDZCxNQUFNLEtBQUssR0FBVyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDNUQsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUE7UUFDakIsa0dBQWtHO1FBQ2xHLE9BQU8sT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUMxQixDQUFDO0lBRU0sVUFBVTtRQUNmLE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQTtRQUUzQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRTtZQUMxQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7WUFDdkMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUE7U0FDbEI7UUFDRCxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFDLHlDQUF5QztRQUUzRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBc0QsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ3ZGLENBQUM7SUFFTSxTQUFTLENBQUUsR0FBRyxHQUFHLENBQUM7UUFDdkIsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFBO1FBQzNCLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQTtRQUUxQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsY0FBYyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3ZDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtZQUN2QyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQTtTQUNsQjtRQUVELE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO1lBQ3ZCLHFMQUFxTDtZQUNyTCxPQUFPLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDaEMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ2IsQ0FBQztJQUVNLFFBQVE7UUFDYixvRkFBb0Y7UUFDcEYsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDdkMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUE7UUFDakIsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRU0sV0FBVztRQUNoQixPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUE7SUFDN0MsQ0FBQztDQUNGO0FBaEVELDRCQWdFQyJ9