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