Skip to content

Commit 661a879

Browse files
committed
timeout in zustand
1 parent 08d3e3a commit 661a879

File tree

2 files changed

+20
-9
lines changed

2 files changed

+20
-9
lines changed

src/main/client/src/feature/game/Game.jsx

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import {
2929
import {
3030
useAuthStore,
3131
useMuteStore,
32+
useTimeoutStore,
3233
} from "src/store.js"
3334
import {
3435
useLayoutStore,
@@ -79,9 +80,10 @@ export function Game() {
7980
function Board({gameState, setGameState}) {
8081
let [cursor_x, setCursor_x] = useState(-1)
8182
let [cursor_y, setCursor_y] = useState(-1)
82-
let [countdown, setCountdown] = useState(9)
83-
let countdownRef = useRef()
84-
countdownRef.current = countdown
83+
let timeout = useTimeoutStore(state => state.timeout)
84+
let setTimeout = useTimeoutStore(state => state.setTimeout)
85+
let timeoutRef = useRef()
86+
timeoutRef.current = timeout
8587
let [ctrlKeyDown, setCtrlKeyDown] = useState(false)
8688
let zoom = useViewStateStore(state => state.zoom)
8789
let {gameId} = useParams()
@@ -110,12 +112,12 @@ function Board({gameState, setGameState}) {
110112
if (intervalIdRef.current) {
111113
clearInterval(intervalIdRef.current)
112114
}
113-
setCountdown(10)
115+
setTimeout(10)
114116
intervalIdRef.current = setInterval(() => {
115-
setCountdown(countdown => countdown - 1)
117+
setTimeout(timeoutRef.current - 1)
116118
}, 1000)
117119

118-
}, [])
120+
}, [setTimeout])
119121

120122
useEffect(() => {
121123
resetCountdown()
@@ -250,9 +252,9 @@ function Board({gameState, setGameState}) {
250252

251253
useEffect(() => {
252254
if (!showMoveNumbers) {
253-
paintLastMove(context, lastMove, countdown)
255+
paintLastMove(context, lastMove, timeout)
254256
}
255-
}, [showMoveNumbers, context, lastMove, countdown])
257+
}, [showMoveNumbers, context, lastMove, timeout])
256258

257259
let onMouseMove = useCallback((e) => {
258260
if (dragging) {
@@ -343,7 +345,7 @@ function Board({gameState, setGameState}) {
343345
if (showMoveNumbers) {
344346
paintMoveNumbers(context, board)
345347
} else {
346-
paintLastMove(context, lastMove, countdownRef.current)
348+
paintLastMove(context, lastMove, timeoutRef.current)
347349
}
348350
if (currentPlayer(gameState) !== auth.name) {
349351
return

src/main/client/src/store.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,12 @@ export const useMuteStore = create(
4545
{ name: "mute-storage" },
4646
)
4747
)
48+
49+
export const useTimeoutStore = create(set => (
50+
{
51+
timeout: 10,
52+
setTimeout: timeout => set({
53+
timeout: timeout,
54+
})
55+
}
56+
))

0 commit comments

Comments
 (0)