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.'}
); };