UNPKG

@kitten-science/kitten-scientists

Version:

Add-on for the wonderful incremental browser game: https://kittensgame.com/web/

60 lines 2.11 kB
import { difference } from "@oliversalzburg/js-utils/data/array.js"; import { isNil } from "@oliversalzburg/js-utils/data/nil.js"; import { consumeEntriesPedantic } from "../tools/Entries.js"; import { cl } from "../tools/Log.js"; import { Upgrades } from "../types/index.js"; import { SettingTrigger } from "./Settings.js"; export class UpgradeSettingsItem extends SettingTrigger { #upgrade; #$upgrade; get upgrade() { return this.#upgrade; } get $upgrade() { return this.#$upgrade; } set $upgrade(value) { this.#$upgrade = value; } constructor(upgrade, enabled = false) { super(enabled, -1); this.#upgrade = upgrade; } } export class UpgradeSettings extends SettingTrigger { upgrades; constructor(enabled = false) { super(enabled, -1); this.upgrades = this.initUpgrades(); } initUpgrades() { const items = {}; for (const item of Upgrades) { items[item] = new UpgradeSettingsItem(item); } return items; } static validateGame(game, settings) { const inSettings = Object.keys(settings.upgrades); const inGame = game.workshop.upgrades.map(upgrade => upgrade.name); const missingInSettings = difference(inGame, inSettings); const redundantInSettings = difference(inSettings, inGame); for (const upgrade of missingInSettings) { console.warn(...cl(`The workshop upgrade '${upgrade}' is not tracked in Kitten Scientists!`)); } for (const upgrade of redundantInSettings) { console.warn(...cl(`The workshop upgrade '${upgrade}' is not an upgrade in Kittens Game!`)); } } load(settings) { if (isNil(settings)) { return; } super.load(settings); consumeEntriesPedantic(this.upgrades, settings.upgrades, (upgrade, item) => { upgrade.enabled = item?.enabled ?? upgrade.enabled; upgrade.trigger = item?.trigger ?? upgrade.trigger; }); } } //# sourceMappingURL=UpgradeSettings.js.map