Files
La-Fabrik/src/managers/stores/useRepairTransitionStore.ts
T
2026-06-02 00:23:43 +02:00

34 lines
1.3 KiB
TypeScript

import { create } from "zustand";
import type { MissionStep, RepairMissionId } from "@/types/gameplay/repairMission";
import type { Vector3Tuple } from "@/types/three/three";
export interface RepairPendingCompletion {
mission: RepairMissionId;
/** Next step to set. When it equals "done", completeMission() is called
* instead (ebike / farm have no further narrative sub-step). */
nextStep: MissionStep;
}
interface RepairTransitionState {
/** Set when the repair game reaches "done". page.tsx reads this and
* executes the completion only after the world has fully re-loaded. */
pendingCompletion: RepairPendingCompletion | null;
/** Player 3D position captured just before entering the repair scene,
* used to re-spawn the player at the correct location on return. */
savedPlayerPosition: Vector3Tuple | null;
}
interface RepairTransitionActions {
setPendingCompletion: (data: RepairPendingCompletion | null) => void;
setSavedPlayerPosition: (pos: Vector3Tuple | null) => void;
}
export const useRepairTransitionStore = create<
RepairTransitionState & RepairTransitionActions
>()((set) => ({
pendingCompletion: null,
savedPlayerPosition: null,
setPendingCompletion: (data) => set({ pendingCompletion: data }),
setSavedPlayerPosition: (pos) => set({ savedPlayerPosition: pos }),
}));