Example #1
0
 /// <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 => "="
     });
Example #2
0
        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);
            }
        }
Example #3
0
 static int GetScores(TournamentGameResult res, string side)
 {
     return(res.Result.ScoresByPlayer[side]["Main"]);
 }