mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2026-04-22 09:13:07 +02:00
TYPESAFETY: FactionName (#644)
This commit is contained in:
@@ -1,28 +1,29 @@
|
||||
import type { Faction } from "../Faction/Faction";
|
||||
|
||||
import React from "react";
|
||||
import { Work, WorkType } from "./Work";
|
||||
import { constructorsForReviver, Generic_toJSON, Generic_fromJSON, IReviverValue } from "../utils/JSONReviver";
|
||||
import { Player } from "@player";
|
||||
import { AugmentationName, FactionName, FactionWorkType } from "@enums";
|
||||
import { Factions } from "../Faction/Factions";
|
||||
import { Faction } from "../Faction/Faction";
|
||||
import { applyWorkStats, scaleWorkStats, WorkStats } from "./WorkStats";
|
||||
import { dialogBoxCreate } from "../ui/React/DialogBox";
|
||||
import { Reputation } from "../ui/React/Reputation";
|
||||
import { CONSTANTS } from "../Constants";
|
||||
import { calculateFactionExp, calculateFactionRep } from "./Formulas";
|
||||
import { findEnumMember } from "../utils/helpers/enum";
|
||||
import { getEnumHelper } from "../utils/EnumHelper";
|
||||
|
||||
interface FactionWorkParams {
|
||||
singularity: boolean;
|
||||
factionWorkType: FactionWorkType;
|
||||
faction: string;
|
||||
faction: FactionName;
|
||||
}
|
||||
|
||||
export const isFactionWork = (w: Work | null): w is FactionWork => w !== null && w.type === WorkType.FACTION;
|
||||
|
||||
export class FactionWork extends Work {
|
||||
factionWorkType: FactionWorkType;
|
||||
factionName: string;
|
||||
factionName: FactionName;
|
||||
|
||||
constructor(params?: FactionWorkParams) {
|
||||
super(WorkType.FACTION, params?.singularity ?? true);
|
||||
@@ -31,9 +32,7 @@ export class FactionWork extends Work {
|
||||
}
|
||||
|
||||
getFaction(): Faction {
|
||||
const f = Factions[this.factionName];
|
||||
if (!f) throw new Error(`Faction work started with invalid / unknown faction: '${this.factionName}'`);
|
||||
return f;
|
||||
return Factions[this.factionName];
|
||||
}
|
||||
|
||||
getReputationRate(): number {
|
||||
@@ -92,8 +91,8 @@ export class FactionWork extends Work {
|
||||
/** Initializes a FactionWork object from a JSON save state. */
|
||||
static fromJSON(value: IReviverValue): FactionWork {
|
||||
const factionWork = Generic_fromJSON(FactionWork, value.data);
|
||||
factionWork.factionWorkType =
|
||||
findEnumMember(FactionWorkType, factionWork.factionWorkType) ?? FactionWorkType.hacking;
|
||||
factionWork.factionWorkType = getEnumHelper("FactionWorkType").fuzzyGetMember(factionWork.factionWorkType, true);
|
||||
factionWork.factionName = getEnumHelper("FactionName").fuzzyGetMember(factionWork.factionName, true);
|
||||
return factionWork;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user