private void SetupGroups() { StringReader text = new StringReader(SetupPlayersText.Text); List <string> players = new List <string>(); string line = ""; while ((line = text.ReadLine()) != null) { line = line.Trim(); if (line.Length > 0) { players.Add(line); } } AllGroupsList.Clear(); AddGroups(players); if (bDebug) { // Testing SelectGroup(0, 0); } }
private bool CheckRoundFinished() { foreach (List <PlayerData> group in AllGroupsList.Last()) { int cutCount = 0; foreach (PlayerData pd in group) { cutCount += pd.IsCut ? 1 : 0; } if (group.Count - cutCount > TeamsMakingCut) { return(false); } } return(true); }
private void AddGroups() { List <KeyValuePair <int, string> > results = new List <KeyValuePair <int, string> >(); foreach (List <PlayerData> group in AllGroupsList.Last()) { foreach (PlayerData pd in group) { if (!pd.IsCut) { results.Add(new KeyValuePair <int, string>(pd.RoundPoints, pd.PlayerName)); } } } results.Sort((KeyValuePair <int, string> a, KeyValuePair <int, string> b) => { if (a.Key == b.Key) { return(0); } else if (a.Key > b.Key) { return(-1); } else { return(1); } }); List <string> players = new List <string>(); foreach (KeyValuePair <int, string> result in results) { players.Add(result.Value); } AddGroups(players); }
private void AddGroups(List <string> players) { int numGroups = (players.Count + 2) / 5; int roundIndex = AllGroupsList.Count; AllGroupsList.Add(new List <List <PlayerData> >()); for (int i = 0; i < numGroups; ++i) { AllGroupsList[roundIndex].Add(new List <PlayerData>()); } for (int i = 0, groupIndex = 0; i < players.Count; ++i, ++groupIndex) { groupIndex = groupIndex % numGroups; AllGroupsList[roundIndex][groupIndex].Add(new PlayerData(players[i])); } RefreshGroups(); }
private bool CheckIsFinalRound() { return(AllGroupsList.Count > 0 && AllGroupsList.Last().Count == 1); }
private void TryFinishGroup() { if (CheckIsFinalRound()) { if (CheckGameFinished()) { List <PlayerData> finalGroup = AllGroupsList.Last().Last(); finalGroup.Sort((PlayerData a, PlayerData b) => { if (a.RoundPoints == b.RoundPoints) { return(0); } else if (a.RoundPoints > b.RoundPoints) { return(-1); } else { return(1); } }); for (int i = 0; i < 3 && i < finalGroup.Count; ++i) { PlayerData pd = finalGroup[i]; pd.FinishPlace = i + 1; } NowPlayingList.Clear(); foreach (PlayerData pd in finalGroup) { pd.IsLeader = false; NowPlayingList.Add(pd); } InstructionsDisplay = "Finished. Congrats " + finalGroup[0].PlayerName + "!!!"; } else { IncrementLeader(); } } else if (NowPlayingList.Count > TeamsMakingCut) { List <int> sortedScores = GetSortedScores(); int cutScore = 0; if (sortedScores[TeamsMakingCut] != sortedScores[TeamsMakingCut - 1]) { cutScore = sortedScores[TeamsMakingCut - 1]; foreach (PlayerData pd in NowPlayingList) { if (pd.RoundPoints < cutScore) { pd.IsCut = true; } else { ++pd.Round; } pd.IsLeader = false; } if (CheckRoundFinished()) { AddGroups(); } InstructionsDisplay = "Select Next Group"; } else { IncrementLeader(); } } }