UNPKG

patchwork-mapconverter

Version:

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

81 lines 6.36 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.HexBuffer = void 0; const ieee754_1 = __importDefault(require("ieee754")); const intn_1 = __importDefault(require("intn")); const intToHex = (intV, isShort) => { // Creates a new 32-bit integer from the given number const intSize = isShort ? 16 : 32; // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-assignment const intNSize = new intn_1.default(intSize); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call const byteNum = intNSize.fromInt(intV).bytes; // Map decimal bytes to hex bytes // Bytes are already in correct little-endian form // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call return byteNum.map((Byte) => { return '0x' + Byte.toString(16); }); }; const charToHex = (character) => { return '0x' + character.charCodeAt(0).toString(16); }; class HexBuffer { constructor() { this._buffer = []; } addString(str) { this.addStringNoNewline(str); this.addNullTerminator(); } // as opposed to addChar(s) it can handle any unicode char instead of blindly converting to ascii, thus loosing data. addStringNoNewline(str) { // Write each char to the buffer // "ascii" | "utf8" | "utf-8" | "utf16le" | "ucs2" // | "ucs-2" | "base64" | "latin1" | "binary" | "hex" const buf = Buffer.from(str, 'utf-8'); for (let i = 0; i < buf.length; i++) { this._buffer.push('0x' + buf[i].toString(16)); } } addNewLine() { this._buffer.push('0x0d'); // carriage return this._buffer.push('0x0a'); // line feed } addChar(char) { this._buffer.push(charToHex(char)); } addChars(chars) { chars.split('').forEach(char => { this.addChar(char); }); } addInt(int, isShort = false) { this._buffer.push(...intToHex(int, isShort)); } addShort(short) { this.addInt(short, true); } addFloat(float) { const buf = Buffer.alloc(4); // ieee754.write(buffer, value, buffer offset, little-endian, mantissa length, bytes); ieee754_1.default.write(buf, float, 0, true, 23, 4); buf.forEach((byte) => { this._buffer.push('0x' + byte.toString(16)); }); } addByte(byte) { this._buffer.push('0x' + byte.toString(16)); } addNullTerminator() { this._buffer.push('0x0'); } getBuffer() { return Buffer.from(this._buffer, 'hex'); } } exports.HexBuffer = HexBuffer; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGV4QnVmZmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3djM21hcHRyYW5zbGF0b3IvSGV4QnVmZmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHNEQUE2QjtBQUM3QixnREFBdUI7QUFFdkIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFZLEVBQUUsT0FBZ0IsRUFBWSxFQUFFO0lBQzVELHFEQUFxRDtJQUNyRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBRWpDLHNHQUFzRztJQUN0RyxNQUFNLFFBQVEsR0FBRyxJQUFJLGNBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNsQyxrSkFBa0o7SUFDbEosTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUE7SUFFNUMsaUNBQWlDO0lBQ2pDLGtEQUFrRDtJQUNsRCw4SUFBOEk7SUFDOUksT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUU7UUFDbEMsT0FBTyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUNqQyxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQTtBQUNELE1BQU0sU0FBUyxHQUFHLENBQUMsU0FBaUIsRUFBVSxFQUFFO0lBQzlDLE9BQU8sSUFBSSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBQ3BELENBQUMsQ0FBQTtBQUVELE1BQWEsU0FBUztJQUF0QjtRQUNtQixZQUFPLEdBQWEsRUFBRSxDQUFBO0lBZ0V6QyxDQUFDO0lBOURRLFNBQVMsQ0FBRSxHQUFXO1FBQzNCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUM1QixJQUFJLENBQUMsaUJB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