import React, { useEffect } from 'react'; import { useGridStore } from '../../store/gridStore'; import { Card, CardContent, CardHeader, CardTitle } from '../ui/card'; import { Button } from '../ui/button'; import { Slider } from '../ui/slider'; import { Play, Pause, SkipBack, SkipForward, ChevronsLeft, ChevronsRight, Film, } from 'lucide-react'; export const PlaybackControls: React.FC = () => { const { steps, currentStep, isPlaying, playbackSpeed, play, pause, reset, nextStep, prevStep, setCurrentStep, setSpeed, } = useGridStore(); useEffect(() => { if (!isPlaying) return; const interval = setInterval(() => { nextStep(); }, playbackSpeed); return () => clearInterval(interval); }, [isPlaying, playbackSpeed, nextStep]); if (steps.length === 0) { return null; } const progress = ((currentStep + 1) / steps.length) * 100; return ( Playback {/* Progress bar */}
{currentStep + 1} {steps.length}
{/* Control buttons */}
{/* Speed control */} setSpeed(parseInt(e.target.value))} /> {/* Current step info */} {steps[currentStep] && (
Position

({steps[currentStep].currentNode.x}, {steps[currentStep].currentNode.y})

Cost

{steps[currentStep].pathCost}

Frontier

{steps[currentStep].frontier.length}

Explored

{steps[currentStep].explored.length}

)} ); }; export default PlaybackControls;