From 3927cbbc2c96fd3dfcdeaaf6b33eb0da311053d7 Mon Sep 17 00:00:00 2001 From: Trevor Slocum Date: Fri, 15 Dec 2023 12:55:07 -0800 Subject: [PATCH] Roll automatically when it is not possible to double Resolves #6. --- pkg/server/server.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/pkg/server/server.go b/pkg/server/server.go index 615e355..cc4a3a8 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -1436,6 +1436,32 @@ COMMANDS: }) } else { clientGame.NextTurn(false) + if clientGame.Winner == 0 { + gameState := &bgammon.GameState{ + Game: clientGame.Game, + PlayerNumber: clientGame.Turn, + Available: clientGame.LegalMoves(false), + } + if !gameState.MayDouble() { + if !clientGame.roll(clientGame.Turn) { + cmd.client.Terminate("Server error") + opponent.Terminate("Server error") + continue + } + clientGame.eachClient(func(client *serverClient) { + ev := &bgammon.EventRolled{ + Roll1: clientGame.Roll1, + Roll2: clientGame.Roll2, + } + if clientGame.Turn == 1 { + ev.Player = gameState.Player1.Name + } else { + ev.Player = gameState.Player2.Name + } + client.sendEvent(ev) + }) + } + } } clientGame.eachClient(func(client *serverClient) {