vex_mqtt_rust/proto/game.proto

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;
}