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); } }
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 }); }
public CompetitionBizFactory(IPhase groupPhase, IPhase eliminatoryPhase, ITiebreaker tiebreaker) { _groupPhase = groupPhase; _eliminatoryPhase = eliminatoryPhase; _tiebreaker = tiebreaker; }
public GroupPhase(ITiebreaker tiebreaker) { _tiebreaker = tiebreaker ?? throw new ArgumentNullException(); }
public EliminatoryPhase(ITiebreaker tiebreaker) { _tiebreaker = tiebreaker ?? throw new ArgumentNullException(); }