mirror of
https://github.com/Team254/cheesy-arena-lite.git
synced 2026-03-09 13:46:44 -04:00
Fix score calculation for park/climb when they exceed limits.
This commit is contained in:
@@ -7,13 +7,13 @@ package game
|
||||
|
||||
type Score struct {
|
||||
AutoRuns int
|
||||
AutoEndSwitchOwnership bool
|
||||
AutoOwnershipPoints int
|
||||
AutoEndSwitchOwnership bool
|
||||
TeleopOwnershipPoints int
|
||||
VaultCubes int
|
||||
Levitate bool
|
||||
Parks int
|
||||
Climbs int
|
||||
Parks int
|
||||
Fouls []Foul
|
||||
ElimDq bool
|
||||
}
|
||||
@@ -47,10 +47,17 @@ func (score *Score) Summarize(opponentFouls []Foul) *ScoreSummary {
|
||||
summary.OwnershipPoints = score.AutoOwnershipPoints + score.TeleopOwnershipPoints
|
||||
summary.VaultPoints = 5 * score.VaultCubes
|
||||
climbs := score.Climbs
|
||||
if climbs > 3 {
|
||||
climbs = 3
|
||||
}
|
||||
if score.Levitate && score.Climbs < 3 {
|
||||
climbs++
|
||||
}
|
||||
summary.ParkClimbPoints = 5*score.Parks + 30*climbs
|
||||
parks := score.Parks
|
||||
if parks+climbs > 3 {
|
||||
parks = 3 - climbs
|
||||
}
|
||||
summary.ParkClimbPoints = 5*parks + 30*climbs
|
||||
|
||||
// Calculate bonuses.
|
||||
if score.AutoRuns == 3 && score.AutoEndSwitchOwnership {
|
||||
|
||||
@@ -34,6 +34,23 @@ func TestScoreSummary(t *testing.T) {
|
||||
assert.Equal(t, true, blueSummary.AutoQuest)
|
||||
assert.Equal(t, false, blueSummary.FaceTheBoss)
|
||||
|
||||
// Test park/climb limits.
|
||||
redScore.Levitate = false
|
||||
redScore.Climbs = 3
|
||||
assert.Equal(t, 90, redScore.Summarize(blueScore.Fouls).ParkClimbPoints)
|
||||
redScore.Levitate = true
|
||||
assert.Equal(t, 90, redScore.Summarize(blueScore.Fouls).ParkClimbPoints)
|
||||
redScore.Climbs = 4
|
||||
assert.Equal(t, 90, redScore.Summarize(blueScore.Fouls).ParkClimbPoints)
|
||||
redScore.Climbs = 50
|
||||
assert.Equal(t, 90, redScore.Summarize(blueScore.Fouls).ParkClimbPoints)
|
||||
redScore.Parks = 2
|
||||
assert.Equal(t, 90, redScore.Summarize(blueScore.Fouls).ParkClimbPoints)
|
||||
redScore.Parks = 25
|
||||
assert.Equal(t, 90, redScore.Summarize(blueScore.Fouls).ParkClimbPoints)
|
||||
redScore.Climbs = 0
|
||||
assert.Equal(t, 40, redScore.Summarize(blueScore.Fouls).ParkClimbPoints)
|
||||
|
||||
// Test Auto Quest boundary conditions.
|
||||
blueScore.AutoEndSwitchOwnership = false
|
||||
assert.Equal(t, false, blueScore.Summarize(redScore.Fouls).AutoQuest)
|
||||
|
||||
@@ -8,11 +8,11 @@ package game
|
||||
func TestScore1() *Score {
|
||||
fouls := []Foul{{Rule{"G22", false}, 25, 25.2}, {Rule{"G18", true}, 25, 150},
|
||||
{Rule{"G20", true}, 1868, 0}}
|
||||
return &Score{1, true, 12, 47, 3, true, 0, 2, fouls, false}
|
||||
return &Score{1, 12, true, 47, 3, true, 2, 0, fouls, false}
|
||||
}
|
||||
|
||||
func TestScore2() *Score {
|
||||
return &Score{3, true, 20, 73, 6, false, 1, 1, []Foul{}, false}
|
||||
return &Score{3, 20, true, 73, 6, false, 1, 1, []Foul{}, false}
|
||||
}
|
||||
|
||||
func TestRanking1() *Ranking {
|
||||
|
||||
Reference in New Issue
Block a user