update: stabilize repair mission stage mounting
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import { RepairGame } from "@/components/three/gameplay/RepairGame";
|
||||
import { useGameStore } from "@/managers/stores/useGameStore";
|
||||
import type { RepairMissionId } from "@/types/gameplay/repairMission";
|
||||
import type { Vector3Tuple } from "@/types/three/three";
|
||||
|
||||
interface StageAnchorProps {
|
||||
@@ -8,6 +9,26 @@ interface StageAnchorProps {
|
||||
scale?: number;
|
||||
}
|
||||
|
||||
interface GameRepairZone {
|
||||
mission: RepairMissionId;
|
||||
position: Vector3Tuple;
|
||||
}
|
||||
|
||||
const GAME_REPAIR_ZONES = [
|
||||
{
|
||||
mission: "bike",
|
||||
position: [8, 0, -6],
|
||||
},
|
||||
{
|
||||
mission: "pylone",
|
||||
position: [64, 0, -66],
|
||||
},
|
||||
{
|
||||
mission: "ferme",
|
||||
position: [-24, 0, 42],
|
||||
},
|
||||
] as const satisfies readonly GameRepairZone[];
|
||||
|
||||
function StageAnchor({
|
||||
color,
|
||||
position,
|
||||
@@ -30,16 +51,21 @@ function StageAnchor({
|
||||
export function GameStageContent(): React.JSX.Element {
|
||||
const mainState = useGameStore((state) => state.mainState);
|
||||
|
||||
switch (mainState) {
|
||||
case "intro":
|
||||
return <StageAnchor color="#7dd3fc" position={[0, 4, 0]} />;
|
||||
case "bike":
|
||||
return <RepairGame mission="bike" position={[8, 0, -6]} />;
|
||||
case "pylone":
|
||||
return <RepairGame mission="pylone" position={[64, 0, -66]} />;
|
||||
case "ferme":
|
||||
return <RepairGame mission="ferme" position={[-24, 0, 42]} />;
|
||||
case "outro":
|
||||
return <StageAnchor color="#fb7185" position={[0, 6, 10]} scale={1.25} />;
|
||||
}
|
||||
return (
|
||||
<>
|
||||
{mainState === "intro" ? (
|
||||
<StageAnchor color="#7dd3fc" position={[0, 4, 0]} />
|
||||
) : null}
|
||||
{GAME_REPAIR_ZONES.map((zone) => (
|
||||
<RepairGame
|
||||
key={zone.mission}
|
||||
mission={zone.mission}
|
||||
position={zone.position}
|
||||
/>
|
||||
))}
|
||||
{mainState === "outro" ? (
|
||||
<StageAnchor color="#fb7185" position={[0, 6, 10]} scale={1.25} />
|
||||
) : null}
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user