コード例 #1
0
        public static void CreateFixturesForDivision(int seasonId, int divisionId, bool homeHalf)
        {
            var MatchesPerRound = GameData.TeamsPerDivision / 2;
            var RoundsPerSeason = GameData.TeamsPerDivision - 1;
            // division 1
            var fixedteamid = TeamData.GetTeamsByDivisionId(divisionId)
                              .OrderBy(t => t.Id)
                              .FirstOrDefault().Id;

            var allteamidlist = TeamData.GetTeamsByDivisionId(divisionId)
                                .Select(t => t.Id);

            var teamidlist = TeamData.GetTeamsByDivisionId(divisionId)
                             .Where(t => t.Id != fixedteamid)
                             .Select(t => t.Id);

            // week one separately
            for (var homeid = 1; homeid <= MatchesPerRound; homeid++)
            {
                AddFixture(seasonId, 1 + (!homeHalf ? (GameData.TeamsPerDivision - 1) : 0), divisionId, homeHalf,
                           allteamidlist.ElementAt(homeid - 1),
                           allteamidlist.ElementAt(GameData.TeamsPerDivision - homeid));
            }

            // week 2 onwards..
            var reverseGameOne = true;

            for (var week = 1; week < RoundsPerSeason; week++)
            {
                // first game with fixed team
                var firstgameaway = RoundsPerSeason - week - 1;
                var doReverse     = reverseGameOne ? !homeHalf : homeHalf;

                AddFixture(seasonId, week + 1 + (!homeHalf ? (GameData.TeamsPerDivision - 1) : 0), divisionId, doReverse,
                           fixedteamid, teamidlist.ElementAt(firstgameaway));

                reverseGameOne = !reverseGameOne;

                // other 11 games round robin
                for (var loop = 0; loop < (MatchesPerRound - 1); loop++)
                {
                    var hometeamindex = RoundsPerSeason - week + loop;
                    if (hometeamindex > (RoundsPerSeason - 1))
                    {
                        hometeamindex -= RoundsPerSeason;
                    }
                    var hometeamid = teamidlist.ElementAt(hometeamindex);

                    var awayteamindex = (RoundsPerSeason - 2) - week - loop;
                    if (awayteamindex < 0)
                    {
                        awayteamindex += RoundsPerSeason;
                    }
                    var awayteamid = teamidlist.ElementAt(awayteamindex);

                    AddFixture(seasonId, week + 1 + (!homeHalf ? (GameData.TeamsPerDivision - 1) : 0), divisionId, homeHalf, hometeamid, awayteamid);
                }
            }
        }
コード例 #2
0
ファイル: SeasonData.cs プロジェクト: srog/FMS
        public static void CreateProRelData()
        {
            int numPromoted  = GameData.TeamsPerDivision / 6;
            int numRelegated = GameData.TeamsPerDivision / 6;

            foreach (var division in DivisionData.GetDivisions())
            {
                if (division.Id != 1)
                {
                    // do promotions
                    for (var teamindex = 1; teamindex <= numPromoted; teamindex++)
                    {
                        var teamid = TeamData.GetTeamsByDivisionId(division.Id)
                                     .FirstOrDefault(t => t.Position == teamindex)
                                     .Id;

                        ProRelData.AddProRel(
                            GameData.CurrentSeason,
                            division.Id,
                            teamid,
                            teamindex == 1 ? "Champions" : "Promoted");
                    }
                }
                if (division.Id != DivisionData.GetDivisions().Max(d => d.Id))
                {
                    // do relegations
                    for (var teamindex = GameData.TeamsPerDivision; teamindex > (GameData.TeamsPerDivision - numRelegated); teamindex--)
                    {
                        var team = TeamData.GetTeamsByDivisionId(division.Id)
                                   .FirstOrDefault(t => t.Position == teamindex);
                        if (team == null)
                        {
                            throw new Exception("No team found at position ");
                        }
                        var teamid = team.Id;

                        ProRelData.AddProRel(
                            GameData.CurrentSeason,
                            division.Id,
                            teamid,
                            "Relegated");
                    }
                }
            }
        }
コード例 #3
0
ファイル: TeamStatsData.cs プロジェクト: srog/FMS
 public static void CreateDivisionData(int seasonId, int divisionId)
 {
     foreach (var team in TeamData.GetTeamsByDivisionId(divisionId))
     {
         var teamstat = new TeamStats()
         {
             Id           = GetNextId(),
             DivisionId   = divisionId,
             SeasonId     = seasonId,
             TeamId       = team.Id,
             Played       = 0,
             Won          = 0,
             Drawn        = 0,
             Lost         = 0,
             GoalsFor     = 0,
             GoalsAgainst = 0
         };
         TeamStats.Add(teamstat);
     }
 }