UNPKG

@kitten-science/kitten-scientists

Version:

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

83 lines 3.85 kB
import { isNil } from "@oliversalzburg/js-utils/data/nil.js"; import { Icons } from "../images/Icons.js"; import { ucfirst } from "../tools/Format.js"; import stylesButton from "./components/Button.module.css"; import { Container } from "./components/Container.js"; import { LabelListItem } from "./components/LabelListItem.js"; import stylesLabelListItem from "./components/LabelListItem.module.css"; import { SettingListItem } from "./components/SettingListItem.js"; import stylesSettingListItem from "./components/SettingListItem.module.css"; import { SettingsList } from "./components/SettingsList.js"; import { SettingsPanel } from "./components/SettingsPanel.js"; import { ConsumeButton } from "./components/buttons/ConsumeButton.js"; import { StockButton } from "./components/buttons/StockButton.js"; export class ResourcesSettingsUi extends SettingsPanel { constructor(host, settings, locale, options) { const label = host.engine.i18n("ui.resources"); super(host, settings, new LabelListItem(host, label, { childrenHead: [new Container(host, { classes: [stylesLabelListItem.fillSpace] })], classes: [stylesSettingListItem.checked, stylesSettingListItem.setting], icon: Icons.Resources, }), options); const ignoredResources = [ "blackcoin", "burnedParagon", "elderBox", "gflops", "hashrates", "kittens", "paragon", "temporalFlux", "wrappingPaper", "zebras", ]; this.addChild(new SettingsList(host, { children: host.game.resPool.resources .filter(item => !ignoredResources.includes(item.name) && !isNil(this.setting.resources[item.name])) .sort((a, b) => a.title.localeCompare(b.title, locale.selected)) .map(resource => [this.setting.resources[resource.name], ucfirst(resource.title)]) .map(([setting, title]) => this._makeResourceSetting(host, setting, locale, title)), })); } /** * Creates a UI element that reflects stock and consume values for a given resource. * This is currently only used for the craft section. * * @param label The title to apply to the option. * @param option The option that is being controlled. * @returns A new option with stock and consume values. */ _makeResourceSetting(host, option, locale, label) { const element = new SettingListItem(host, option, label, { childrenHead: [new Container(host, { classes: [stylesLabelListItem.fillSpace] })], onCheck: () => { host.engine.imessage("status.resource.enable", [label]); }, onUnCheck: () => { host.engine.imessage("status.resource.disable", [label]); }, }); // How many items to stock. const stockElement = new StockButton(host, option, locale, label, { alignment: "right", border: false, classes: [stylesButton.headAction], onRefresh: () => { stockElement.inactive = !option.enabled || option.stock === 0; }, }); element.head.addChild(stockElement); // The consume rate for the resource. const consumeElement = new ConsumeButton(host, option, locale, label, { border: false, classes: [stylesButton.lastHeadAction], onRefresh: () => { consumeElement.inactive = !option.enabled || option.consume !== 100; consumeElement.ineffective = option.enabled && option.consume === 0; }, }); element.head.addChild(consumeElement); return element; } } //# sourceMappingURL=ResourcesSettingsUi.js.map