Move ControlPanel to within RealtimeScore to reduce complexity.

This commit is contained in:
Patrick Fairbank
2020-04-04 15:52:49 -07:00
parent a6109a978a
commit 0ed6f771d5
6 changed files with 12 additions and 46 deletions

View File

@@ -82,7 +82,7 @@ func (web *Web) scoringPanelWebsocketHandler(w http.ResponseWriter, r *http.Requ
// Subscribe the websocket to the notifiers whose messages will be passed on to the client, in a separate goroutine.
go ws.HandleNotifiers(web.arena.MatchLoadNotifier, web.arena.MatchTimeNotifier, web.arena.RealtimeScoreNotifier,
web.arena.ControlPanelColorNotifier, web.arena.ReloadDisplaysNotifier)
web.arena.ReloadDisplaysNotifier)
// Loop, waiting for commands and responding to them, until the client closes the connection.
for {
@@ -192,17 +192,12 @@ func (web *Web) scoringPanelWebsocketHandler(w http.ResponseWriter, r *http.Requ
scoreChanged = true
case "K":
if score.ControlPanelStatus == game.ControlPanelRotation {
var controlPanel *game.ControlPanel
if alliance == "red" {
controlPanel = web.arena.RedControlPanel
} else {
controlPanel = web.arena.BlueControlPanel
}
controlPanel := &(*realtimeScore).ControlPanel
controlPanel.CurrentColor++
if controlPanel.CurrentColor == 5 {
controlPanel.CurrentColor = 1
}
web.arena.ControlPanelColorNotifier.Notify()
scoreChanged = true
}
case "P":
if score.ControlPanelStatus == game.ControlPanelPosition {

View File

@@ -50,11 +50,9 @@ func TestScoringPanelWebsocket(t *testing.T) {
readWebsocketType(t, redWs, "matchLoad")
readWebsocketType(t, redWs, "matchTime")
readWebsocketType(t, redWs, "realtimeScore")
readWebsocketType(t, redWs, "controlPanelColor")
readWebsocketType(t, blueWs, "matchLoad")
readWebsocketType(t, blueWs, "matchTime")
readWebsocketType(t, blueWs, "realtimeScore")
readWebsocketType(t, blueWs, "controlPanelColor")
// Send some autonomous period scoring commands.
web.arena.MatchState = field.AutoPeriod
@@ -109,13 +107,9 @@ func TestScoringPanelWebsocket(t *testing.T) {
web.arena.ResetMatch()
web.arena.LoadTestMatch()
readWebsocketType(t, redWs, "matchLoad")
messages := readWebsocketMultiple(t, redWs, 2)
assert.Contains(t, messages, "realtimeScore")
assert.Contains(t, messages, "controlPanelColor")
readWebsocketType(t, redWs, "realtimeScore")
readWebsocketType(t, blueWs, "matchLoad")
messages = readWebsocketMultiple(t, blueWs, 2)
assert.Contains(t, messages, "realtimeScore")
assert.Contains(t, messages, "controlPanelColor")
readWebsocketType(t, blueWs, "realtimeScore")
assert.Equal(t, field.NewRealtimeScore(), web.arena.RedRealtimeScore)
assert.Equal(t, field.NewRealtimeScore(), web.arena.BlueRealtimeScore)
assert.Equal(t, 0, web.arena.ScoringPanelRegistry.GetNumScoreCommitted("red"))