private static List <PlayerCluster> buildPlayerClusters(List <Player> players, Dictionary <Player, PlayerClusterInfo> playerClusterInformations) { JsDictionary <int, Player> hitPlayers = players.ToDictionary(a => a.Id); List <PlayerCluster> playerClusters = new List <PlayerCluster>(); int hitPlayerCount = players.Count; var playerClusterInfoHits = new JsDictionary <int, PlayerClusterInfo>(); var playerClusterInfoHitsArray = new List <PlayerClusterInfo>(); while (hitPlayerCount > 0) { playerClusterInfoHits.Clear(); playerClusterInfoHitsArray.Clear(); GetPlayerCluster(playerClusterInfoHits, playerClusterInfoHitsArray, playerClusterInformations, playerClusterInformations[hitPlayers[hitPlayers.Keys.First()]], hitPlayers); PlayerCluster cluster = new PlayerCluster(); for (int index = 0; index < playerClusterInfoHitsArray.Count; index++) { var playerClusterInfoHit = playerClusterInfoHitsArray[index]; cluster.Players.Add(playerClusterInfoHit.Player); hitPlayers.Remove(playerClusterInfoHit.Player.Id); hitPlayerCount--; } playerClusters.Add(cluster); // Console.WriteLine(string.Format("Players Left: {0}, Clusters Total: {1} ", hitPlayerCount, playerClusters.Count)); } return(playerClusters); }
private static List<PlayerCluster> buildPlayerClusters(List<Player> players, Dictionary<Player, PlayerClusterInfo> playerClusterInformations) { JsDictionary<int, Player> hitPlayers = players.ToDictionary(a => a.Id); List<PlayerCluster> playerClusters = new List<PlayerCluster>(); int hitPlayerCount = players.Count; var playerClusterInfoHits = new JsDictionary<int, PlayerClusterInfo>(); var playerClusterInfoHitsArray = new List<PlayerClusterInfo>(); while (hitPlayerCount > 0) { playerClusterInfoHits.Clear(); playerClusterInfoHitsArray.Clear(); GetPlayerCluster(playerClusterInfoHits, playerClusterInfoHitsArray, playerClusterInformations, playerClusterInformations[hitPlayers[hitPlayers.Keys.First()]], hitPlayers); PlayerCluster cluster = new PlayerCluster(); for (int index = 0; index < playerClusterInfoHitsArray.Count; index++) { var playerClusterInfoHit = playerClusterInfoHitsArray[index]; cluster.Players.Add(playerClusterInfoHit.Player); hitPlayers.Remove(playerClusterInfoHit.Player.Id); hitPlayerCount--; } playerClusters.Add(cluster); // Console.WriteLine(string.Format("Players Left: {0}, Clusters Total: {1} ", hitPlayerCount, playerClusters.Count)); } return playerClusters; }