UNPKG

patchwork-mapconverter

Version:

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

61 lines 5.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.jsonToWar = jsonToWar; exports.warToJson = warToJson; const LoggerFactory_1 = require("../../logging/LoggerFactory"); const HexBuffer_1 = require("../HexBuffer"); const W3Buffer_1 = require("../W3Buffer"); const Asset_1 = require("../data/Asset"); const log = LoggerFactory_1.LoggerFactory.createLogger('AssetsTranslator'); function jsonToWar(imports, formatVersion) { if (formatVersion > 1 || formatVersion < 0) { throw new Error(`Unknown imports list file format version=${formatVersion}, expected 0 or 1`); } const output = new HexBuffer_1.HexBuffer(); output.addInt(formatVersion); output.addInt(imports.length); imports?.forEach((importedFile) => { /** * 0x10 -> unknown (always true since 1.30, probably) * 0x08 -> listed in MPQ listfile? Likely not since in reforged the difference between standard and custom is 0x15 and 0x1D * 0x04 -> isCustom (preferred bitflag) * 0x02 -> unknown (always false) * 0x01 -> isCustom * * The above is my interpretation of debug symbols, but in reality, these flags are a mess in the editor, * due to the devs changing the saved flag values with certain patches without actually bothering to update the format version, * therefore, patchwork will play it safe only set the first bit and forget the rest, since they mean nothing outside of the editor's * inner machniations which are difficult to understand -.- * * Other settings in Asset Manager just add/remove prefixes to the existing filepath like _hd/ or _teen/ or _locale/, * they have no impact on this bitmap (except for forcing custom asset type because of non-standard filepath) */ output.addByte(importedFile.type === Asset_1.AssetType.Custom ? 0x01 : 0x00); // Temporary: always start the file path with war3mapImported\ until other file support is added if (!importedFile.path.startsWith('war3mapImported\\') && importedFile.type === Asset_1.AssetType.Standard) { importedFile.path = `war3mapImported\\${importedFile.path}`; } output.addString(importedFile.path); }); return output.getBuffer(); } function warToJson(buffer) { const input = new W3Buffer_1.W3Buffer(buffer); const formatVersion = input.readInt(); if (formatVersion > 1 || formatVersion < 0) { log.warn(`Unknown asset file format version=${formatVersion}, expected 0 or 1, will attempt reading...`); } else { log.info(`Asset format version is ${formatVersion}.`); } const importCount = input.readInt(); const result = []; for (let i = 0; i < importCount; i++) { result[i] = { type: input.readByte() & 0x01 ? Asset_1.AssetType.Custom : Asset_1.AssetType.Standard, path: input.readString() // e.g. "war3mapImported\mysound.wav" }; } return [result, formatVersion]; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXNzZXRzVHJhbnNsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy93YzNtYXB0cmFuc2xhdG9yL3RyYW5zbGF0b3JzL0Fzc2V0c1RyYW5zbGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFRQSw4QkFrQ0M7QUFFRCw4QkFtQkM7QUEvREQsK0RBQTJEO0FBRTNELDRDQUF3QztBQUN4QywwQ0FBc0M7QUFDdEMseUNBQXFEO0FBRXJELE1BQU0sR0FBRyxHQUFHLDZCQUFhLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLENBQUE7QUFFMUQsU0FBZ0IsU0FBUyxDQUFFLE9BQWdCLEVBQUUsYUFBcUI7SUFDaEUsSUFBSSxhQUFhLEdBQUcsQ0FBQyxJQUFJLGFBQWEsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxhQUFhLG1CQUFtQixDQUFDLENBQUE7SUFDL0YsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFHLElBQUkscUJBQVMsRUFBRSxDQUFBO0lBQzlCLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDNUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDN0IsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1FBQ2hDOzs7Ozs7Ozs7Ozs7OztXQWNHO1FBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxLQUFLLGlCQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBRXBFLGdHQUFnRztRQUNoRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsSUFBSSxZQUFZLENBQUMsSUFBSSxLQUFLLGlCQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkcsWUFBWSxDQUFDLElBQUksR0FBRyxvQkFBb0IsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQzdELENBQUM7UUFDRCxNQUFNLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNyQyxDQUFDLENBQUMsQ0FBQTtJQUVGLE9BQU8sTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFBO0FBQzNCLENBQUM7QUFFRCxTQUFnQixTQUFTLENBQUUsTUFBYztJQUN2QyxNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFRLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDbEMsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQ3JDLElBQUksYUFBYSxHQUFHLENBQUMsSUFBSSxhQUFhLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDM0MsR0FBRyxDQUFDLElBQUksQ0FBQyxxQ0FBcUMsYUFBYSw0Q0FBNEMsQ0FBQyxDQUFBO0lBQzFHLENBQUM7U0FBTSxDQUFDO1FBQ04sR0FBRyxDQUFDLElBQUksQ0FBQywyQkFBMkIsYUFBYSxHQUFHLENBQUMsQ0FBQTtJQUN2RCxDQUFDO0lBRUQsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQ25DLE1BQU0sTUFBTSxHQUFZLEVBQUUsQ0FBQTtJQUMxQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDckMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHO1lBQ1YsSUFBSSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLGlCQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxpQkFBUyxDQUFDLFFBQVE7WUFDckUsSUFBSSxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQyxxQ0FBcUM7U0FDL0QsQ0FBQTtJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFBO0FBQ2hDLENBQUMifQ==