UNPKG

patchwork-mapconverter

Version:

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

89 lines 7.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CamerasTranslator = void 0; const HexBuffer_1 = require("../HexBuffer"); const W3Buffer_1 = require("../W3Buffer"); class CamerasTranslator { constructor() { } static getInstance() { if (this.instance == null) { this.instance = new this(); } return this.instance; } static jsonToWar(cameras) { return this.getInstance().jsonToWar(cameras); } static warToJson(buffer) { return this.getInstance().warToJson(buffer); } jsonToWar(cameras) { const outBufferToWar = new HexBuffer_1.HexBuffer(); /* * Header */ outBufferToWar.addInt(0); // file version outBufferToWar.addInt(cameras?.length || 0); // number of cameras /* * Body */ cameras?.forEach((camera) => { outBufferToWar.addFloat(camera.target.x); outBufferToWar.addFloat(camera.target.y); outBufferToWar.addFloat(camera.offsetZ); outBufferToWar.addFloat(camera.rotation != null ? camera.rotation : 0); // optional outBufferToWar.addFloat(camera.aoa); outBufferToWar.addFloat(camera.distance); outBufferToWar.addFloat(camera.roll != null ? camera.roll : 0); outBufferToWar.addFloat(camera.fov); outBufferToWar.addFloat(camera.farClipping); outBufferToWar.addFloat(100); // (?) unknown - usually set to 100 // Camera name - must be null-terminated outBufferToWar.addString(camera.name); }); return { errors: [], buffer: outBufferToWar.getBuffer() }; } warToJson(buffer) { const result = []; const outBufferToJSON = new W3Buffer_1.W3Buffer(buffer); const fileVersion = outBufferToJSON.readInt(); // File version const numCameras = outBufferToJSON.readInt(); // # of cameras for (let i = 0; i < numCameras; i++) { const camera = { target: { x: 0, y: 0 }, offsetZ: 0, rotation: 0, aoa: 0, distance: 0, roll: 0, fov: 0, farClipping: 0, name: '' }; camera.target.x = outBufferToJSON.readFloat(); camera.target.y = outBufferToJSON.readFloat(); camera.offsetZ = outBufferToJSON.readFloat(); camera.rotation = outBufferToJSON.readFloat(); camera.aoa = outBufferToJSON.readFloat(); // angle of attack camera.distance = outBufferToJSON.readFloat(); camera.roll = outBufferToJSON.readFloat(); camera.fov = outBufferToJSON.readFloat(); // field of view camera.farClipping = outBufferToJSON.readFloat(); outBufferToJSON.readFloat(); // consume this unknown float field camera.name = outBufferToJSON.readString(); result.push(camera); } return { errors: [], json: result }; } } exports.CamerasTranslator = CamerasTranslator; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FtZXJhc1RyYW5zbGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvd2MzbWFwdHJhbnNsYXRvci90cmFuc2xhdG9ycy9DYW1lcmFzVHJhbnNsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw0Q0FBd0M7QUFDeEMsMENBQXNDO0FBS3RDLE1BQWEsaUJBQWlCO0lBRzVCLGdCQUF3QixDQUFDO0lBRWxCLE1BQU0sQ0FBQyxXQUFXO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLEVBQUU7WUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFBO1NBQzNCO1FBQ0QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFBO0lBQ3RCLENBQUM7SUFFTSxNQUFNLENBQUMsU0FBUyxDQUFFLE9BQWlCO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUM5QyxDQUFDO0lBRU0sTUFBTSxDQUFDLFNBQVMsQ0FBRSxNQUFjO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBRU0sU0FBUyxDQUFFLE9BQWlCO1FBQ2pDLE1BQU0sY0FBYyxHQUFHLElBQUkscUJBQVMsRUFBRSxDQUFBO1FBRXRDOztlQUVPO1FBQ1AsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFDLGVBQWU7UUFDeEMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFBLENBQUMsb0JBQW9CO1FBRWhFOztlQUVPO1FBQ1AsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQzFCLGNBQWMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtZ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