27 lines
883 B
TypeScript
27 lines
883 B
TypeScript
import { useEffect } from "react";
|
|
import { playManastormClientCue, stopManastormClientCue } from "./manastormClientCues";
|
|
import { useManastormStore } from "./manastormStore";
|
|
import { useGameStore } from "./store";
|
|
|
|
export function ManastormClientCueBridge() {
|
|
const gameMode = useGameStore((state) => state.gameMode);
|
|
const cueRequest = useManastormStore((state) => state.clientCue);
|
|
|
|
useEffect(() => {
|
|
if (gameMode !== "manastorm" || !cueRequest) return;
|
|
let current = true;
|
|
void playManastormClientCue(cueRequest.cueId).finally(() => {
|
|
if (!current) return;
|
|
const state = useManastormStore.getState();
|
|
if (state.clientCue?.revision === cueRequest.revision) state.clearClientCue();
|
|
});
|
|
return () => {
|
|
current = false;
|
|
};
|
|
}, [cueRequest, gameMode]);
|
|
|
|
useEffect(() => () => stopManastormClientCue(), []);
|
|
|
|
return null;
|
|
}
|