mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-12-02 20:43:47 +01:00
48 lines
1.4 KiB
TypeScript
48 lines
1.4 KiB
TypeScript
|
/**
|
||
|
* Initialization and manipulation of the Factions object, which stores data
|
||
|
* about all Factions in the game
|
||
|
*/
|
||
|
import { Faction } from "./Faction";
|
||
|
import { FactionInfos } from "./FactionInfo";
|
||
|
|
||
|
import { IMap } from "../types";
|
||
|
|
||
|
import { Reviver } from "../../utils/JSONReviver";
|
||
|
|
||
|
|
||
|
export let Factions: IMap<Faction> = {};
|
||
|
|
||
|
export function loadFactions(saveString: string): void {
|
||
|
Factions = JSON.parse(saveString, Reviver);
|
||
|
}
|
||
|
|
||
|
export function AddToFactions(faction: Faction) {
|
||
|
const name: string = faction.name;
|
||
|
Factions[name] = faction;
|
||
|
}
|
||
|
|
||
|
export function factionExists(name: string): boolean {
|
||
|
return Factions.hasOwnProperty(name);
|
||
|
}
|
||
|
|
||
|
export function initFactions(bitNode: number=1) {
|
||
|
for (const name in FactionInfos) {
|
||
|
resetFaction(new Faction(name));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//Resets a faction during (re-)initialization. Saves the favor in the new
|
||
|
//Faction object and deletes the old Faction Object from "Factions". Then
|
||
|
//reinserts the new Faction object
|
||
|
export function resetFaction(newFactionObject: Faction) {
|
||
|
if (!(newFactionObject instanceof Faction)) {
|
||
|
throw new Error("Invalid argument 'newFactionObject' passed into resetFaction()");
|
||
|
}
|
||
|
const factionName: string = newFactionObject.name;
|
||
|
if (factionExists(factionName)) {
|
||
|
newFactionObject.favor = Factions[factionName].favor;
|
||
|
delete Factions[factionName];
|
||
|
}
|
||
|
AddToFactions(newFactionObject);
|
||
|
}
|