import { Text } from "@react-three/drei"; import { RepairCaseObject } from "@/components/three/gameplay/RepairCaseObject"; import { RepairModuleSlot } from "@/components/three/gameplay/RepairModuleSlot"; import { REPAIR_GAME_MODULE_SLOTS, REPAIR_GAME_ZONE_LABEL, REPAIR_GAME_ZONE_ORIGIN, REPAIR_GAME_ZONE_RADIUS, } from "@/data/gameplay/repairGameConfig"; import { useGameStore } from "@/managers/stores/useGameStore"; import { playGameplayDialogueById } from "@/utils/dialogues/playDialogue"; const CASE_CLOSED_STEPS = new Set(["locked", "waiting"]); export function RepairGameZone(): React.JSX.Element { const mainState = useGameStore((state) => state.mainState); const bikeStep = useGameStore((state) => state.bike.currentStep); const setMainState = useGameStore((state) => state.setMainState); const setBikeState = useGameStore((state) => state.setBikeState); const caseOpen = !CASE_CLOSED_STEPS.has(bikeStep); const slotsDisabled = !caseOpen; const inspectRepairCase = (): void => { if (mainState !== "bike") { setMainState("bike"); } if (CASE_CLOSED_STEPS.has(bikeStep)) { setBikeState({ currentStep: "inspected" }); void playGameplayDialogueById("narrateur_ebikecasse"); } }; const markModelSelected = (): void => { if (mainState !== "bike") { setMainState("bike"); } if (bikeStep === "inspected") { setBikeState({ currentStep: "fragmented" }); } }; const markModuleSplit = (): void => { if (mainState !== "bike") { setMainState("bike"); } if (bikeStep === "fragmented") { setBikeState({ currentStep: "scanning" }); void playGameplayDialogueById("narrateur_galetscan"); } }; return ( {REPAIR_GAME_ZONE_LABEL} {REPAIR_GAME_MODULE_SLOTS.map((slot) => ( ))} ); }