UNPKG

patchwork-mapconverter

Version:

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

81 lines 6.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CustomScriptsTranslator = void 0; const HexBuffer_1 = require("../wc3maptranslator/HexBuffer"); const W3Buffer_1 = require("../wc3maptranslator/W3Buffer"); class CustomScriptsTranslator { constructor() { } static getInstance() { if (this.instance == null) { this.instance = new this(); } return this.instance; } static jsonToWar(json) { return this.getInstance().jsonToWar(json); } static warToJson(buffer) { return this.getInstance().warToJson(buffer); } // expecting first string to belong to header jsonToWar(json) { const outBufferToWar = new HexBuffer_1.HexBuffer(); // format version outBufferToWar.addByte(0x04); outBufferToWar.addByte(0x00); outBufferToWar.addByte(0x00); outBufferToWar.addByte(0x80); outBufferToWar.addInt(json.headerComments.length); for (let i = 0; i < json.headerComments.length; i++) { outBufferToWar.addString(json.headerComments[i]); } for (let i = 0; i < json.scripts.length; i++) { const script = json.scripts[i]; if (script == null || script.length === 0) { outBufferToWar.addInt(0); // size } else { const buf = Buffer.from(script, 'utf-8'); outBufferToWar.addInt(buf.length + 1); // + nul char for (let i = 0; i < buf.length; i++) { outBufferToWar.addByte(buf[i]); } outBufferToWar.addByte(0); // nul char } } return { buffer: outBufferToWar.getBuffer(), errors: [] }; } warToJson(buffer) { const headerComments = []; const scripts = []; const outBufferToJSON = new W3Buffer_1.W3Buffer(buffer); const formatVersion = outBufferToJSON.readInt(); // 04 00 00 80 const headerCommentsCount = outBufferToJSON.readInt(); // 01 00 00 00 Header comments count? for (let i = 0; i < headerCommentsCount; i++) { headerComments.push(outBufferToJSON.readString()); } try { do { const lengthWithNulChar = outBufferToJSON.readInt(); if (lengthWithNulChar === 0) { scripts.push(''); continue; // skip } scripts.push(outBufferToJSON.readString()); } while (true); } catch (e) { // catch EOF } return { json: { headerComments, scripts }, errors: [] }; } } exports.CustomScriptsTranslator = CustomScriptsTranslator; CustomScriptsTranslator.instance = null; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3VzdG9tU2NyaXB0c1RyYW5zbGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJhbnNsYXRvci9DdXN0b21TY3JpcHRzVHJhbnNsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSw2REFBeUQ7QUFDekQsMkRBQXVEO0FBR3ZELE1BQWEsdUJBQXVCO0lBR2xDLGdCQUF3QixDQUFDO0lBRWxCLE1BQU0sQ0FBQyxXQUFXO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLEVBQUU7WUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFBO1NBQzNCO1FBQ0QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFBO0lBQ3RCLENBQUM7SUFFTSxNQUFNLENBQUMsU0FBUyxDQUFFLElBQXFEO1FBQzVFLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUMzQyxDQUFDO0lBRU0sTUFBTSxDQUFDLFNBQVMsQ0FBRSxNQUFjO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBRUQsNkNBQTZDO0lBQ3RDLFNBQVMsQ0FBRSxJQUFxRDtRQUNyRSxNQUFNLGNBQWMsR0FBRyxJQUFJLHFCQUFTLEVBQUUsQ0FBQTtRQUV0QyxpQkFBaUI7UUFDakIsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM1QixjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzVCLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDNUIsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUU1QixjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDakQsS0FBSyxJ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