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 [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 = import.meta.env.VITE_API_URL || `${window.location.protocol}//${window.location.host}`; const wsUrl = import.meta.env.VITE_WS_URL || `${window.location.protocol === 'https:' ? 'wss:' : 'ws:'}//${window.location.host}/ws`; 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 (
{renderPanelContent()}
); } export default App;