import React, { useEffect, useState } from 'react'; import Map3D from './components/Map3D'; import ControlPanel from './components/ControlPanel'; import VoiceControl from './components/VoiceControl'; import StatsPanel from './components/StatsPanel'; import GroupsPanel from './components/GroupsPanel'; import TaskPanel from './components/TaskPanel'; import PathRecorder from './components/PathRecorder'; import MiningAreasPanel from './components/MiningAreasPanel'; import { useTurtleStore } from './store/turtleStore'; import './App.css'; function App() { const connect = useTurtleStore((state) => state.connect); const [view, setView] = useState('split'); // 'split', 'map', 'panel' const [panelTab, setPanelTab] = useState('control'); // 'control', 'voice', 'stats', 'groups', 'tasks', 'paths', 'areas' const turtles = useTurtleStore((state) => state.getTurtleArray()); const selectedTurtle = useTurtleStore((state) => state.getSelectedTurtle()); useEffect(() => { connect(); }, [connect]); const renderPanelContent = () => { const apiUrl = 'http://localhost:3001'; const wsUrl = 'ws://localhost:3002'; switch (panelTab) { case 'control': return ; case 'voice': return ; case 'stats': return ; case 'groups': return ; case 'tasks': return ; case 'paths': return ; case 'areas': return ; default: return ; } }; return (
{(view === 'split' || view === 'map') && (
)} {(view === 'split' || view === 'panel') && (
{renderPanelContent()}
)}
); } export default App;