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