novaparse
Version:
An EV Nova file parser for NovaJS
115 lines • 3.67 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const NovaResourceBase_1 = require("./NovaResourceBase");
function doImage(d, p, simple) {
var id = d.getInt16(p);
if (id <= 0) {
return null;
}
var o = {
ID: id,
maskID: d.getInt16(p + 2),
setCount: 0,
size: [],
transparency: 0
};
if (!simple) {
o.setCount = d.getInt16(p + 4);
p += 2;
}
o.size = [d.getInt16(p + 4), d.getInt16(p + 6)];
return o;
}
;
// Can not return null
function doImageRequired(d, p, simple) {
var result = doImage(d, p, simple);
if (result == null) {
throw new Error("Required image was null");
}
else {
return result;
}
}
;
function doPos(d, px, py, pz) {
var o = [];
for (var i = 0; i < 4; i++) {
o[i] = [d.getInt16(2 * i + px), d.getInt16(2 * i + py), d.getInt16(2 * i + pz)];
}
return o;
}
class ShanResource extends NovaResourceBase_1.BaseResource {
constructor(resource, idSpace) {
super(resource, idSpace);
var d = this.data;
this.images = {
baseImage: doImageRequired(d, 0, false),
altImage: doImage(d, 12, false),
glowImage: doImage(d, 22, true),
lightImage: doImage(d, 30, true),
weapImage: doImage(d, 38, true),
shieldImage: doImage(d, 64, true)
};
if (this.images.baseImage) {
this.images.baseImage.transparency = d.getInt16(10);
}
var flagN = d.getInt16(46);
this.flags = {
extraFramePurpose: "unknown",
displayEngineGlowWhenTurning: false,
stopAnimationWhenDisabled: (flagN & 0x10) > 0,
hideAltSpritesWhenDisabled: (flagN & 0x20) > 0,
hideLightsWhenDisabled: (flagN & 0x40) > 0,
unfoldWhenFiring: (flagN & 0x80) > 0,
adjustForOffset: (flagN & 0x100) > 0
};
if (flagN & 0x1)
this.flags.extraFramePurpose = "banking";
if (flagN & 0x2)
this.flags.extraFramePurpose = "folding";
if (flagN & 0x4)
this.flags.extraFramePurpose = "keyCarried";
if (flagN & 0x8)
this.flags.extraFramePurpose = "animation";
if ((flagN & 0x3) == 3) {
this.flags.extraFramePurpose = "banking";
this.flags.displayEngineGlowWhenTurning = true;
}
this.animDelay = d.getInt16(48);
this.weapDecay = d.getInt16(50);
this.framesPer = d.getInt16(52);
this.blink = null;
var modeN = d.getInt16(54);
if (modeN !== -1 && modeN !== 0) {
this.blink = {
mode: "unknown",
a: d.getInt16(56),
b: d.getInt16(58),
c: d.getInt16(60),
d: d.getInt16(62)
};
switch (modeN) {
case 1:
this.blink.mode = "square";
break;
case 2:
this.blink.mode = "triangle";
break;
case 3:
this.blink.mode = "random";
break;
}
}
this.exitPoints = {
gun: doPos(d, 72, 80, 144),
turret: doPos(d, 88, 96, 152),
guided: doPos(d, 104, 112, 160),
beam: doPos(d, 120, 128, 168),
upCompress: [d.getInt16(136), d.getInt16(138)],
downCompress: [d.getInt16(140), d.getInt16(142)]
};
}
}
exports.ShanResource = ShanResource;
//# sourceMappingURL=ShanResource.js.map