@kitten-science/kitten-scientists
Version:
Add-on for the wonderful incremental browser game: https://kittensgame.com/web/
45 lines • 1.84 kB
JavaScript
import { isNil } from "@oliversalzburg/js-utils/data/nil.js";
import { consumeEntriesPedantic } from "../tools/Entries.js";
import { Jobs } from "../types/index.js";
import { ElectLeaderSettings } from "./ElectLeaderSettings.js";
import { Setting, SettingMax, SettingTrigger } from "./Settings.js";
export class VillageSettings extends Setting {
jobs;
holdFestivals;
hunt;
promoteKittens;
promoteLeader;
electLeader;
constructor(enabled = false, holdFestivals = new Setting(), hunt = new SettingTrigger(false, 0.98), promoteKittens = new SettingTrigger(false, 1), promoteLeader = new Setting(), electLeader = new ElectLeaderSettings()) {
super(enabled);
this.jobs = this.initJobs();
this.holdFestivals = holdFestivals;
this.hunt = hunt;
this.promoteKittens = promoteKittens;
this.promoteLeader = promoteLeader;
this.electLeader = electLeader;
}
initJobs() {
const items = {};
for (const item of Jobs) {
items[item] = new SettingMax(false, 0);
}
return items;
}
load(settings) {
if (isNil(settings)) {
return;
}
super.load(settings);
consumeEntriesPedantic(this.jobs, settings.jobs, (job, item) => {
job.enabled = item?.enabled ?? job.enabled;
job.max = item?.max ?? job.max;
});
this.holdFestivals.enabled = settings.holdFestivals?.enabled ?? this.holdFestivals.enabled;
this.hunt.load(settings.hunt);
this.promoteKittens.enabled = settings.promoteKittens?.enabled ?? this.promoteKittens.enabled;
this.promoteLeader.enabled = settings.promoteLeader?.enabled ?? this.promoteLeader.enabled;
this.electLeader.load(settings.electLeader);
}
}
//# sourceMappingURL=VillageSettings.js.map