import { useBackend, useSharedState } from '../backend';
import { Box, Button, LabeledList, ProgressBar, Section, Tabs, Stack } from '../components';
import { Window } from '../layouts';
import { sortBy, filter } from 'common/collections';
export const ICPrinter = (props, context) => {
const { act, data } = useBackend(context);
const { metal, max_metal, metal_per_sheet, debug, upgraded, can_clone, assembly_to_clone, categories } = data;
return (
{metal / metal_per_sheet} / {max_metal / metal_per_sheet} sheets
{upgraded ? 'Advanced' : 'Regular'}
{can_clone ? 'Available' : 'Unavailable'}
Note: A red component name means that the printer must be upgraded to create that component.
);
};
const canBuild = (item, data) => {
if (!item.can_build) {
return false;
}
if (item.cost > data.metal) {
return false;
}
return true;
};
const ICPrinterCategories = (props, context) => {
const { act, data } = useBackend(context);
const { categories, debug } = data;
const [categoryTarget, setcategoryTarget] = useSharedState(context, 'categoryTarget', null);
const selectedCategory = filter((cat) => cat.name === categoryTarget)(categories)[0];
return (
{sortBy((cat) => cat.name)(categories).map((cat) => (
setcategoryTarget(cat.name)}
key={cat.name}>
{cat.name}
))}
{(selectedCategory && (
{sortBy((item) => item.name)(selectedCategory.items).map((item) => (
act('build', { build: item.path })}>
Print
}>
{item.desc}
))}
)) ||
'No category selected.'}
);
};