UNPKG

@kitten-science/kitten-scientists

Version:

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

104 lines 3.9 kB
import { isNil } from "@oliversalzburg/js-utils/data/nil.js"; import { consumeEntriesPedantic } from "../tools/Entries.js"; import { ReligionUpgrades, TranscendenceUpgrades, UnicornItemVariant, ZigguratUpgrades, } from "../types/index.js"; import { Setting, SettingThreshold, SettingTrigger, SettingTriggerMax } from "./Settings.js"; export class ReligionSettingsItem extends SettingTriggerMax { #building; #variant; get building() { return this.#building; } get variant() { return this.#variant; } constructor(building, variant, enabled = false) { super(enabled); this.#building = building; this.#variant = variant; } } export class ReligionSettings extends SettingTrigger { buildings; /** * Build best unicorn building first. */ bestUnicornBuilding; bestUnicornBuildingCurrent; /** * Sacrifice alicorns for time crystals. */ sacrificeAlicorns; /** * Sacrifice unicorns for tears. */ sacrificeUnicorns; /** * Refine tears into BLS. */ refineTears; /** * Refine time crystals into relics. */ refineTimeCrystals; /** * Praise the sun. */ autoPraise; /** * Adore the galaxy. */ adore; /** * Transcend. */ transcend; constructor(enabled = false, trigger = -1, bestUnicornBuilding = new Setting(), sacrificeAlicorns = new SettingThreshold(false, -1), sacrificeUnicorns = new SettingThreshold(false, -1), refineTears = new SettingThreshold(false, -1), refineTimeCrystals = new SettingThreshold(false, -1), autoPraise = new SettingTrigger(false, 1), adore = new SettingTrigger(false, 1), transcend = new Setting()) { super(enabled, trigger); this.buildings = this.initBuildings(); this.bestUnicornBuilding = bestUnicornBuilding; this.sacrificeAlicorns = sacrificeAlicorns; this.sacrificeUnicorns = sacrificeUnicorns; this.refineTears = refineTears; this.refineTimeCrystals = refineTimeCrystals; this.autoPraise = autoPraise; this.adore = adore; this.transcend = transcend; this.bestUnicornBuildingCurrent = null; } initBuildings() { const items = {}; for (const item of ReligionUpgrades) { items[item] = new ReligionSettingsItem(item, UnicornItemVariant.OrderOfTheSun); } for (const item of TranscendenceUpgrades) { items[item] = new ReligionSettingsItem(item, UnicornItemVariant.Cryptotheology); } for (const item of ZigguratUpgrades) { items[item] = new ReligionSettingsItem(item, UnicornItemVariant.Ziggurat); } items.unicornPasture = new ReligionSettingsItem("unicornPasture", UnicornItemVariant.UnicornPasture); return items; } load(settings) { if (isNil(settings)) { return; } super.load(settings); consumeEntriesPedantic(this.buildings, settings.buildings, (building, item) => { building.enabled = item?.enabled ?? building.enabled; building.max = item?.max ?? building.max; building.trigger = item?.trigger ?? building.trigger; }); this.bestUnicornBuilding.load(settings.bestUnicornBuilding); this.sacrificeAlicorns.load(settings.sacrificeAlicorns); this.sacrificeUnicorns.load(settings.sacrificeUnicorns); this.refineTears.load(settings.refineTears); this.refineTimeCrystals.load(settings.refineTimeCrystals); this.autoPraise.load(settings.autoPraise); this.adore.load(settings.adore); this.transcend.load(settings.transcend); this.bestUnicornBuildingCurrent = settings.bestUnicornBuildingCurrent ?? this.bestUnicornBuildingCurrent; } } //# sourceMappingURL=ReligionSettings.js.map