@kitten-science/kitten-scientists
Version:
Add-on for the wonderful incremental browser game: https://kittensgame.com/web/
80 lines • 3.18 kB
JavaScript
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