/// <summary> /// Translates a game result into a string representation. /// </summary> /// <param name="result"></param> /// <param name="isWhite"></param> /// <returns></returns> internal static string ResultStr(TournamentGameResult result, bool isWhite) { return(result switch { TournamentGameResult.None => "", TournamentGameResult.Win => "+" + (isWhite ? "w" : "b"), TournamentGameResult.Loss => "-" + (isWhite ? "w" : "b"), TournamentGameResult.Draw => "=" });
public void Run(List <TournamentTask> list, List <TournamentGameResult> results) { int counter = -1; foreach (var task in list) { counter++; if (results.Any(z => z.Task.Id == task.Id)) { continue; } Console.WriteLine($"Task {counter} of {list.Count}"); var serviceConnection = new TcpClient(); serviceConnection.Connect(MultiplayerProxyConfigurations.UnityEndPoint); serviceConnection.WriteJson(task.GameSettings); serviceConnection.WriteJson(task.WorldState); var clients = task.Participants .Select(RunAndAccept) .ToList(); var result = serviceConnection.ReadJson <GameResult>(); foreach (var c in clients) { if (!c.HasExited) { c.Kill(); } } var toWrite = new TournamentGameResult { Task = task, Result = result }; File.AppendAllText("results.json", JsonConvert.SerializeObject(toWrite, Formatting.None) + "\n"); Thread.Sleep(1000); } }
static int GetScores(TournamentGameResult res, string side) { return(res.Result.ScoresByPlayer[side]["Main"]); }