patchwork-mapconverter
Version:
Executable wrapper for https://github.com/ChiefOfGxBxL/WC3MapTranslator
81 lines • 6.36 kB
JavaScript
;
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGV4QnVmZmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3djM21hcHRyYW5zbGF0b3IvSGV4QnVmZmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHNEQUE2QjtBQUM3QixnREFBdUI7QUFFdkIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFZLEVBQUUsT0FBZ0IsRUFBWSxFQUFFO0lBQzVELHFEQUFxRDtJQUNyRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBRWpDLHNHQUFzRztJQUN0RyxNQUFNLFFBQVEsR0FBRyxJQUFJLGNBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNsQyxrSkFBa0o7SUFDbEosTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUE7SUFFNUMsaUNBQWlDO0lBQ2pDLGtEQUFrRDtJQUNsRCw4SUFBOEk7SUFDOUksT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUU7UUFDbEMsT0FBTyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUNqQyxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQTtBQUNELE1BQU0sU0FBUyxHQUFHLENBQUMsU0FBaUIsRUFBVSxFQUFFO0lBQzlDLE9BQU8sSUFBSSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBQ3BELENBQUMsQ0FBQTtBQUVELE1BQWEsU0FBUztJQUF0QjtRQUNtQixZQUFPLEdBQWEsRUFBRSxDQUFBO0lBZ0V6QyxDQUFDO0lBOURRLFNBQVMsQ0FBRSxHQUFXO1FBQzNCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUM1QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQTtJQUMxQixDQUFDO0lBRUQscUhBQXFIO0lBQzlHLGtCQUFrQixDQUFFLEdBQVc7UUFDcEMsZ0NBQWdDO1FBQ2hDLGtEQUFrRDtRQUNsRCxxREFBcUQ7UUFDckQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFFckMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtTQUM5QztJQUNILENBQUM7SUFFTSxVQUFVO1FBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQyxrQkFBa0I7UUFDNUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQyxZQUFZO0lBQ3hDLENBQUM7SUFFTSxPQUFPLENBQUUsSUFBWTtRQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNwQyxDQUFDO0lBRU0sUUFBUSxDQUFFLEtBQWE7UUFDNUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNwQixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFTSxNQUFNLENBQUUsR0FBVyxFQUFFLE9BQU8sR0FBRyxLQUFLO1FBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFBO0lBQzlDLENBQUM7SUFFTSxRQUFRLENBQUUsS0FBYTtRQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUMxQixDQUFDO0lBRU0sUUFBUSxDQUFFLEtBQWE7UUFDNUIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUUzQixzRkFBc0Y7UUFDdEYsaUJBQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUV6QyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUM3QyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFTSxPQUFPLENBQUUsSUFBWTtRQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQzdDLENBQUM7SUFFTSxpQkFBaUI7UUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDMUIsQ0FBQztJQUVNLFNBQVM7UUFDZCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQWtELEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDcEYsQ0FBQztDQUNGO0FBakVELDhCQWlFQyJ9