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