UNPKG

patchwork-mapconverter

Version:

Executable wrapper for https://github.com/ChiefOfGxBxL/WC3MapTranslator

59 lines 4.53 kB
"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