warframe-worldstate-parser
Version:
An Open parser for Warframe's Worldstate in Javascript
67 lines (66 loc) • 1.9 kB
JavaScript
import { n as __decorateMetadata, t as __decorate } from "../../decorate-BCC26nnB.mjs";
import { WorldStateObject } from "./WorldStateObject.mjs";
import { DuviriChoice } from "../supporting/DuviriChoice.mjs";
import { Type } from "class-transformer";
import { IsArray, IsString, ValidateNested } from "class-validator";
//#region lib/models/DuviriCycle.ts
const cycleTime = 36e3;
const stateTime = 7200;
const states = [
"sorrow",
"fear",
"joy",
"anger",
"envy"
];
const getStageInfo = () => {
const cycleDelta = (Math.floor(Date.now() / 1e3) - 52) % cycleTime;
const stateInd = Math.floor(cycleDelta / stateTime);
const untilNext = stateTime - cycleDelta % stateTime;
const expiry = new Date(Date.now() + untilNext * 1e3);
expiry.setSeconds(0);
expiry.setMilliseconds(0);
const activation = /* @__PURE__ */ new Date(expiry.getTime() - stateTime * 1e3);
activation.setSeconds(0);
activation.setMilliseconds(0);
return {
state: states[stateInd],
expiry,
activation
};
};
/**
* @typedef {WorldStateObject} DuviriCycle
* @augments {WorldStateObject}
*/
var DuviriCycle = class extends WorldStateObject {
/**
* Current stage key
*/
state;
/**
* Choice options for this Cycle
*/
choices;
/**
* @param duviriChoices The current circuit choices
*/
constructor(duviriChoices) {
super({ _id: { $oid: "duviriCycle0" } });
const { activation, expiry, state } = getStageInfo();
this.activation = activation;
this.expiry = expiry;
this.state = state;
this.choices = duviriChoices;
this.id = `duviriCycle${this.state}${this.expiry.getTime()}`;
}
};
__decorate([IsString(), __decorateMetadata("design:type", String)], DuviriCycle.prototype, "state", void 0);
__decorate([
IsArray(),
ValidateNested({ each: true }),
Type(() => DuviriChoice),
__decorateMetadata("design:type", Array)
], DuviriCycle.prototype, "choices", void 0);
//#endregion
export { DuviriCycle };