novaparse
Version:
An EV Nova file parser for NovaJS
90 lines • 4.62 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const resourceforkjs_1 = require("resourceforkjs"); // TODO: Add a declaration file
const ResourceHolderBase_1 = require("./ResourceHolderBase");
const BoomResource_1 = require("./resourceParsers/BoomResource");
const DescResource_1 = require("./resourceParsers/DescResource");
const NovaResourceBase_1 = require("./resourceParsers/NovaResourceBase");
const OutfResource_1 = require("./resourceParsers/OutfResource");
const PictResource_1 = require("./resourceParsers/PictResource");
const RledResource_1 = require("./resourceParsers/RledResource");
const ShanResource_1 = require("./resourceParsers/ShanResource");
const ShipResource_1 = require("./resourceParsers/ShipResource");
const SpinResource_1 = require("./resourceParsers/SpinResource");
const SpobResource_1 = require("./resourceParsers/SpobResource");
const SystResource_1 = require("./resourceParsers/SystResource");
const WeapResource_1 = require("./resourceParsers/WeapResource");
// Reads a single plugin or nova file
// Puts results in localIDSpace.
function readNovaFile(filePath, localIDSpace) {
return __awaiter(this, void 0, void 0, function* () {
var rf = yield read(filePath);
//console.log(localIDSpace);
for (let resourceType in ResourceHolderBase_1.NovaResourceType) {
var parser = getParser(resourceType);
for (let id in rf[resourceType]) {
localIDSpace[resourceType][id] = new parser(rf[resourceType][id], localIDSpace);
}
}
});
}
exports.readNovaFile = readNovaFile;
function read(path) {
// Whether or not to use resource fork
var useRF = (path.slice(-5) !== ".ndat");
return resourceforkjs_1.readResourceFork(path, useRF);
}
// Since we're storing subclasses, not instances of subclasses.
// TODO: Fill this out as more are implemented
var parserMap = {};
parserMap[ResourceHolderBase_1.NovaResourceType.bööm] = BoomResource_1.BoomResource;
//parserMap[NovaResourceType.chär] = ;
//parserMap[NovaResourceType.cicn] = ;
//parserMap[NovaResourceType.cölr] = ;
//parserMap[NovaResourceType.crön] = ;
parserMap[ResourceHolderBase_1.NovaResourceType.dësc] = DescResource_1.DescResource;
//parserMap[NovaResourceType.DITL] = ;
//parserMap[NovaResourceType.DLOG] = ;
//parserMap[NovaResourceType.düde] = ;
//parserMap[NovaResourceType.flët] = ;
//parserMap[NovaResourceType.gövt] = ;
//parserMap[NovaResourceType.ïntf] = ;
//parserMap[NovaResourceType.jünk] = ;
//parserMap[NovaResourceType.mïsn] = ;
//parserMap[NovaResourceType.nëbu] = ;
//parserMap[NovaResourceType.öops] = ;
parserMap[ResourceHolderBase_1.NovaResourceType.oütf] = OutfResource_1.OutfResource;
//parserMap[NovaResourceType.përs] = ;
parserMap[ResourceHolderBase_1.NovaResourceType.PICT] = PictResource_1.PictResource;
//parserMap[NovaResourceType.ränk] = ;
//parserMap[NovaResourceType.rlë8] = ;
parserMap[ResourceHolderBase_1.NovaResourceType.rlëD] = RledResource_1.RledResource;
//parserMap[NovaResourceType.röid] = ;
parserMap[ResourceHolderBase_1.NovaResourceType.shän] = ShanResource_1.ShanResource;
parserMap[ResourceHolderBase_1.NovaResourceType.shïp] = ShipResource_1.ShipResource;
//parserMap[NovaResourceType.snd] = ;
parserMap[ResourceHolderBase_1.NovaResourceType.spïn] = SpinResource_1.SpinResource;
parserMap[ResourceHolderBase_1.NovaResourceType.spöb] = SpobResource_1.SpobResource;
//parserMap[NovaResourceType.STR] = ;
//parserMap[NovaResourceType.STRH] = ;
parserMap[ResourceHolderBase_1.NovaResourceType.sÿst] = SystResource_1.SystResource;
//parserMap[NovaResourceType.vers] = ;
parserMap[ResourceHolderBase_1.NovaResourceType.wëap] = WeapResource_1.WeapResource;
function getParser(resourceType) {
if (parserMap[resourceType]) {
return parserMap[resourceType];
}
else {
return NovaResourceBase_1.BaseResource;
//throw new Error("Unknown data type " + resourceType);
}
}
//# sourceMappingURL=readNovaFile.js.map