/// <summary> /// Will apply the current server-info to the public vars /// </summary> /// <param name="si"></param> private void ApplyServerInfo(ServerInfoBase si) { var nu = si == null; LastStatusDate = nu ? "-" : si.RequestDate.AddMilliseconds(si.RequestTime).ToString("HH:mm:ss"); IsOnline = !nu && si.HadSuccess; PlayerCount = nu ? 0 : si.CurrentPlayerCount; MaxPlayerCount = nu ? 0 : si.MaxPlayerCount; Version = nu ? "0.0.0" : si.MinecraftVersion; MOTD = nu || !si.HadSuccess ? "-" : si.ServerMotd; LastError = !nu && si.LastError != null?si.LastError.GetType().Name : "-"; PlayerList.Clear(); if (!nu && si.OnlinePlayers != null) { PlayerList.AddRange(si.OnlinePlayers); } }
PlayerList QuickSortBestHand(PlayerList myPlayers) { Player pivot; Random ran = new Random(); if (myPlayers.Count() <= 1) return myPlayers; pivot = myPlayers[ran.Next(myPlayers.Count())]; myPlayers.Remove(pivot); var less = new PlayerList(); var greater = new PlayerList(); // Assign values to less or greater list foreach (Player player in myPlayers) { if (HandCombination.getBestHand(new Hand(player.getHand())) > HandCombination.getBestHand(new Hand(pivot.getHand()))) { greater.Add(player); } else if (HandCombination.getBestHand(new Hand(player.getHand())) <= HandCombination.getBestHand(new Hand(pivot.getHand()))) { less.Add(player); } } // Recurse for less and greaterlists var list = new PlayerList(); list.AddRange(QuickSortBestHand(greater)); list.Add(pivot); list.AddRange(QuickSortBestHand(less)); return list; }