UNPKG

patchwork-mapconverter

Version:

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

72 lines 5.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ImportsTranslator = void 0; const HexBuffer_1 = require("../HexBuffer"); const W3Buffer_1 = require("../W3Buffer"); const Import_1 = require("../data/Import"); const typeEnum = { 0: Import_1.ImportType.Standard, 5: Import_1.ImportType.Standard, 8: Import_1.ImportType.Standard, 10: Import_1.ImportType.Custom, 13: Import_1.ImportType.Custom // * preferred }; class ImportsTranslator { constructor() { } static getInstance() { if (this.instance == null) { this.instance = new this(); } return this.instance; } static jsonToWar(imports) { return this.getInstance().jsonToWar(imports); } static warToJson(buffer) { return this.getInstance().warToJson(buffer); } jsonToWar(imports) { const outBufferToWar = new HexBuffer_1.HexBuffer(); /* * Header */ outBufferToWar.addInt(1); // file version outBufferToWar.addInt(imports?.length || 0); // number of imports /* * Body */ imports?.forEach((importedFile) => { outBufferToWar.addByte(importedFile.type === Import_1.ImportType.Custom ? 13 : 5); // Temporary: always start the file path with war3mapImported\ until other file support is added if (!importedFile.path.startsWith('war3mapImported\\') && importedFile.type === Import_1.ImportType.Standard) { importedFile.path = 'war3mapImported\\' + importedFile.path; } outBufferToWar.addString(importedFile.path); }); return { errors: [], buffer: outBufferToWar.getBuffer() }; } warToJson(buffer) { const result = []; const outBufferToJSON = new W3Buffer_1.W3Buffer(buffer); const fileVersion = outBufferToJSON.readInt(); // File version const numImports = outBufferToJSON.readInt(); // # of imports for (let i = 0; i < numImports; i++) { const typeValue = outBufferToJSON.readByte(); const type = typeEnum[typeValue]; const importedFile = { type, path: outBufferToJSON.readString() // e.g. "war3mapImported\mysound.wav" }; result.push(importedFile); } return { errors: [], json: result }; } } exports.ImportsTranslator = ImportsTranslator; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW1wb3J0c1RyYW5zbGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvd2MzbWFwdHJhbnNsYXRvci90cmFuc2xhdG9ycy9JbXBvcnRzVHJhbnNsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw0Q0FBd0M7QUFDeEMsMENBQXNDO0FBR3RDLDJDQUF3RDtBQUV4RCxNQUFNLFFBQVEsR0FBRztJQUNmLENBQUMsRUFBRSxtQkFBVSxDQUFDLFFBQVE7SUFDdEIsQ0FBQyxFQUFFLG1CQUFVLENBQUMsUUFBUTtJQUN0QixDQUFDLEVBQUUsbUJBQVUsQ0FBQyxRQUFRO0lBQ3RCLEVBQUUsRUFBRSxtQkFBVSxDQUFDLE1BQU07SUFDckIsRUFBRSxFQUFFLG1CQUFVLENBQUMsTUFBTSxDQUFDLGNBQWM7Q0FDckMsQ0FBQTtBQUVELE1BQWEsaUJBQWlCO0lBRzVCLGdCQUF3QixDQUFDO0lBRWxCLE1BQU0sQ0FBQyxXQUFXO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLEVBQUU7WUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFBO1NBQzNCO1FBQ0QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFBO0lBQ3RCLENBQUM7SUFFTSxNQUFNLENBQUMsU0FBUyxDQUFFLE9BQWlCO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUM5QyxDQUFDO0lBRU0sTUFBTSxDQUFDLFNBQVMsQ0FBRSxNQUFjO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBRU0sU0FBUyxDQUFFLE9BQWlCO1FBQ2pDLE1BQU0sY0FBYyxHQUFHLElBQUkscUJBQVMsRUFBRSxDQUFBO1FBRXRDOztlQUVPO1FBQ1AsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFDLGVBQWU7UUFDeEMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFBLENBQUMsb0JBQW9CO1FBRWhFOztlQUVPO1FBQ1AsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQ2hDLGNBQWMsQ0FBQyxPQUFPLENBQ3BCLFlBQVksQ0FBQyxJQUFJLEtBQUssbUJBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNqRCxDQUFBO1lBRUQsZ0dBQWdHO1lBQ2hHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLFlBQVksQ0FBQyxJQUFJLEtBQUssbUJBQVUsQ0FBQyxRQUFRLEVBQUU7Z0JBQ25HLFlBQVksQ0FBQyxJQUFJLEdBQUcsbUJBQW1CLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQTthQUM1RDtZQUVELGNBQWMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzdDLENBQUMsQ0FBQyxDQUFBO1FBRUYsT0FBTztZQUNMLE1BQU0sRUFBRSxFQUFFO1lBQ1YsTUFBTSxFQUFFLGNBQWMsQ0FBQyxTQUFTLEVBQUU7U0FDbkMsQ0FBQTtJQUNILENBQUM7SUFFTSxTQUFTLENBQUUsTUFBYztRQUM5QixNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUE7UUFDM0IsTUFBTSxlQUFlLEdBQUcsSUFBSSxtQkFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBRTVDLE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQSxDQUFDLGVBQWU7UUFDN0QsTUFBTSxVQUFVLEdBQUcsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFBLENBQUMsZUFBZTtRQUU1RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25DLE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtZQUM1QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsU0FBUyxDQUEwQixDQUFBO1lBRXpELE1BQU0sWUFBWSxHQUFHO2dCQUNuQixJQUFJO2dCQUNKLElBQUksRUFBRSxlQUFlLENBQUMsVUFBVSxFQUFFLENBQUMscUNBQXFDO2FBQ3pFLENBQUE7WUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO1NBQzFCO1FBRUQsT0FBTztZQUNMLE1BQU0sRUFBRSxFQUFFO1lBQ1YsSUFBSSxFQUFFLE1BQU07U0FDYixDQUFBO0lBQ0gsQ0FBQztDQUNGO0FBM0VELDhDQTJFQyJ9