147 lines
4.1 KiB
Protocol Buffer
147 lines
4.1 KiB
Protocol Buffer
|
syntax = "proto2";
|
||
|
|
||
|
package tm;
|
||
|
|
||
|
message GameWrapper {
|
||
|
optional bytes data = 1;
|
||
|
optional bytes auth = 2;
|
||
|
}
|
||
|
|
||
|
message TournamentRound {
|
||
|
enum RoundType {
|
||
|
RANDOM_MATCHES = 1;
|
||
|
SINGLE_ELIM_WIN_2 = 2;
|
||
|
ROUND_ROBIN = 3;
|
||
|
TOP_N = 4;
|
||
|
}
|
||
|
enum RankingType {
|
||
|
NO_RANKINGS = 1;
|
||
|
WP_SP = 2;
|
||
|
WIN_PCT_WP_SP = 3;
|
||
|
TOTAL_PTS_3_OF_4 = 4;
|
||
|
TOTAL_PTS_PREV_ROUND = 5;
|
||
|
WP_HEADTOHEAD_TOT_PTS = 6;
|
||
|
AVG_SCORE_HIGH_SCORES = 7;
|
||
|
AVG_PTS_3_OF_4 = 8;
|
||
|
WP_AP_SP = 9;
|
||
|
WIN_PCT_WP_AP_SP = 10;
|
||
|
TOTAL_PTS_WP = 11;
|
||
|
AVG_WP_AP_SP = 12;
|
||
|
AVG_WP_AVG_SCORE_HIGH_SCORES = 13;
|
||
|
}
|
||
|
optional tm.TournamentRound.RoundType type = 1;
|
||
|
optional uint32 numTeams = 2;
|
||
|
optional string displayName = 3;
|
||
|
optional uint32 roundNum = 4;
|
||
|
optional uint32 teamsPerAlliance = 5 [default = 2];
|
||
|
optional uint32 alliancesPerMatch = 6 [default = 2];
|
||
|
optional tm.Game.Scoring scoring = 7;
|
||
|
optional tm.TournamentRound.RankingType rankings = 8 [default = NO_RANKINGS];
|
||
|
repeated tm.Game.MatchTimeEntry matchTimes = 9;
|
||
|
repeated tm.Game.MatchSound sounds = 10;
|
||
|
optional tm.TournamentRound.RankingType leagueRankings = 11 [default = NO_RANKINGS];
|
||
|
}
|
||
|
|
||
|
message Game {
|
||
|
message Scoring {
|
||
|
optional string matchScoreFormula = 1;
|
||
|
optional string allianceScoreFormula = 2;
|
||
|
optional string teamScoreFormula = 3;
|
||
|
repeated string scoringConstraints = 4;
|
||
|
optional string apFormula = 10;
|
||
|
optional string wpFormula = 11;
|
||
|
optional string spFormula = 12;
|
||
|
optional string awpFormula = 13;
|
||
|
}
|
||
|
message MatchTimeEntry {
|
||
|
enum BlockType {
|
||
|
TIMER_ONLY = 1;
|
||
|
AUTONOMOUS = 2;
|
||
|
DRIVER_CTRL = 3;
|
||
|
PAUSE = 4;
|
||
|
}
|
||
|
optional int32 seconds = 1;
|
||
|
optional tm.Game.MatchTimeEntry.BlockType type = 2;
|
||
|
optional string name = 3;
|
||
|
}
|
||
|
message MatchSound {
|
||
|
optional string state = 1;
|
||
|
optional string cause = 2;
|
||
|
optional string fileName = 3;
|
||
|
optional uint32 timeLeft = 4;
|
||
|
}
|
||
|
message ScoreObject {
|
||
|
required string name = 1;
|
||
|
required int32 val = 2;
|
||
|
}
|
||
|
message Skills {
|
||
|
message Ranking {
|
||
|
enum Type {
|
||
|
HIGH_SCORES = 1;
|
||
|
HIGH_SCORE_FORMULA = 2;
|
||
|
TOTAL_POINTS_RECURSIVE = 3;
|
||
|
}
|
||
|
optional tm.Game.Skills.Ranking.Type type = 1;
|
||
|
optional string formula = 2;
|
||
|
}
|
||
|
enum SkillsType {
|
||
|
PROGRAMMING = 1;
|
||
|
DRIVER = 2;
|
||
|
}
|
||
|
optional uint32 obsolete_robotSkillsDuration = 1 [default = 60];
|
||
|
optional uint32 obsolete_progSkillsDuration = 2 [default = 60];
|
||
|
optional tm.Game.Scoring scoring = 3;
|
||
|
repeated tm.Game.Skills.Ranking rankings = 4;
|
||
|
optional string name = 5;
|
||
|
repeated tm.Game.MatchTimeEntry skillsTimes = 9;
|
||
|
repeated tm.Game.MatchSound sounds = 10;
|
||
|
optional tm.Game.Skills.SkillsType skillsType = 11;
|
||
|
}
|
||
|
message SkillsRanking {
|
||
|
enum RankingType {
|
||
|
COMBINED_HIGH_SCORES = 1;
|
||
|
ALTERNATING_HIGH_SCORES = 2;
|
||
|
HIGH_SCORE_FORMULA = 3;
|
||
|
ALTERNATING_HIGH_SCORES_LIMIT_2 = 4;
|
||
|
STOP_TIME_SUM_FROM_HIGH_SCORE_MATCHES = 5;
|
||
|
STOP_TIME_FROM_HIGH_SCORE_MATCH = 6;
|
||
|
ALTERNATING_HIGH_SCORES_THIRD = 7;
|
||
|
STOP_TIME_SUM_FROM_SECOND_HIGHEST_SCORE_MATCHES = 8;
|
||
|
STOP_TIME_SUM_FROM_THIRD_HIGHEST_SCORE_MATCHES = 9;
|
||
|
SUM_THREE_DRIVER_ONE_PROGRAMMING = 10;
|
||
|
}
|
||
|
enum SkillsType {
|
||
|
PROGRAMMING = 1;
|
||
|
DRIVER = 2;
|
||
|
}
|
||
|
optional tm.Game.SkillsRanking.RankingType rankingType = 1;
|
||
|
optional tm.Game.SkillsRanking.SkillsType skillsType = 2;
|
||
|
optional string formula = 3;
|
||
|
}
|
||
|
enum VexProgram {
|
||
|
VRC = 10;
|
||
|
VEXU = 20;
|
||
|
VEXIQ = 30;
|
||
|
VEXAI = 40;
|
||
|
RADC = 50;
|
||
|
BELL = 60;
|
||
|
TSA = 100;
|
||
|
}
|
||
|
optional uint32 apiVersion = 1 [default = 1];
|
||
|
optional string uuid = 2;
|
||
|
optional uint32 version = 3;
|
||
|
optional tm.Game.VexProgram program = 4;
|
||
|
optional string name = 5;
|
||
|
optional string season = 6;
|
||
|
repeated tm.Game.MatchSound defaultSounds = 7;
|
||
|
optional tm.Game.Scoring defaultScoring = 8;
|
||
|
repeated tm.Game.MatchTimeEntry defaultMatchTimes = 9;
|
||
|
repeated tm.TournamentRound rounds = 10;
|
||
|
repeated tm.Game.Skills skills = 11;
|
||
|
optional bytes interfaceXml = 12;
|
||
|
repeated tm.Game.SkillsRanking skillsRankings = 13;
|
||
|
repeated tm.Game.ScoreObject skillsInitialObjectStates = 14;
|
||
|
}
|
||
|
|
||
|
|