Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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();
        }
Exemplo n.º 5
0
 private bool CheckIsFinalRound()
 {
     return(AllGroupsList.Count > 0 && AllGroupsList.Last().Count == 1);
 }
Exemplo n.º 6
0
        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();
                }
            }
        }