import { EndingOverlay, ExhibitOverlay, GuideSteps, GuideStepsItem, Image, Title, } from '@/components' import Cursor from '@/components/cursor' import { getBackgroundImage, getPublicPath, getStaticImage } from '@/lib/utils' import { useRef, useState } from 'react' import { useNavigate, useParams } from 'react-router-dom' import { useNieerStore, saveNieerStore } from '@/store/nieerStore' import { useCursorController } from '@/hooks/useCursorController' import { usePuzzleAnimation } from '@/contexts/PuzzleAnimationContext' import { setCourseTimeProgress } from '@/lib/utils/api-common' const NieerPlace6 = () => { const navigate = useNavigate() const { moduleName } = useParams<{ moduleName: string }>() const { triggerPuzzleAnimation } = usePuzzleAnimation() const starName = 'nieer' const place = 'place6' const { markExhibitVisited, getVisitedExhibits } = useNieerStore() const [activeExhibitId, setActiveExhibitId] = useState<1 | 2 | null>(null) const [guide1Visible, setGuide1Visible] = useState(false) const [guide1Step, setGuide1Step] = useState(0) const total = 2 const visitedExhibits = getVisitedExhibits(place) const visited = new Set(visitedExhibits) const progressCount = visited.size const completed = progressCount >= total const [endingVisible, setEndingVisible] = useState(false) // 是否已展示过结束语(用于控制“离开场景”按钮出现时机) // 若用户刷新页面且已完成,则默认视为结束语已展示,避免卡住无法离开 const [endingShown, setEndingShown] = useState(() => completed) const endingShownRef = useRef(false) const subtitle = completed ? '已完成' : `${progressCount}/${total}` const { isEnabled } = useCursorController({ initialEnabled: [2], dependencies: { 1: [2], }, visited: visitedExhibits, }) if (!moduleName) return null const exhibitSrcMap: Record<1 | 2, string> = { 1: 'nieer/place6/场景6展品1', 2: 'nieer/place6/场景6展品2', } const handleOpenExhibit = (id: 1 | 2) => { setActiveExhibitId(id) if (id === 1) { setGuide1Step(0) setGuide1Visible(true) } } return (