mirror of
https://github.com/randyjc/Rahoot.git
synced 2026-03-13 20:15:35 +01:00
clean resume state when pausing game
This commit is contained in:
@@ -314,6 +314,10 @@ class Game {
|
|||||||
players: this.players,
|
players: this.players,
|
||||||
})
|
})
|
||||||
socket.emit("game:totalPlayers", this.players.length)
|
socket.emit("game:totalPlayers", this.players.length)
|
||||||
|
if (this.breakActive) {
|
||||||
|
socket.emit("manager:break", true)
|
||||||
|
socket.emit("game:break", true)
|
||||||
|
}
|
||||||
|
|
||||||
registry.reactivateGame(this.gameId)
|
registry.reactivateGame(this.gameId)
|
||||||
console.log(`Manager reconnected to game ${this.inviteCode}`)
|
console.log(`Manager reconnected to game ${this.inviteCode}`)
|
||||||
@@ -365,6 +369,9 @@ class Game {
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
socket.emit("game:totalPlayers", this.players.length)
|
socket.emit("game:totalPlayers", this.players.length)
|
||||||
|
if (this.breakActive) {
|
||||||
|
socket.emit("game:break", true)
|
||||||
|
}
|
||||||
console.log(
|
console.log(
|
||||||
`Player ${player.username} reconnected to game ${this.inviteCode}`
|
`Player ${player.username} reconnected to game ${this.inviteCode}`
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ const ManagerGame = () => {
|
|||||||
useManagerStore()
|
useManagerStore()
|
||||||
const { setQuestionStates } = useQuestionStore()
|
const { setQuestionStates } = useQuestionStore()
|
||||||
const [cooldownPaused, setCooldownPaused] = useState(false)
|
const [cooldownPaused, setCooldownPaused] = useState(false)
|
||||||
|
const [breakActive, setBreakActive] = useState(false)
|
||||||
const { players } = useManagerStore()
|
const { players } = useManagerStore()
|
||||||
|
|
||||||
useEvent("game:status", ({ name, data }) => {
|
useEvent("game:status", ({ name, data }) => {
|
||||||
@@ -73,6 +74,9 @@ const ManagerGame = () => {
|
|||||||
setCooldownPaused(isPaused)
|
setCooldownPaused(isPaused)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
useEvent("game:break", (active) => setBreakActive(active))
|
||||||
|
useEvent("manager:break", (active) => setBreakActive(active))
|
||||||
|
|
||||||
const handleSkip = () => {
|
const handleSkip = () => {
|
||||||
if (!gameId) {
|
if (!gameId) {
|
||||||
return
|
return
|
||||||
@@ -115,6 +119,11 @@ const ManagerGame = () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const handleBreakToggle = () => {
|
||||||
|
if (!gameId) return
|
||||||
|
socket?.emit("manager:setBreak", { gameId, active: !breakActive })
|
||||||
|
}
|
||||||
|
|
||||||
const handleEndGame = () => {
|
const handleEndGame = () => {
|
||||||
if (!gameId) return
|
if (!gameId) return
|
||||||
socket?.emit("manager:endGame", { gameId })
|
socket?.emit("manager:endGame", { gameId })
|
||||||
@@ -173,6 +182,8 @@ const ManagerGame = () => {
|
|||||||
showPause={
|
showPause={
|
||||||
status?.name === STATUS.SHOW_QUESTION || status?.name === STATUS.SELECT_ANSWER
|
status?.name === STATUS.SHOW_QUESTION || status?.name === STATUS.SELECT_ANSWER
|
||||||
}
|
}
|
||||||
|
onBreakToggle={handleBreakToggle}
|
||||||
|
breakActive={breakActive}
|
||||||
onEnd={handleEndGame}
|
onEnd={handleEndGame}
|
||||||
players={players}
|
players={players}
|
||||||
manager
|
manager
|
||||||
|
|||||||
@@ -21,6 +21,8 @@ type Props = PropsWithChildren & {
|
|||||||
onEnd?: () => void
|
onEnd?: () => void
|
||||||
players?: { id: string; username: string; connected: boolean }[]
|
players?: { id: string; username: string; connected: boolean }[]
|
||||||
manager?: boolean
|
manager?: boolean
|
||||||
|
onBreakToggle?: () => void
|
||||||
|
breakActive?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
const GameWrapper = ({
|
const GameWrapper = ({
|
||||||
@@ -33,6 +35,8 @@ const GameWrapper = ({
|
|||||||
onEnd,
|
onEnd,
|
||||||
players,
|
players,
|
||||||
manager,
|
manager,
|
||||||
|
onBreakToggle,
|
||||||
|
breakActive,
|
||||||
}: Props) => {
|
}: Props) => {
|
||||||
const { isConnected } = useSocket()
|
const { isConnected } = useSocket()
|
||||||
const { player } = usePlayerStore()
|
const { player } = usePlayerStore()
|
||||||
@@ -135,6 +139,17 @@ const GameWrapper = ({
|
|||||||
</Button>
|
</Button>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
{manager && onBreakToggle && (
|
||||||
|
<Button
|
||||||
|
className={clsx("self-end bg-white px-4 text-black!", {
|
||||||
|
"pointer-events-none": isDisabled,
|
||||||
|
})}
|
||||||
|
onClick={onBreakToggle}
|
||||||
|
>
|
||||||
|
{breakActive ? "Resume game" : "Break"}
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
|
|
||||||
{manager && onEnd && (
|
{manager && onEnd && (
|
||||||
<Button className="self-end bg-red-600 px-4" onClick={onEnd}>
|
<Button className="self-end bg-red-600 px-4" onClick={onEnd}>
|
||||||
End game
|
End game
|
||||||
|
|||||||
Reference in New Issue
Block a user