Skip to content

Commit

Permalink
Show alliance selection timer on team signs.
Browse files Browse the repository at this point in the history
patfair committed Jul 28, 2024
1 parent 5743ce7 commit 7993bdb
Showing 2 changed files with 44 additions and 4 deletions.
24 changes: 21 additions & 3 deletions field/team_sign.go
Original file line number Diff line number Diff line change
@@ -82,7 +82,11 @@ func (signs *TeamSigns) Update(arena *Arena) {
var countdownSec int
switch arena.MatchState {
case PreMatch:
fallthrough
if arena.AudienceDisplayMode == "allianceSelection" {
countdownSec = arena.AllianceSelectionTimeRemainingSec
} else {
countdownSec = game.MatchTiming.AutoDurationSec
}
case StartMatch:
fallthrough
case WarmupPeriod:
@@ -166,7 +170,7 @@ func (sign *TeamSign) update(
sign.frontText, sign.frontColor, sign.rearText = generateTimerTexts(arena, countdown, inMatchRearText)
} else {
sign.frontText, sign.frontColor, sign.rearText = sign.generateTeamNumberTexts(
arena, allianceStation, isRed, inMatchRearText,
arena, allianceStation, isRed, countdown, inMatchRearText,
)
}

@@ -200,6 +204,13 @@ func generateTimerTexts(arena *Arena, countdown, inMatchRearText string) (string
if arena.AllianceStationDisplayMode == "blank" {
return " ", whiteColor, ""
}
if arena.AudienceDisplayMode == "allianceSelection" {
if arena.AllianceSelectionShowTimer {
return countdown, whiteColor, ""
} else {
return " ", whiteColor, ""
}
}

var frontText string
var frontColor color.RGBA
@@ -220,11 +231,18 @@ func generateTimerTexts(arena *Arena, countdown, inMatchRearText string) (string

// Returns the front text, front color, and rear text to display on the sign for the given alliance station.
func (sign *TeamSign) generateTeamNumberTexts(
arena *Arena, allianceStation *AllianceStation, isRed bool, inMatchRearText string,
arena *Arena, allianceStation *AllianceStation, isRed bool, countdown, inMatchRearText string,
) (string, color.RGBA, string) {
if arena.AllianceStationDisplayMode == "blank" {
return " ", whiteColor, ""
}
if arena.AudienceDisplayMode == "allianceSelection" {
if arena.AllianceSelectionShowTimer {
return countdown, whiteColor, ""
} else {
return " ", whiteColor, ""
}
}

if allianceStation.Team == nil {
return " ", whiteColor, fmt.Sprintf("%20s", "No Team Assigned")
24 changes: 23 additions & 1 deletion field/team_sign_test.go
Original file line number Diff line number Diff line change
@@ -64,6 +64,16 @@ func TestTeamSign_Timer(t *testing.T) {
// Check blank mode.
arena.AllianceStationDisplayMode = "blank"
assertSign(" ", whiteColor, "")

// Check alliance selection.
arena.AllianceStationDisplayMode = "logo"
arena.AudienceDisplayMode = "allianceSelection"
arena.AllianceSelectionShowTimer = false
assertSign(" ", whiteColor, "")
arena.AllianceSelectionShowTimer = true
assertSign("23:45", whiteColor, "")
arena.AllianceStationDisplayMode = "blank"
assertSign(" ", whiteColor, "")
}

func TestTeamSign_TeamNumber(t *testing.T) {
@@ -89,7 +99,9 @@ func TestTeamSign_TeamNumber(t *testing.T) {
assert.Equal(t, 51, sign.packetIndex)

assertSign := func(isRed bool, expectedFrontText string, expectedFrontColor color.RGBA, expectedRearText string) {
frontText, frontColor, rearText := sign.generateTeamNumberTexts(arena, allianceStation, isRed, "Rear Text")
frontText, frontColor, rearText := sign.generateTeamNumberTexts(
arena, allianceStation, isRed, "12:34", "Rear Text",
)
assert.Equal(t, expectedFrontText, frontText)
assert.Equal(t, expectedRearText, rearText)

@@ -156,4 +168,14 @@ func TestTeamSign_TeamNumber(t *testing.T) {
// Check blank mode.
arena.AllianceStationDisplayMode = "blank"
assertSign(true, " ", whiteColor, "")

// Check alliance selection.
arena.AllianceStationDisplayMode = "logo"
arena.AudienceDisplayMode = "allianceSelection"
arena.AllianceSelectionShowTimer = false
assertSign(true, " ", whiteColor, "")
arena.AllianceSelectionShowTimer = true
assertSign(true, "12:34", whiteColor, "")
arena.AllianceStationDisplayMode = "blank"
assertSign(true, " ", whiteColor, "")
}

0 comments on commit 7993bdb

Please sign in to comment.