From 237a0d03455604e46d78919867c83919fee8697f Mon Sep 17 00:00:00 2001 From: Settel Date: Fri, 3 Dec 2021 18:36:19 +0100 Subject: [PATCH] calculate number of quotes left/total, send to client --- server/src/game/populateSyncDataCb.go | 27 ++++++++++++++++++++++----- server/src/syncdata/syncdata.go | 12 +++++++----- 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/server/src/game/populateSyncDataCb.go b/server/src/game/populateSyncDataCb.go index 9355fac..025f158 100644 --- a/server/src/game/populateSyncDataCb.go +++ b/server/src/game/populateSyncDataCb.go @@ -9,14 +9,31 @@ func (gm *Game) populateSyncDataCb(syncData *syncdata.SyncData) { } func (gm *Game) populateGameInfo() syncdata.GameInfo { + numQuotesLeft, numQuotesTotal := gm.countQuotes() + gm.mu.Lock() defer gm.mu.Unlock() return syncdata.GameInfo{ - GameId: gm.id, - State: gm.state, - Phase: gm.phase, - Players: gm.populateGetPlayers(), - Round: gm.populateGetRoundInfo(), + GameId: gm.id, + State: gm.state, + Phase: gm.phase, + Players: gm.populateGetPlayers(), + Round: gm.populateGetRoundInfo(), + NumQuotesLeft: numQuotesLeft, + NumQuotesTotal: numQuotesTotal, } } + +func (gm *Game) countQuotes() (int, int) { + allQuotes := gm.getAllQuotes() + numQuotesLeft := 0 + + for _, q := range allQuotes { + if !q.IsPlayed() { + numQuotesLeft++ + } + } + + return numQuotesLeft, len(allQuotes) +} diff --git a/server/src/syncdata/syncdata.go b/server/src/syncdata/syncdata.go index 06048a0..d386d69 100644 --- a/server/src/syncdata/syncdata.go +++ b/server/src/syncdata/syncdata.go @@ -31,11 +31,13 @@ type RoundInfo struct { } type GameInfo struct { - GameId string `json:"id"` - State string `json:"state"` - Phase string `json:"phase"` - Players []PlayerInfo `json:"players"` - Round *RoundInfo `json:"round"` + GameId string `json:"id"` + State string `json:"state"` + Phase string `json:"phase"` + Players []PlayerInfo `json:"players"` + Round *RoundInfo `json:"round"` + NumQuotesLeft int `json:"numQuotesLeft"` + NumQuotesTotal int `json:"numQuotesTotal"` } type SyncData struct {