@skullandbonestools/snbdata
Version:
Inofficial data package for the Skull and Bones game by Ubisoft.
41 lines • 1.62 kB
JavaScript
import materialsData from "../../data/materials.json";
import { Factions } from "./factions";
export class Material {
constructor(id, rarity, category, requiredRank, faction) {
this.id = id;
this.rarity = rarity;
this.category = category;
this.requiredRank = requiredRank;
this.faction = faction;
}
static fromRawData(key, rawData) {
const faction = rawData.faction;
return new Material(key, rawData.rarity, rawData.category, rawData.requiredRank ?? undefined, faction ? Factions[faction] : undefined);
}
static updateMaterialWithRequired(key, rawData, materials) {
if (!rawData.raw)
return;
const required = new Map();
for (const [requiredKey, quantity] of Object.entries(rawData.raw)) {
const requiredMaterial = materials[requiredKey];
if (requiredMaterial) {
required.set(requiredMaterial, quantity);
}
}
materials[key].required = required;
}
static loadMaterials() {
const materials = {};
// Load all materials without their required materials
for (const [key, value] of Object.entries(materialsData)) {
materials[key] = Material.fromRawData(key, value);
}
// Load the required materials for each material
for (const [key, value] of Object.entries(materialsData)) {
Material.updateMaterialWithRequired(key, value, materials);
}
return materials;
}
}
export const Materials = Material.loadMaterials();
//# sourceMappingURL=materials.js.map