private void SetPlayerValues(MatchDescription matchDescription, Player player, int index, PlayerDescription description)
 {
     player.Index      = index;
     player.Color      = description.Color;
     player.LocalColor = matchDescription.LocalPlayerIndex == index ? Colors.White : description.Color;
     player.Name       = description.Name;
     player.Output     = description.Output;
 }
        /// <summary>
        /// Creates a new match for the discipline.
        /// </summary>
        /// <param name="description">The match description.</param>
        /// <returns>The new match.</returns>
        public override IMatch CreateMatch(MatchDescription description)
        {
            var match = new TMatch();

            match.Random = description.Random;
            match.Output = description.Output;

            var players = new List <TPlayer>();

            for (int i = 0; i < description.Players.Count; ++i)
            {
                var player = new TPlayer();
                player.Match = match;
                SetPlayerValues(description, player, i, description.Players[i]);
                players.Add(player);
            }

            match.Initialize(players);

            return(match);
        }