File size: 1,953 Bytes
ce91fab
 
cd1aa63
 
 
 
 
 
 
ce91fab
 
 
 
cd1aa63
 
 
ce91fab
 
 
 
 
 
 
 
 
 
cd1aa63
 
 
 
ce91fab
cd1aa63
ce91fab
cd1aa63
 
 
 
ce91fab
1e30eae
 
 
 
 
 
 
 
 
 
ce91fab
1e30eae
 
 
 
 
 
 
 
 
 
 
 
ce91fab
 
 
 
cd1aa63
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import AltitudeSlider from "./AltitudeSlider";
import FlightSwitch from "./FlightSwitch";
import Joystick from "./Joystick";
import WingSlider from "./WingSlider";

interface FlyControlsProps {
  disabled: boolean;
  joystickRef: React.RefObject<{ x: number; y: number }>;
  wingSlidersRef: React.RefObject<{ left: number; right: number }>;
  flying: boolean;
  onToggleFlying: () => void;
  altitudeLevelIndex: number;
  onAltitudeChange: (index: number) => void;
  size?: "normal" | "large";
}

export default function FlyControls({
  disabled,
  joystickRef,
  wingSlidersRef,
  flying,
  onToggleFlying,
  altitudeLevelIndex,
  onAltitudeChange,
  size = "normal",
}: FlyControlsProps) {
  return (
    <div
      style={{
        display: "flex",
        flexDirection: "column",
        alignItems: "center",
        gap: 12,
        padding: "16px 0",
        borderBottom: "1px solid #2a2d3a",
      }}
    >
      <div style={{ display: "flex", alignItems: "center", justifyContent: "center", gap: 16 }}>
        {!flying && (
          <WingSlider
            label="L wing"
            disabled={disabled}
            size={size}
            onChange={(v) => {
              wingSlidersRef.current.left = v;
            }}
          />
        )}
        <Joystick vectorRef={joystickRef} disabled={disabled} size={size} />
        {flying ? (
          <AltitudeSlider levelIndex={altitudeLevelIndex} disabled={disabled} onChange={onAltitudeChange} size={size} />
        ) : (
          <WingSlider
            label="R wing"
            disabled={disabled}
            size={size}
            onChange={(v) => {
              wingSlidersRef.current.right = v;
            }}
          />
        )}
      </div>
      <div style={{ display: "flex", alignItems: "center", justifyContent: "center", gap: 16 }}>
        <FlightSwitch flying={flying} disabled={disabled} onToggle={onToggleFlying} size={size} />
      </div>
    </div>
  );
}