t2-mapper/src/components/InspectorControls.tsx

118 lines
2.9 KiB
TypeScript
Raw Normal View History

2025-11-25 23:44:37 -08:00
import { useControls, useDebug, useSettings } from "./SettingsProvider";
2025-12-02 16:58:35 -08:00
import { MissionSelect } from "./MissionSelect";
2025-11-13 22:55:58 -08:00
export function InspectorControls({
missionName,
2025-12-14 11:06:57 -08:00
missionType,
2025-11-13 22:55:58 -08:00
onChangeMission,
}: {
missionName: string;
2025-12-14 11:06:57 -08:00
missionType: string;
onChangeMission: ({
missionName,
missionType,
}: {
missionName: string;
missionType: string;
}) => void;
2025-11-13 22:55:58 -08:00
}) {
const {
fogEnabled,
setFogEnabled,
fov,
setFov,
2025-11-15 16:33:18 -08:00
audioEnabled,
setAudioEnabled,
2025-12-01 22:33:12 -08:00
animationEnabled,
setAnimationEnabled,
} = useSettings();
2025-11-25 23:44:37 -08:00
const { speedMultiplier, setSpeedMultiplier } = useControls();
const { debugMode, setDebugMode } = useDebug();
2025-11-13 22:55:58 -08:00
return (
2025-11-14 00:15:28 -08:00
<div
id="controls"
2025-11-14 22:46:58 -08:00
onKeyDown={(e) => e.stopPropagation()}
2025-11-14 00:15:28 -08:00
onPointerDown={(e) => e.stopPropagation()}
onClick={(e) => e.stopPropagation()}
>
2025-12-14 11:06:57 -08:00
<MissionSelect
value={missionName}
missionType={missionType}
onChange={onChangeMission}
/>
2025-11-13 22:55:58 -08:00
<div className="CheckboxField">
<input
id="fogInput"
type="checkbox"
checked={fogEnabled}
onChange={(event) => {
setFogEnabled(event.target.checked);
2025-11-13 22:55:58 -08:00
}}
/>
<label htmlFor="fogInput">Fog?</label>
</div>
2025-11-15 16:33:18 -08:00
<div className="CheckboxField">
<input
id="audioInput"
type="checkbox"
checked={audioEnabled}
onChange={(event) => {
setAudioEnabled(event.target.checked);
}}
/>
<label htmlFor="audioInput">Audio?</label>
</div>
2025-12-01 22:33:12 -08:00
<div className="CheckboxField">
<input
id="animationInput"
type="checkbox"
checked={animationEnabled}
onChange={(event) => {
setAnimationEnabled(event.target.checked);
}}
/>
<label htmlFor="animationInput">Animation?</label>
</div>
2025-11-19 02:21:55 -05:00
<div className="CheckboxField">
<input
id="debugInput"
type="checkbox"
checked={debugMode}
onChange={(event) => {
setDebugMode(event.target.checked);
}}
/>
<label htmlFor="debugInput">Debug?</label>
</div>
<div className="Field">
<label htmlFor="fovInput">FOV</label>
<input
2025-12-01 22:33:12 -08:00
id="fovInput"
type="range"
min={75}
max={120}
step={5}
value={fov}
onChange={(event) => setFov(parseInt(event.target.value))}
/>
<output htmlFor="speedInput">{fov}</output>
</div>
<div className="Field">
<label htmlFor="speedInput">Speed</label>
<input
id="speedInput"
type="range"
min={0.1}
max={5}
step={0.05}
value={speedMultiplier}
onChange={(event) =>
setSpeedMultiplier(parseFloat(event.target.value))
}
/>
</div>
2025-11-13 22:55:58 -08:00
</div>
);
}