warframe-worldstate-parser
Version:
An Open parser for Warframe's Worldstate in Javascript
80 lines (79 loc) • 1.96 kB
JavaScript
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 };