Files
blitzkit/packages/website/src/components/EquipmentManager.tsx
T

68 lines
2.0 KiB
TypeScript
Raw Normal View History

2024-09-22 22:04:03 -05:00
import type { EquipmentPreset } from '@blitzkit/core';
2024-04-06 10:06:59 -05:00
import { Flex } from '@radix-ui/themes';
2024-09-14 19:43:14 -05:00
import { cloneDeep } from 'lodash-es';
2024-09-22 22:04:03 -05:00
import type { EquipmentMatrix } from '../stores/duel';
2024-04-06 10:06:59 -05:00
import { EquipmentButton } from './ModuleButtons/EquipmentButton';
interface EquipmentManagerProps {
preset: EquipmentPreset;
matrix: EquipmentMatrix;
onChange: (matrix: EquipmentMatrix) => void;
}
export function EquipmentManager({
preset,
matrix,
onChange,
}: EquipmentManagerProps) {
return (
<Flex direction="column" gap="2">
{preset.map((equipmentRow, rowIndex) => (
<Flex gap="2" key={rowIndex}>
{equipmentRow.map((equipment, columnIndex) => (
<Flex key={columnIndex}>
<EquipmentButton
equipment={equipment[0]}
style={{
borderTopRightRadius: 0,
borderBottomRightRadius: 0,
}}
2024-04-06 10:06:59 -05:00
selected={matrix[rowIndex][columnIndex] === -1}
onClick={() => {
const draft = cloneDeep(matrix);
if (draft[rowIndex][columnIndex] === -1) {
draft[rowIndex][columnIndex] = 0;
} else {
draft[rowIndex][columnIndex] = -1;
}
onChange(draft);
}}
/>
<EquipmentButton
equipment={equipment[1]}
style={{
borderTopLeftRadius: 0,
borderBottomLeftRadius: 0,
}}
2024-04-06 10:06:59 -05:00
selected={matrix[rowIndex][columnIndex] === 1}
onClick={() => {
const draft = cloneDeep(matrix);
if (draft[rowIndex][columnIndex] === 1) {
draft[rowIndex][columnIndex] = 0;
} else {
draft[rowIndex][columnIndex] = 1;
}
onChange(draft);
}}
/>
</Flex>
))}
</Flex>
))}
</Flex>
);
}