mirror of
https://github.com/Team254/cheesy-arena-lite.git
synced 2026-03-09 13:46:44 -04:00
Update TBA match breakdown publishing for 2019.
This commit is contained in:
182
partner/tba.go
182
partner/tba.go
@@ -11,6 +11,7 @@ import (
|
|||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"github.com/Team254/cheesy-arena/game"
|
||||||
"github.com/Team254/cheesy-arena/model"
|
"github.com/Team254/cheesy-arena/model"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
@@ -49,31 +50,51 @@ type TbaAlliance struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type TbaScoreBreakdown struct {
|
type TbaScoreBreakdown struct {
|
||||||
AutoRunPoints int `json:"autoRunPoints"`
|
PreMatchLevelRobot1 string `json:"preMatchLevelRobot1"`
|
||||||
AutoScaleOwnershipSec int `json:"autoScaleOwnershipSec"`
|
PreMatchLevelRobot2 string `json:"preMatchLevelRobot2"`
|
||||||
AutoSwitchOwnershipSec int `json:"autoSwitchOwnershipSec"`
|
PreMatchLevelRobot3 string `json:"preMatchLevelRobot3"`
|
||||||
AutoOwnershipPoints int `json:"autoOwnershipPoints"`
|
PreMatchBay1 string `json:"preMatchBay1"`
|
||||||
AutoPoints int `json:"autoPoints"`
|
PreMatchBay2 string `json:"preMatchBay2"`
|
||||||
TeleopScaleOwnershipSec int `json:"teleopScaleOwnershipSec"`
|
PreMatchBay3 string `json:"preMatchBay3"`
|
||||||
TeleopScaleBoostSec int `json:"teleopScaleBoostSec"`
|
PreMatchBay6 string `json:"preMatchBay6"`
|
||||||
TeleopSwitchOwnershipSec int `json:"teleopSwitchOwnershipSec"`
|
PreMatchBay7 string `json:"preMatchBay7"`
|
||||||
TeleopSwitchBoostSec int `json:"teleopSwitchBoostSec"`
|
PreMatchBay8 string `json:"preMatchBay8"`
|
||||||
TeleopOwnershipPoints int `json:"teleopOwnershipPoints"`
|
HabLineRobot1 string `json:"habLineRobot1"`
|
||||||
VaultForceTotal int `json:"vaultForceTotal"`
|
HabLineRobot2 string `json:"habLineRobot2"`
|
||||||
VaultForcePlayed int `json:"vaultForcePlayed"`
|
HabLineRobot3 string `json:"habLineRobot3"`
|
||||||
VaultLevitateTotal int `json:"vaultLevitateTotal"`
|
SandstormBonusPoints int `json:"sandStormBonusPoints"`
|
||||||
VaultLevitatePlayed int `json:"vaultLevitatePlayed"`
|
Bay1 string `json:"bay1"`
|
||||||
VaultBoostTotal int `json:"vaultBoostTotal"`
|
Bay2 string `json:"bay2"`
|
||||||
VaultBoostPlayed int `json:"vaultBoostPlayed"`
|
Bay3 string `json:"bay3"`
|
||||||
VaultPoints int `json:"vaultPoints"`
|
Bay4 string `json:"bay4"`
|
||||||
EndgamePoints int `json:"endgamePoints"`
|
Bay5 string `json:"bay5"`
|
||||||
TeleopPoints int `json:"teleopPoints"`
|
Bay6 string `json:"bay6"`
|
||||||
AutoQuestRankingPoint bool `json:"autoQuestRankingPoint"`
|
Bay7 string `json:"bay7"`
|
||||||
FaceTheBossRankingPoint bool `json:"faceTheBossRankingPoint"`
|
Bay8 string `json:"bay8"`
|
||||||
FoulPoints int `json:"foulPoints"`
|
LowLeftRocketNear string `json:"lowLeftRocketNear"`
|
||||||
TotalPoints int `json:"totalPoints"`
|
MidLeftRocketNear string `json:"midLeftRocketNear"`
|
||||||
RP int `json:"rp"`
|
TopLeftRocketNear string `json:"topLeftRocketNear"`
|
||||||
TbaGameData string `json:"tba_gameData"`
|
LowRightRocketNear string `json:"lowRightRocketNear"`
|
||||||
|
MidRightRocketNear string `json:"midRightRocketNear"`
|
||||||
|
TopRightRocketNear string `json:"topRightRocketNear"`
|
||||||
|
LowLeftRocketFar string `json:"lowLeftRocketFar"`
|
||||||
|
MidLeftRocketFar string `json:"midLeftRocketFar"`
|
||||||
|
TopLeftRocketFar string `json:"topLeftRocketFar"`
|
||||||
|
LowRightRocketFar string `json:"lowRightRocketFar"`
|
||||||
|
MidRightRocketFar string `json:"midRightRocketFar"`
|
||||||
|
TopRightRocketFar string `json:"topRightRocketFar"`
|
||||||
|
CargoPoints int `json:"cargoPoints"`
|
||||||
|
HatchPanelPoints int `json:"hatchPanelPoints"`
|
||||||
|
EndgameRobot1 string `json:"endgameRobot1"`
|
||||||
|
EndgameRobot2 string `json:"endgameRobot2"`
|
||||||
|
EndgameRobot3 string `json:"endgameRobot3"`
|
||||||
|
HabClimbPoints int `json:"habClimbPoints"`
|
||||||
|
TeleopPoints int `json:"teleopPoints"`
|
||||||
|
CompleteRocketRankingPoint bool `json:"completeRocketRankingPoint"`
|
||||||
|
HabDockingRankingPoint bool `json:"habDockingRankingPoint"`
|
||||||
|
FoulPoints int `json:"foulPoints"`
|
||||||
|
TotalPoints int `json:"totalPoints"`
|
||||||
|
RP int `json:"rp"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type TbaRanking struct {
|
type TbaRanking struct {
|
||||||
@@ -125,6 +146,10 @@ type TbaMediaItem struct {
|
|||||||
Type string `json:"type"`
|
Type string `json:"type"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var habLevelMapping = []string{"None", "HabLevel1", "HabLevel2", "HabLevel3"}
|
||||||
|
var bayStatusMapping = []string{"None", "Panel", "PanelAndCargo", "Cargo"}
|
||||||
|
var sandstormBonusMapping = map[bool]string{false: "None", true: "CrossedHabLineInSandstorm"}
|
||||||
|
|
||||||
func NewTbaClient(eventCode, secretId, secret string) *TbaClient {
|
func NewTbaClient(eventCode, secretId, secret string) *TbaClient {
|
||||||
return &TbaClient{BaseUrl: tbaBaseUrl, eventCode: eventCode, secretId: secretId, secret: secret,
|
return &TbaClient{BaseUrl: tbaBaseUrl, eventCode: eventCode, secretId: secretId, secret: secret,
|
||||||
eventNamesCache: make(map[string]string)}
|
eventNamesCache: make(map[string]string)}
|
||||||
@@ -503,53 +528,68 @@ func createTbaAlliance(teamIds [3]int, surrogates [3]bool, score *int, cards map
|
|||||||
|
|
||||||
func createTbaScoringBreakdown(match *model.Match, matchResult *model.MatchResult, alliance string) *TbaScoreBreakdown {
|
func createTbaScoringBreakdown(match *model.Match, matchResult *model.MatchResult, alliance string) *TbaScoreBreakdown {
|
||||||
var breakdown TbaScoreBreakdown
|
var breakdown TbaScoreBreakdown
|
||||||
// TODO(pat): Update for 2019.
|
var score *game.Score
|
||||||
/*
|
var scoreSummary, opponentScoreSummary *game.ScoreSummary
|
||||||
var score *game.Score
|
if alliance == "red" {
|
||||||
var scoreSummary, opponentScoreSummary *game.ScoreSummary
|
score = matchResult.RedScore
|
||||||
if alliance == "red" {
|
scoreSummary = matchResult.RedScoreSummary()
|
||||||
score = matchResult.RedScore
|
opponentScoreSummary = matchResult.BlueScoreSummary()
|
||||||
scoreSummary = matchResult.RedScoreSummary()
|
} else {
|
||||||
opponentScoreSummary = matchResult.BlueScoreSummary()
|
score = matchResult.BlueScore
|
||||||
} else {
|
scoreSummary = matchResult.BlueScoreSummary()
|
||||||
score = matchResult.BlueScore
|
opponentScoreSummary = matchResult.RedScoreSummary()
|
||||||
scoreSummary = matchResult.BlueScoreSummary()
|
}
|
||||||
opponentScoreSummary = matchResult.RedScoreSummary()
|
|
||||||
}
|
|
||||||
|
|
||||||
breakdown.AutoRunPoints = 5 * score.AutoRuns
|
breakdown.PreMatchLevelRobot1 = habLevelMapping[score.RobotStartLevels[0]]
|
||||||
breakdown.AutoScaleOwnershipSec = int(score.AutoScaleOwnershipSec)
|
breakdown.PreMatchLevelRobot2 = habLevelMapping[score.RobotStartLevels[1]]
|
||||||
breakdown.AutoSwitchOwnershipSec = int(score.AutoSwitchOwnershipSec)
|
breakdown.PreMatchLevelRobot3 = habLevelMapping[score.RobotStartLevels[2]]
|
||||||
breakdown.AutoOwnershipPoints = scoreSummary.AutoOwnershipPoints
|
breakdown.PreMatchBay1 = bayStatusMapping[score.CargoBaysPreMatch[0]]
|
||||||
breakdown.AutoPoints = scoreSummary.AutoPoints
|
breakdown.PreMatchBay2 = bayStatusMapping[score.CargoBaysPreMatch[1]]
|
||||||
breakdown.TeleopScaleOwnershipSec = int(score.TeleopScaleOwnershipSec)
|
breakdown.PreMatchBay3 = bayStatusMapping[score.CargoBaysPreMatch[2]]
|
||||||
breakdown.TeleopScaleBoostSec = int(score.TeleopScaleBoostSec)
|
breakdown.PreMatchBay6 = bayStatusMapping[score.CargoBaysPreMatch[5]]
|
||||||
breakdown.TeleopSwitchOwnershipSec = int(score.TeleopSwitchOwnershipSec)
|
breakdown.PreMatchBay7 = bayStatusMapping[score.CargoBaysPreMatch[6]]
|
||||||
breakdown.TeleopSwitchBoostSec = int(score.TeleopSwitchBoostSec)
|
breakdown.PreMatchBay8 = bayStatusMapping[score.CargoBaysPreMatch[7]]
|
||||||
breakdown.TeleopOwnershipPoints = scoreSummary.TeleopOwnershipPoints
|
breakdown.HabLineRobot1 = sandstormBonusMapping[score.SandstormBonuses[0]]
|
||||||
breakdown.VaultForceTotal = score.ForceCubes
|
breakdown.HabLineRobot2 = sandstormBonusMapping[score.SandstormBonuses[1]]
|
||||||
breakdown.VaultForcePlayed = score.ForceCubesPlayed
|
breakdown.HabLineRobot3 = sandstormBonusMapping[score.SandstormBonuses[2]]
|
||||||
breakdown.VaultLevitateTotal = score.LevitateCubes
|
breakdown.SandstormBonusPoints = scoreSummary.SandstormBonusPoints
|
||||||
if score.LevitatePlayed {
|
breakdown.Bay1 = bayStatusMapping[score.CargoBays[0]]
|
||||||
breakdown.VaultLevitatePlayed = score.LevitateCubes
|
breakdown.Bay2 = bayStatusMapping[score.CargoBays[1]]
|
||||||
}
|
breakdown.Bay3 = bayStatusMapping[score.CargoBays[2]]
|
||||||
breakdown.VaultBoostTotal = score.BoostCubes
|
breakdown.Bay4 = bayStatusMapping[score.CargoBays[3]]
|
||||||
breakdown.VaultBoostPlayed = score.BoostCubesPlayed
|
breakdown.Bay5 = bayStatusMapping[score.CargoBays[4]]
|
||||||
breakdown.VaultPoints = scoreSummary.VaultPoints
|
breakdown.Bay6 = bayStatusMapping[score.CargoBays[5]]
|
||||||
breakdown.EndgamePoints = scoreSummary.ParkClimbPoints
|
breakdown.Bay7 = bayStatusMapping[score.CargoBays[6]]
|
||||||
breakdown.TeleopPoints = scoreSummary.Score - scoreSummary.AutoPoints - scoreSummary.FoulPoints
|
breakdown.Bay8 = bayStatusMapping[score.CargoBays[7]]
|
||||||
breakdown.AutoQuestRankingPoint = scoreSummary.AutoQuest
|
breakdown.LowLeftRocketNear = bayStatusMapping[score.RocketNearLeftBays[0]]
|
||||||
breakdown.FaceTheBossRankingPoint = scoreSummary.FaceTheBoss
|
breakdown.MidLeftRocketNear = bayStatusMapping[score.RocketNearLeftBays[1]]
|
||||||
breakdown.FoulPoints = scoreSummary.FoulPoints
|
breakdown.TopLeftRocketNear = bayStatusMapping[score.RocketNearLeftBays[2]]
|
||||||
breakdown.TotalPoints = scoreSummary.Score
|
breakdown.LowRightRocketNear = bayStatusMapping[score.RocketNearRightBays[0]]
|
||||||
if match.ShouldUpdateRankings() {
|
breakdown.MidRightRocketNear = bayStatusMapping[score.RocketNearRightBays[1]]
|
||||||
// Calculate and set the ranking points for the match.
|
breakdown.TopRightRocketNear = bayStatusMapping[score.RocketNearRightBays[2]]
|
||||||
var ranking game.Ranking
|
breakdown.LowLeftRocketFar = bayStatusMapping[score.RocketFarLeftBays[0]]
|
||||||
ranking.AddScoreSummary(scoreSummary, opponentScoreSummary, false)
|
breakdown.MidLeftRocketFar = bayStatusMapping[score.RocketFarLeftBays[1]]
|
||||||
breakdown.RP = ranking.RankingPoints
|
breakdown.TopLeftRocketFar = bayStatusMapping[score.RocketFarLeftBays[2]]
|
||||||
}
|
breakdown.LowRightRocketFar = bayStatusMapping[score.RocketFarRightBays[0]]
|
||||||
breakdown.TbaGameData = match.GameSpecificData
|
breakdown.MidRightRocketFar = bayStatusMapping[score.RocketFarRightBays[1]]
|
||||||
*/
|
breakdown.TopRightRocketFar = bayStatusMapping[score.RocketFarRightBays[2]]
|
||||||
|
breakdown.CargoPoints = scoreSummary.CargoPoints
|
||||||
|
breakdown.HatchPanelPoints = scoreSummary.HatchPanelPoints
|
||||||
|
breakdown.EndgameRobot1 = habLevelMapping[score.RobotEndLevels[0]]
|
||||||
|
breakdown.EndgameRobot2 = habLevelMapping[score.RobotEndLevels[1]]
|
||||||
|
breakdown.EndgameRobot3 = habLevelMapping[score.RobotEndLevels[2]]
|
||||||
|
breakdown.HabClimbPoints = scoreSummary.HabClimbPoints
|
||||||
|
breakdown.TeleopPoints = scoreSummary.CargoPoints + scoreSummary.HatchPanelPoints + scoreSummary.HabClimbPoints
|
||||||
|
breakdown.CompleteRocketRankingPoint = scoreSummary.CompleteRocket
|
||||||
|
breakdown.HabDockingRankingPoint = scoreSummary.HabDocking
|
||||||
|
breakdown.FoulPoints = scoreSummary.FoulPoints
|
||||||
|
breakdown.TotalPoints = scoreSummary.Score
|
||||||
|
if match.ShouldUpdateRankings() {
|
||||||
|
// Calculate and set the ranking points for the match.
|
||||||
|
var ranking game.Ranking
|
||||||
|
ranking.AddScoreSummary(scoreSummary, opponentScoreSummary, false)
|
||||||
|
breakdown.RP = ranking.RankingPoints
|
||||||
|
}
|
||||||
|
|
||||||
return &breakdown
|
return &breakdown
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user