From 251c437f83fdb5be10d5706c2d8747704e6ac816 Mon Sep 17 00:00:00 2001 From: Patrick Fairbank Date: Sun, 3 Aug 2014 21:19:24 -0700 Subject: [PATCH] Made foul addition and deletion trigger realtime score update. --- arena.go | 4 ++-- displays.go | 20 ++++++++++++++------ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/arena.go b/arena.go index c583c03..20d3b17 100644 --- a/arena.go +++ b/arena.go @@ -432,8 +432,8 @@ func (arena *Arena) sendDsPacket(auto bool, enabled bool) { arena.lastDsPacketTime = time.Now() } -func (realtimeScore *RealtimeScore) Score() int { - score := scoreSummary(&realtimeScore.CurrentScore, []Foul{}).Score +func (realtimeScore *RealtimeScore) Score(opponentFouls []Foul) int { + score := scoreSummary(&realtimeScore.CurrentScore, opponentFouls).Score if realtimeScore.CurrentCycle.Truss { score += 10 if realtimeScore.CurrentCycle.Catch { diff --git a/displays.go b/displays.go index 747d33b..07a8dd8 100644 --- a/displays.go +++ b/displays.go @@ -92,8 +92,10 @@ func AudienceDisplayWebsocketHandler(w http.ResponseWriter, r *http.Request) { RedCycle Cycle BlueScore int BlueCycle Cycle - }{mainArena.redRealtimeScore.Score(), mainArena.redRealtimeScore.CurrentCycle, - mainArena.blueRealtimeScore.Score(), mainArena.blueRealtimeScore.CurrentCycle} + }{mainArena.redRealtimeScore.Score(mainArena.blueRealtimeScore.Fouls), + mainArena.redRealtimeScore.CurrentCycle, + mainArena.blueRealtimeScore.Score(mainArena.redRealtimeScore.Fouls), + mainArena.blueRealtimeScore.CurrentCycle} err = websocket.Write("realtimeScore", data) if err != nil { log.Printf("Websocket error: %s", err) @@ -149,8 +151,10 @@ func AudienceDisplayWebsocketHandler(w http.ResponseWriter, r *http.Request) { RedCycle Cycle BlueScore int BlueCycle Cycle - }{mainArena.redRealtimeScore.Score(), mainArena.redRealtimeScore.CurrentCycle, - mainArena.blueRealtimeScore.Score(), mainArena.blueRealtimeScore.CurrentCycle} + }{mainArena.redRealtimeScore.Score(mainArena.blueRealtimeScore.Fouls), + mainArena.redRealtimeScore.CurrentCycle, + mainArena.blueRealtimeScore.Score(mainArena.redRealtimeScore.Fouls), + mainArena.blueRealtimeScore.CurrentCycle} case _, ok := <-scorePostedListener: if !ok { return @@ -280,7 +284,8 @@ func AnnouncerDisplayWebsocketHandler(w http.ResponseWriter, r *http.Request) { data = struct { RedScore int BlueScore int - }{mainArena.redRealtimeScore.Score(), mainArena.blueRealtimeScore.Score()} + }{mainArena.redRealtimeScore.Score(mainArena.blueRealtimeScore.Fouls), + mainArena.blueRealtimeScore.Score(mainArena.redRealtimeScore.Fouls)} err = websocket.Write("realtimeScore", data) if err != nil { log.Printf("Websocket error: %s", err) @@ -325,7 +330,8 @@ func AnnouncerDisplayWebsocketHandler(w http.ResponseWriter, r *http.Request) { message = struct { RedScore int BlueScore int - }{mainArena.redRealtimeScore.Score(), mainArena.blueRealtimeScore.Score()} + }{mainArena.redRealtimeScore.Score(mainArena.blueRealtimeScore.Fouls), + mainArena.blueRealtimeScore.Score(mainArena.redRealtimeScore.Fouls)} case _, ok := <-scorePostedListener: if !ok { return @@ -708,6 +714,7 @@ func RefereeDisplayWebsocketHandler(w http.ResponseWriter, r *http.Request) { } else { mainArena.blueRealtimeScore.Fouls = append(mainArena.blueRealtimeScore.Fouls, foul) } + mainArena.realtimeScoreNotifier.Notify(nil) case "deleteFoul": args := struct { Alliance string @@ -737,6 +744,7 @@ func RefereeDisplayWebsocketHandler(w http.ResponseWriter, r *http.Request) { break } } + mainArena.realtimeScoreNotifier.Notify(nil) case "commitMatch": mainArena.redRealtimeScore.FoulsCommitted = true mainArena.blueRealtimeScore.FoulsCommitted = true