feat: camouflage

This commit is contained in:
TrèsAbhi committed 2024-01-25 12:45:13 -06:00
1 parent 38870ca3f7
commit 561b59d235
7 files changed
+81 -41

No files matched your search

@@ -0,0 +1,28 @@
import { Flex, Heading } from '@radix-ui/themes';
import { ModuleButton } from '../../../../../../../components/ModuleButton';
import {
mutateTankopediaTemporary,
useTankopediaTemporary,
} from '../../../../../../../stores/tankopedia';
export function Camouflage() {
const camouflage = useTankopediaTemporary((state) => state.camouflage);
return (
<Flex gap="2" direction="column">
<Heading size="4">Camouflage</Heading>
<ModuleButton
selected={camouflage}
first
last
type="camouflage"
onClick={() => {
mutateTankopediaTemporary((draft) => {
draft.camouflage = !camouflage;
});
}}
/>
</Flex>
);
}
@@ -1,4 +1,5 @@
import { Flex, Heading } from '@radix-ui/themes';
import { Camouflage } from './components/Camouflage';
import { Consumables } from './components/Consumables';
import { Equipments } from './components/Equipments';
import { Modules } from './components/Modules';
@@ -12,6 +13,7 @@ export function Configure() {
<Modules />
<Equipments />
<Consumables />
<Camouflage />
</Flex>
{/*
@@ -19,10 +21,6 @@ export function Configure() {
<Heading size="5">Camouflage</Heading>
</Flex>
<Flex gap="4" direction="column">
<Heading size="5">Consumables</Heading>
</Flex>
<Flex gap="4" direction="column">
<Heading size="5">Provisions</Heading>
</Flex> */}
+10 -1
View File
@@ -25,6 +25,9 @@ type ModuleButtonProps = Omit<ComponentProps<typeof Button>, 'type'> & {
type: 'consumable';
consumable: number;
}
| {
type: 'camouflage';
}
);
export function ModuleButton({
@@ -49,6 +52,10 @@ export function ModuleButton({
imageStyles.top = '50%';
imageStyles.left = '50%';
imageStyles.transform = 'translate(calc(-50% + 2px), calc(-50% + 2px))';
} else if (props.type === 'camouflage') {
imageStyles.top = '50%';
imageStyles.left = '50%';
imageStyles.transform = 'translate(calc(-50% + 4px), calc(-50% + 4px))';
}
return (
@@ -80,7 +87,9 @@ export function ModuleButton({
? `icons/shells/${props.shell}.webp`
: props.type === 'consumable'
? `icons/consumables/${props.consumable}.webp`
: `icons/equipment/${props.equipment}.webp`,
: props.type === 'camouflage'
? `icons/camo.webp`
: `icons/equipment/${props.equipment}.webp`,
)}
style={imageStyles}
/>
+2
View File
@@ -58,6 +58,7 @@ interface TankopediaTemporary {
equipmentMatrix: EquipmentMatrix;
mode: TankopediaMode;
consumables: number[];
camouflage: boolean;
}
export const useTankopediaPersistent = create<TankopediaPersistent>()(
@@ -106,6 +107,7 @@ export const useTankopediaTemporary = create<TankopediaTemporary>()(
],
mode: 'model',
consumables: [],
camouflage: false,
})),
);