mirror of
https://github.com/Team254/cheesy-arena-lite.git
synced 2026-03-09 13:46:44 -04:00
Move ControlPanel to within RealtimeScore to reduce complexity.
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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"))
|
||||
|
||||
Reference in New Issue
Block a user