private static ITiebreaker GetTiebreaker(string conferenceName)
        {
            lock (mTiebreakers)
            {
                ITiebreaker tiebreaker = null;

                if (mTiebreakers.ContainsKey(conferenceName))
                {
                    return(mTiebreakers[conferenceName]);
                }

                switch (conferenceName)
                {
                case "ACC":
                    tiebreaker = new AccTiebreaker();
                    break;

                case "SEC":
                    tiebreaker = new SecTiebreaker();
                    break;

                case "Mountain West":
                    tiebreaker = new MwcTiebreaker();
                    break;

                case "Pac-12":
                    tiebreaker = new Pac12Tiebreaker();
                    break;

                case "Mid-American":
                    tiebreaker = new MacTiebreaker();
                    break;

                case "Conference USA":
                    tiebreaker = new CUsaTiebreaker();
                    break;

                case "Sun Belt":
                    tiebreaker = new SunBeltTiebreaker();
                    break;

                case "Big Ten":
                    tiebreaker = new Big10Tiebreaker();
                    break;

                case "Big 12":
                    tiebreaker = new Big12Tiebreaker();
                    break;

                default: throw new Exception("Not ready for this case");
                }

                mTiebreakers[conferenceName] = tiebreaker;

                return(tiebreaker);
            }
        }
Exemplo n.º 2
0
 public R03FinalResult(ITiebreaker tiebreaker)
 {
     _tiebreaker = tiebreaker ?? throw new ArgumentNullException();
 }
        public static DivisionResult JudgeSync(GameList games, Division division, List <int> teamIds, List <int> winnerIds, List <TeamResult> teamResults)
        {
            DateTime start = DateTime.Now;
            //List<TeamResult> teamResults = TeamResult.FilterByTeams(command.TeamResults, mTeamIds);

            //Have a list of games and a list of winners, determine who won the division
            //Find the teams with the most wins
            List <int> divisionFinalistIds = TeamResult.GetWinningTeamIds(teamResults, RecordType.Conference, teamIds);
            //divisionFinalistIds = mGames.GetWinnersFromTeams(mTeamIds, true, command.WinnerIds);

            int finalWinner = -1;

            //switch (divisionFinalistIds.Count)
            //{
            //    case 1:
            //        finalWinner = divisionFinalistIds[0];
            //        break;
            //    case 2:
            //        {
            //            //See who won the head-to-head matchup
            //            int gameIndex = games.FindMatchupIndex(teamIds[0], teamIds[1]);
            //            if (winnerIds != null && gameIndex < winnerIds.Count)
            //            {
            //                finalWinner = winnerIds[gameIndex];
            //            }
            //            else
            //            {
            //                Game game = games[gameIndex];
            //                if (game.GameAlreadyPlayed)
            //                {
            //                    finalWinner = game.WinnerId;
            //                }
            //            }

            //            break;
            //        }
            //    default:
            //    {
            ITiebreaker tiebreaker = GetTiebreaker(division.ConferenceName);

            finalWinner = tiebreaker.BreakTie(games, winnerIds, teamResults, divisionFinalistIds, division);
            //        break;
            //    }
            //}

            //if(finalWinner == 1)
            //{
            //    TeamResult miamiResult = command.TeamResults.Where(result => result.TeamId == 1).ElementAt(0);

            //    if (miamiResult.ConferenceRecord.Wins != 5)
            //    {
            //        Console.WriteLine("Miami wins");
            //        foreach (TeamResult result in TeamResult.FilterByTeams(command.TeamResults, mTeamIds))
            //        {
            //            Console.WriteLine($"     {result.TeamName}: {result.OverallRecord.Wins}-{result.OverallRecord.Losses} ({result.ConferenceRecord.Wins}-{result.ConferenceRecord.Losses})");
            //        }
            //    }
            //}

            return(new DivisionResult
            {
                WinnerId = finalWinner,
                DivisionFinalistIds = divisionFinalistIds,
                Milliseconds = (DateTime.Now - start).TotalMilliseconds
            });
        }
Exemplo n.º 4
0
 public CompetitionBizFactory(IPhase groupPhase, IPhase eliminatoryPhase, ITiebreaker tiebreaker)
 {
     _groupPhase       = groupPhase;
     _eliminatoryPhase = eliminatoryPhase;
     _tiebreaker       = tiebreaker;
 }
Exemplo n.º 5
0
 public GroupPhase(ITiebreaker tiebreaker)
 {
     _tiebreaker = tiebreaker ?? throw new ArgumentNullException();
 }
Exemplo n.º 6
0
 public EliminatoryPhase(ITiebreaker tiebreaker)
 {
     _tiebreaker = tiebreaker ?? throw new ArgumentNullException();
 }