feat: consumable max

This commit is contained in:
TrèsAbhi committed 2024-01-25 12:20:34 -06:00
1 parent ad1ad80026
commit cbe7b42fb8
7 files changed
+65 -44

No files matched your search

@@ -21,6 +21,10 @@ export function Configure() {
(state) => state.equipmentMatrix,
);
const consumables = useTankopediaTemporary((state) => state.consumables);
const consumablesList = Object.values(awaitedConsumableDefinitions).filter(
(consumable) =>
checkConsumableInclusivity(consumable, protagonist.tank, protagonist.gun),
);
return (
<Flex gap="4" direction="column">
@@ -94,10 +98,14 @@ export function Configure() {
equipment={equipment[0]}
first
rowChild
selected={equipmentMatrix[rowIndex][columnIndex] === 0}
selected={equipmentMatrix[rowIndex][columnIndex] === -1}
onClick={() => {
mutateTankopediaTemporary((draft) => {
draft.equipmentMatrix[rowIndex][columnIndex] = 0;
if (equipmentMatrix[rowIndex][columnIndex] === -1) {
draft.equipmentMatrix[rowIndex][columnIndex] = 0;
} else {
draft.equipmentMatrix[rowIndex][columnIndex] = -1;
}
});
}}
/>
@@ -109,7 +117,11 @@ export function Configure() {
selected={equipmentMatrix[rowIndex][columnIndex] === 1}
onClick={() => {
mutateTankopediaTemporary((draft) => {
draft.equipmentMatrix[rowIndex][columnIndex] = 1;
if (equipmentMatrix[rowIndex][columnIndex] === 1) {
draft.equipmentMatrix[rowIndex][columnIndex] = 0;
} else {
draft.equipmentMatrix[rowIndex][columnIndex] = 1;
}
});
}}
/>
@@ -121,36 +133,41 @@ export function Configure() {
</Flex>
<Flex gap="2" direction="column">
<Heading size="4">Consumables</Heading>
<Heading size="4">
Consumables (max {protagonist.tank.consumables})
</Heading>
{Object.values(awaitedConsumableDefinitions)
.filter((consumable) =>
checkConsumableInclusivity(
consumable,
protagonist.tank,
protagonist.gun,
),
)
.map((consumable) => (
<ModuleButton
first
last
type="consumable"
consumable={consumable.id}
selected={consumables.includes(consumable.id)}
onClick={() => {
mutateTankopediaTemporary((draft) => {
if (draft.consumables.includes(consumable.id)) {
draft.consumables = draft.consumables.filter(
(id) => id !== consumable.id,
);
} else {
draft.consumables.push(consumable.id);
}
});
}}
/>
))}
<Flex>
{consumablesList.map((consumable, index) => {
const selected = consumables.includes(consumable.id);
return (
<ModuleButton
first={index === 0}
last={index === consumablesList.length - 1}
rowChild
type="consumable"
disabled={
protagonist.tank.consumables === consumables.length &&
!selected
}
consumable={consumable.id}
selected={selected}
onClick={() => {
mutateTankopediaTemporary((draft) => {
if (selected) {
draft.consumables = draft.consumables.filter(
(id) => id !== consumable.id,
);
} else {
draft.consumables.push(consumable.id);
}
});
}}
/>
);
})}
</Flex>
</Flex>
</Flex>