private void CreateGroupMatches(int groupNo, CompetitionPlayerList groupPlayers) { int[] plrs = new int[groupPlayers.Count]; // Список игроков для рассеивания SeedPair[] new_mtchs = new SeedPair[(groupPlayers.Count - 1) * groupPlayers.Count / 2]; // Список новых матчей int index = 0; foreach (CompetitionPlayerInfo player in groupPlayers.Values) { plrs[index++] = player.Id; } // формируем пары для следующего раунда if (!RobinSeeder.Seed(plrs, new_mtchs)) { throw new Exception("Draw error"); } // Создаем матчи и добавляем их в список матчей int pc = groupPlayers.Count; for (int round = 0; round < pc - 1; round++) // Кол-во туров равно Кол-во игроков - 1 { for (int match_no = 0; match_no < pc / 2; match_no++) // Кол-во матчей в туре равно Кол-во игрков деленное на два { SeedPair pair = new_mtchs[round * pc / 2 + match_no]; MatchInfo match = RobinController.CreateMatch(Competition, pair); match.Label.Division = groupNo; match.Label.Round = round + 1; match.Label.MatchNo = match_no + 1; TA.DB.Manager.DatabaseManager.CurrentDb.CreateMatch(Competition.Info.Id, match); Competition.Matches.Add(match.Id, match); } } }
public static CompetitionController GetController(TA.Corel.Competition competition) { //Нужно следить за порядком сравнения типов, из-за возможного наследования // сначала проверяем потомков, а потом остальные if (competition.GetType() == typeof(RobinOlympic)) { RobinOlympicController ctrl = new RobinOlympicController(); ctrl.Competition = competition; return(ctrl); } if (competition.GetType() == typeof(OlympicConsolation)) { OlympicConsolationController ctrl = new OlympicConsolationController(); ctrl.Competition = competition; return(ctrl); } if (competition.GetType() == typeof(OlympicDE)) { CompetitionController ctrl = new OlympicDEController(); ctrl.Competition = competition; return(ctrl); } if (competition.GetType() == typeof(Olympic)) { CompetitionController ctrl = new OlympicController(); ctrl.Competition = competition; return(ctrl); } if (competition.GetType() == typeof(FppSwiss)) { FppsSwissController ctrl = new FppsSwissController(); ctrl.Competition = competition; return(ctrl); } if (competition.GetType() == typeof(Swiss)) { SwissController ctrl = new SwissController(); ctrl.Competition = competition; return(ctrl); } if (competition.GetType() == typeof(Robin)) { RobinController ctrl = new RobinController(); ctrl.Competition = competition; return(ctrl); } if (competition.GetType() == typeof(Swing)) { SwingController ctrl = new SwingController(); ctrl.Competition = competition; return(ctrl); } throw new Exception("Unknown Competition Controller"); }