diff --git a/game.js b/game.js index 4fac0e2..1f914f7 100644 --- a/game.js +++ b/game.js @@ -78,6 +78,7 @@ function handleServerMessage(payload) { if (payload.type === "waiting") { localPlayer = ""; roomId = ""; + multiplayerState = "waiting"; setupGame(); setMultiplayerState("waiting", "Waiting for another player..."); return; @@ -86,6 +87,7 @@ function handleServerMessage(payload) { if (payload.type === "paired") { localPlayer = payload.player; roomId = payload.roomId; + multiplayerState = "paired"; setupGame(); setMultiplayerState("paired", `You are ${localPlayer}. ${currentPlayer} plays first.`); return; @@ -97,6 +99,7 @@ function handleServerMessage(payload) { } if (payload.type === "reset") { + multiplayerState = "paired"; setupGame(); setMultiplayerState("paired", `Game reset. You are ${localPlayer}. ${currentPlayer} plays first.`); return; @@ -147,13 +150,37 @@ function render() { } } - turnBadge.textContent = gameOver ? "Game over" : `${currentPlayer} to play`; + turnBadge.textContent = turnLabel(); turnBadge.className = `turn-badge player-${currentPlayer.toLowerCase()}`; xCapturesElement.textContent = captures.X; oCapturesElement.textContent = captures.O; resetButton.disabled = multiplayerState !== "paired"; } +function turnLabel() { + if (gameOver) { + return "Game over"; + } + + if (multiplayerState === "connecting") { + return "Connecting"; + } + + if (multiplayerState === "waiting") { + return "Waiting"; + } + + if (multiplayerState === "error") { + return "Offline"; + } + + if (currentPlayer === localPlayer) { + return `Your turn (${localPlayer})`; + } + + return `${currentPlayer} to play`; +} + function canPlayCell(row, col) { return multiplayerState === "paired" && !gameOver && @@ -347,4 +374,3 @@ resetButton.addEventListener("click", () => { setupGame(); connectToServer(); -