UNPKG

@skullandbonestools/snbdata

Version:

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

60 lines 2.97 kB
import shipsData from '../../data/ships.json'; import { Contracts } from './contracts'; import { Materials } from './materials'; import { Seasons } from './seasons'; export class Ship { constructor(id, size, type, contract, blueprint, season, hitpoints, braceStrength, braceStrengthRecovery, stamina, baseRank, requiredRank, contact, sailSpeed, cargo, required, slots, perks, dateAdded, lastUpdated) { this.id = id; this.size = size; this.type = type; this.contract = contract; this.blueprint = blueprint; this.season = season; this.hitpoints = hitpoints; this.braceStrength = braceStrength; this.braceStrengthRecovery = braceStrengthRecovery; this.stamina = stamina; this.baseRank = baseRank; this.requiredRank = requiredRank; this.contact = contact; this.sailSpeed = sailSpeed; this.cargo = cargo; this.required = required; this.slots = slots; this.perks = perks; this.dateAdded = dateAdded; this.lastUpdated = lastUpdated; } // Static method to create a Ship instance from raw data static fromRawData(rawData) { const season = rawData.season; const contract = rawData.contract; const required = rawData.required ? new Map() : undefined; if (required) { for (const [requiredKey, quantity] of Object.entries(rawData.required)) { const requiredMaterial = requiredKey; required.set(Materials[requiredMaterial], quantity); } } return new Ship(rawData.id, rawData.size, rawData.type, rawData.contract ? Contracts[contract] : undefined, rawData.blueprint ?? undefined, season ? Seasons[season] : undefined, rawData.hitpoints, rawData.braceStrength, rawData.braceStrengthRecovery, rawData.stamina ?? undefined, rawData.baseRank, rawData.requiredRank ?? undefined, rawData.contact ?? undefined, rawData.sailSpeed, rawData.cargo, required, { attachement: rawData.slots.attachement ?? undefined, frontWeapon: rawData.slots.frontWeapon ?? undefined, leftSideWeapon: rawData.slots.leftSideWeapon ?? undefined, rightSideWeapon: rawData.slots.rightSideWeapon ?? undefined, aftWeapon: rawData.slots.aftWeapon ?? undefined, auxiliaryWeapon: rawData.slots.auxiliaryWeapon ?? undefined, furniture: rawData.slots.furniture ?? undefined, ultimate: rawData.slots.ultimate ?? undefined }, rawData.perks, new Date(rawData.dateAdded), new Date(rawData.lastUpdated)); } // Static method to load all ships from the JSON data static loadShips() { const ships = {}; for (const [key, value] of Object.entries(shipsData)) { ships[key] = Ship.fromRawData(value); } return ships; } } export const Ships = Ship.loadShips(); //# sourceMappingURL=ships.js.map