Alarmieren aus Einsatz erstellen Maske Map-Tiles SDS sound: Status J SDS Nachricht: public-User Audio: Es kann nur ein Nutzer gleichzeitig Funken Select in Report und Chat: default value -> OnChange
53 lines
1.8 KiB
TypeScript
53 lines
1.8 KiB
TypeScript
"use client";
|
|
import { usePilotConnectionStore } from "_store/pilot/connectionStore";
|
|
import { useMrtStore } from "_store/pilot/MrtStore";
|
|
import { useEffect, useRef } from "react";
|
|
|
|
export const useSounds = () => {
|
|
const mrtState = useMrtStore((state) => state);
|
|
const { connectedAircraft, selectedStation } = usePilotConnectionStore((state) => state);
|
|
|
|
const setPage = useMrtStore((state) => state.setPage);
|
|
const MRTstatusSoundRef = useRef<HTMLAudioElement>(null);
|
|
const MrtMessageReceivedSoundRef = useRef<HTMLAudioElement>(null);
|
|
|
|
useEffect(() => {
|
|
if (typeof window !== "undefined") {
|
|
MRTstatusSoundRef.current = new Audio("/sounds/MRT-status.mp3");
|
|
MrtMessageReceivedSoundRef.current = new Audio("/sounds/MRT-message-received.mp3");
|
|
MRTstatusSoundRef.current.onended = () => {
|
|
if (!selectedStation || !connectedAircraft?.fmsStatus) return;
|
|
setPage({
|
|
page: "home",
|
|
station: selectedStation,
|
|
fmsStatus: connectedAircraft?.fmsStatus,
|
|
});
|
|
};
|
|
MrtMessageReceivedSoundRef.current.onended = () => {
|
|
if (!selectedStation || !connectedAircraft?.fmsStatus) return;
|
|
if (mrtState.page === "sds") return;
|
|
setPage({
|
|
page: "home",
|
|
station: selectedStation,
|
|
fmsStatus: connectedAircraft?.fmsStatus,
|
|
});
|
|
};
|
|
}
|
|
}, [connectedAircraft?.fmsStatus, selectedStation, setPage, mrtState.page]);
|
|
|
|
const fmsStatus = connectedAircraft?.fmsStatus || "NaN";
|
|
|
|
useEffect(() => {
|
|
if (!connectedAircraft) return;
|
|
if (mrtState.page === "new-status") {
|
|
if (fmsStatus === "J" || fmsStatus === "c") {
|
|
MrtMessageReceivedSoundRef.current?.play();
|
|
} else {
|
|
MRTstatusSoundRef.current?.play();
|
|
}
|
|
} else if (mrtState.page === "sds") {
|
|
MrtMessageReceivedSoundRef.current?.play();
|
|
}
|
|
}, [mrtState, fmsStatus, connectedAircraft, selectedStation]);
|
|
};
|