UNPKG

@skullandbonestools/snbdata

Version:

Inofficial data package for the Skull and Bones game by Ubisoft.

45 lines 1.84 kB
import materialsData from "../../data/materials.json"; import { Events } from "./events"; import { Factions } from "./factions"; export class Material { constructor(id, rarity, category, requiredRank, faction, event, deprecated) { this.id = id; this.rarity = rarity; this.category = category; this.requiredRank = requiredRank; this.faction = faction; this.event = event; this.deprecated = deprecated; } static fromRawData(key, rawData) { const faction = rawData.faction; const event = rawData.event; return new Material(key, rawData.rarity, rawData.category, rawData.requiredRank ?? undefined, faction ? Factions[faction] : undefined, event ? Events[event] : undefined, rawData.deprecated ?? false); } 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