UNPKG

@kitten-science/kitten-scientists

Version:

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

80 lines 3.18 kB
import { isNil } from "@oliversalzburg/js-utils/data/nil.js"; import { consumeEntriesPedantic } from "../tools/Entries.js"; import { Races } from "../types/index.js"; import { EmbassySettings } from "./EmbassySettings.js"; import { Setting, SettingBuySellThreshold, SettingLimitedTrigger, SettingTrigger, } from "./Settings.js"; export class TradeSettingsItem extends SettingLimitedTrigger { #race; seasons; /** * A resource that is required to trade with the race. */ #require; get race() { return this.#race; } get require() { return this.#require; } constructor(race, enabled, limited, summer, autumn, winter, spring, require = false) { super(enabled, limited); this.#race = race; this.seasons = { autumn: new Setting(autumn), spring: new Setting(spring), summer: new Setting(summer), winter: new Setting(winter), }; this.#require = require; } } export class TradeSettings extends SettingTrigger { races; feedLeviathans; buildEmbassies; tradeBlackcoin; unlockRaces; constructor(enabled = false, trigger = -1, buildEmbassies = new EmbassySettings(), feedLeviathans = new Setting(), tradeBlackcoin = new SettingBuySellThreshold(false, 1090.0, 1095.0, 10000), unlockRaces = new Setting()) { super(enabled, trigger); this.races = this.initRaces(); this.buildEmbassies = buildEmbassies; this.feedLeviathans = feedLeviathans; this.tradeBlackcoin = tradeBlackcoin; this.unlockRaces = unlockRaces; } initRaces() { const defaultRequire = { dragons: "titanium", griffins: "wood", leviathans: "unobtainium", lizards: "minerals", sharks: "iron", }; const items = {}; for (const item of Races) { const require = defaultRequire[item] ?? false; items[item] = new TradeSettingsItem(item, false, false, false, false, false, false, require); } return items; } load(settings) { if (isNil(settings)) { return; } super.load(settings); consumeEntriesPedantic(this.races, settings.races, (race, item) => { race.enabled = item?.enabled ?? race.enabled; race.limited = item?.limited ?? race.limited; race.trigger = item?.trigger ?? race.trigger; race.seasons.autumn.enabled = item?.seasons.autumn.enabled ?? race.seasons.autumn.enabled; race.seasons.spring.enabled = item?.seasons.spring.enabled ?? race.seasons.spring.enabled; race.seasons.summer.enabled = item?.seasons.summer.enabled ?? race.seasons.summer.enabled; race.seasons.winter.enabled = item?.seasons.winter.enabled ?? race.seasons.winter.enabled; }); this.buildEmbassies.load(settings.buildEmbassies); this.feedLeviathans.load(settings.feedLeviathans); this.tradeBlackcoin.load(settings.tradeBlackcoin); this.unlockRaces.load(settings.unlockRaces); } } //# sourceMappingURL=TradeSettings.js.map