UNPKG

warframe-worldstate-parser

Version:

An Open parser for Warframe's Worldstate in Javascript

80 lines (79 loc) 1.96 kB
import { WorldStateObject } from "./WorldStateObject.mjs"; import { languageDesc, languageString, translateCalendarEvent, translateSeason } from "warframe-worldstate-data/utilities"; //#region lib/models/Calendar.ts /** * Event data for a 1999 calendar day */ var DayEvent = class { type; challenge; upgrade; reward; dialogueName; dialogueConvo; /** * @param event raw event data */ constructor(event) { this.type = translateCalendarEvent(event.type); if (event.challenge) this.challenge = this.eventDescription(event.challenge); if (event.upgrade) this.upgrade = this.eventDescription(event.upgrade); if (event.reward) this.reward = languageString(event.reward); if (event.type === "CET_PLOT") { this.dialogueName = event.dialogueName; this.dialogueConvo = event.dialogueConvo; } } eventDescription(name) { return { title: languageString(name), description: languageDesc(name) }; } }; var Calendar = class extends WorldStateObject { /** * Rewards, Challenges, and Calender events */ days; /** * Current Calender Season */ season; /** * Current loop number */ yearIteration; /** * Version */ version; /** * Player requirements needed to view this calender */ requirements; /** * @param calendar RawCalender data to parse from */ constructor(calendar) { super(calendar); this.days = Array.isArray(calendar.Days) ? calendar.Days.filter(Boolean).map((d) => ({ date: this.getDate(d.day).toISOString(), events: d.events.map((e) => new DayEvent(e)) })) : []; this.season = translateSeason(calendar.Season); this.yearIteration = calendar.YearIteration; this.version = calendar.Version; this.requirements = calendar.UpgradeAvaliabilityRequirements; } /** * Converts number of day to a date in 1999 in UTC */ getDate(day) { const date = new Date(Date.UTC(1999)); date.setUTCDate(date.getUTCDate() + day - 1); return date; } }; //#endregion export { Calendar, DayEvent };