forked from phenom/healer-man
Update Healer Man server
This commit is contained in:
1 parent
39458d5de6
commit
6cc1b9217f
203 files changed
+133929
-31271
No files matched your search
@@ -0,0 +1,22 @@
|
||||
import { useEffect, useState } from "react";
|
||||
import { useOnlineSessionStore } from "../app/onlineSessionStore";
|
||||
import { useGameStore } from "../game/store";
|
||||
import { useDocumentVisibility } from "../platform/useDocumentVisibility";
|
||||
|
||||
/** Visible timers follow local pause; shared online play continues behind menus. */
|
||||
export function usePresentationClock(active = true): number {
|
||||
const locallyBlocked = useGameStore((state) => state.paused || state.mapOpen || state.companionOpen);
|
||||
const sharedOnline = useOnlineSessionStore((state) => state.snapshot !== null);
|
||||
const visible = useDocumentVisibility();
|
||||
const ticking = active && visible && (sharedOnline || !locallyBlocked);
|
||||
const [now, setNow] = useState(() => Date.now());
|
||||
|
||||
useEffect(() => {
|
||||
if (!ticking) return;
|
||||
setNow(Date.now());
|
||||
const timer = window.setInterval(() => setNow(Date.now()), 100);
|
||||
return () => window.clearInterval(timer);
|
||||
}, [ticking]);
|
||||
|
||||
return now;
|
||||
}
|
||||
Reference in new issue
Block a user