mirror of
https://github.com/Team254/cheesy-arena-lite.git
synced 2026-03-09 21:56:50 -04:00
Added independent referee button to signal field reset.
This commit is contained in:
3
arena.go
3
arena.go
@@ -54,6 +54,7 @@ type RealtimeScore struct {
|
||||
AutoCommitted bool
|
||||
TeleopCommitted bool
|
||||
FoulsCommitted bool
|
||||
FieldReset bool
|
||||
undoAutoScores []Score
|
||||
undoCycles []Cycle
|
||||
}
|
||||
@@ -545,7 +546,7 @@ func (arena *Arena) handleLighting(alliance string, score *RealtimeScore) {
|
||||
}
|
||||
arena.lights.SetAssistGoal(alliance, score.CurrentCycle.Assists)
|
||||
case POST_MATCH:
|
||||
if mainArena.redRealtimeScore.FoulsCommitted && mainArena.blueRealtimeScore.FoulsCommitted {
|
||||
if mainArena.redRealtimeScore.FieldReset && mainArena.blueRealtimeScore.FieldReset {
|
||||
arena.lights.SetFieldReset()
|
||||
} else {
|
||||
arena.lights.ClearGoal(alliance)
|
||||
|
||||
10
displays.go
10
displays.go
@@ -897,6 +897,14 @@ func RefereeDisplayWebsocketHandler(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
cards[strconv.Itoa(args.TeamId)] = args.Card
|
||||
continue
|
||||
case "signalReset":
|
||||
if mainArena.MatchState != POST_MATCH {
|
||||
// Don't allow clearing the field until the match is over.
|
||||
continue
|
||||
}
|
||||
mainArena.redRealtimeScore.FieldReset = true
|
||||
mainArena.blueRealtimeScore.FieldReset = true
|
||||
continue // Don't reload.
|
||||
case "commitMatch":
|
||||
if mainArena.MatchState != POST_MATCH {
|
||||
// Don't allow committing the fouls until the match is over.
|
||||
@@ -904,6 +912,8 @@ func RefereeDisplayWebsocketHandler(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
mainArena.redRealtimeScore.FoulsCommitted = true
|
||||
mainArena.blueRealtimeScore.FoulsCommitted = true
|
||||
mainArena.redRealtimeScore.FieldReset = true
|
||||
mainArena.blueRealtimeScore.FieldReset = true
|
||||
mainArena.scoringStatusNotifier.Notify(nil)
|
||||
default:
|
||||
websocket.WriteError(fmt.Sprintf("Invalid message type '%s'.", messageType))
|
||||
|
||||
@@ -432,10 +432,20 @@ func TestRefereeDisplayWebsocket(t *testing.T) {
|
||||
assert.Equal(t, "red", mainArena.blueRealtimeScore.Cards["1680"])
|
||||
}
|
||||
|
||||
// Test match committing.
|
||||
// Test field reset and match committing.
|
||||
mainArena.MatchState = POST_MATCH
|
||||
ws.Write("commitMatch", foulData)
|
||||
ws.Write("signalReset", nil)
|
||||
time.Sleep(time.Millisecond * 10)
|
||||
assert.True(t, mainArena.redRealtimeScore.FieldReset)
|
||||
assert.True(t, mainArena.blueRealtimeScore.FieldReset)
|
||||
assert.False(t, mainArena.redRealtimeScore.FoulsCommitted)
|
||||
assert.False(t, mainArena.blueRealtimeScore.FoulsCommitted)
|
||||
mainArena.redRealtimeScore.FieldReset = false
|
||||
mainArena.blueRealtimeScore.FieldReset = false
|
||||
ws.Write("commitMatch", nil)
|
||||
readWebsocketType(t, ws, "reload")
|
||||
assert.True(t, mainArena.redRealtimeScore.FieldReset)
|
||||
assert.True(t, mainArena.blueRealtimeScore.FieldReset)
|
||||
assert.True(t, mainArena.redRealtimeScore.FoulsCommitted)
|
||||
assert.True(t, mainArena.blueRealtimeScore.FoulsCommitted)
|
||||
|
||||
|
||||
@@ -77,6 +77,11 @@ var cycleCard = function(cardButton) {
|
||||
$(cardButton).attr("data-card", newCard);
|
||||
};
|
||||
|
||||
// Signals to the teams that they may enter the field.
|
||||
var signalReset = function() {
|
||||
websocket.send("signalReset");
|
||||
};
|
||||
|
||||
// Signals the scorekeeper that foul entry is complete for this match.
|
||||
var commitMatch = function() {
|
||||
websocket.send("commitMatch");
|
||||
|
||||
@@ -60,11 +60,13 @@
|
||||
{{end}}
|
||||
</div>
|
||||
<div class="row text-center">
|
||||
<a class="btn btn-lg btn-default btn-referee btn-referee-wide" onclick="clearFoul();">Clear</a>
|
||||
<a class="btn btn-lg btn-default btn-referee btn-referee-wide" onclick="clearFoul();">Clear Foul</a>
|
||||
<button type="button" class="btn btn-lg btn-success btn-referee btn-referee-wide" id="commit"
|
||||
onclick="commitFoul();">Add Foul</button>
|
||||
</div>
|
||||
<div class="row text-center">
|
||||
<a class="btn btn-lg btn-success btn-referee btn-referee-wide"
|
||||
onclick="signalReset();">Signal Reset</a>
|
||||
<a class="btn btn-lg btn-info btn-referee btn-referee-wide"
|
||||
onclick="commitMatch();">Commit Match</a>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user