Esempio n. 1
0
        public static void CalculateKvittningar(this IEnumerable<PlayEvent> penalties, PlayersOnIce playersOnIce)
        {
            var penaltyList = penalties.ToList();

            var homePenalties = penaltyList.Where(p => p.HomeTeam && !p.PenaltyIsMisconduct).ToList();
            var awayPenalties = penaltyList.Where(p => !p.HomeTeam && !p.PenaltyIsMisconduct).ToList();

            if (IsExceptionToRule(playersOnIce, homePenalties, awayPenalties))
                return;

            foreach (var homePenalty in homePenalties)
            {
                var awayPenaltyThatShouldKvittas = awayPenalties.WithoutKvittningar().FirstOrDefault(p => p.StartTime == homePenalty.StartTime && p.PenaltyTime == homePenalty.PenaltyTime);
                if (awayPenaltyThatShouldKvittas == null)
                    continue;

                homePenalty.IsKvittad = true;
                awayPenaltyThatShouldKvittas.IsKvittad = true;
            }

            //Handle extra minors if original penalty is kvittad they should get the original startime
            foreach (var penalty in penaltyList.WithoutKvittningar().Where(p => p.HasOriginalPenalty))
            {
                penalty.HandleOriginalPenaltyIsKvittad();
            }
        }
Esempio n. 2
0
        private void CalculatePlayersOnIce(int startTime)
        {
            var homePenalties = _penalties.WithoutKvittningar().Count(p => p.HomeTeam && !p.PenaltyIsMisconduct && !p.PenaltyIsGame && p.StartTime <= startTime && p.EndTime > startTime);
            var awayPenalties = _penalties.WithoutKvittningar().Count(p => !p.HomeTeam && !p.PenaltyIsMisconduct && !p.PenaltyIsGame && p.StartTime <= startTime && p.EndTime > startTime);

            _playersOnIce = PlayersOnIce.Unknown;

            if (homePenalties == 0 && awayPenalties == 0)
            {
                _playersOnIce = PlayersOnIce.FiveOnFive;
            }
            if (homePenalties == 0 && awayPenalties == 1)
            {
                _playersOnIce = PlayersOnIce.FiveOnFour;
            }
            if (homePenalties == 0 && awayPenalties >= 2)
            {
                _playersOnIce = PlayersOnIce.FiveOnThree;
            }
            if (homePenalties == 1 && awayPenalties >= 2)
            {
                _playersOnIce = PlayersOnIce.FourOnThree;
            }
            if (homePenalties == 1 && awayPenalties == 0)
            {
                _playersOnIce = PlayersOnIce.FourOnFive;
            }
            if (homePenalties >= 2 && awayPenalties == 0)
            {
                _playersOnIce = PlayersOnIce.ThreeOnFive;
            }
            if (homePenalties >= 2 && awayPenalties == 1)
            {
                _playersOnIce = PlayersOnIce.ThreeOnFour;
            }
            if (homePenalties == 1 && awayPenalties == 1)
            {
                _playersOnIce = PlayersOnIce.FourOnFour;
            }
            if (homePenalties >= 2 && awayPenalties >= 2)
            {
                _playersOnIce = PlayersOnIce.ThreeOnThree;
            }
        }
Esempio n. 3
0
        public static void CalculateKvittningar(this IEnumerable <PlayEvent> penalties, PlayersOnIce playersOnIce)
        {
            var penaltyList = penalties.ToList();

            var homePenalties = penaltyList.Where(p => p.HomeTeam && !p.PenaltyIsMisconduct).ToList();
            var awayPenalties = penaltyList.Where(p => !p.HomeTeam && !p.PenaltyIsMisconduct).ToList();

            if (IsExceptionToRule(playersOnIce, homePenalties, awayPenalties))
            {
                return;
            }

            foreach (var homePenalty in homePenalties)
            {
                var awayPenaltyThatShouldKvittas = awayPenalties.WithoutKvittningar().FirstOrDefault(p => p.StartTime == homePenalty.StartTime && p.PenaltyTime == homePenalty.PenaltyTime);
                if (awayPenaltyThatShouldKvittas == null)
                {
                    continue;
                }

                homePenalty.IsKvittad = true;
                awayPenaltyThatShouldKvittas.IsKvittad = true;
            }

            //Handle extra minors if original penalty is kvittad they should get the original startime
            foreach (var penalty in penaltyList.WithoutKvittningar().Where(p => p.HasOriginalPenalty))
            {
                penalty.HandleOriginalPenaltyIsKvittad();
            }
        }
Esempio n. 4
0
 private static bool IsExceptionToRule(PlayersOnIce playersOnIce, IEnumerable <PlayEvent> homePenalties, IEnumerable <PlayEvent> awayPenalties)
 {
     return(playersOnIce == PlayersOnIce.FiveOnFive &&
            homePenalties.Count(p => p.PenaltyIsMinor) == 1 &&
            awayPenalties.Count(p => p.PenaltyIsMinor) == 1);
 }
Esempio n. 5
0
        private void CalculatePlayersOnIce(int startTime)
        {
            var homePenalties = _penalties.WithoutKvittningar().Count(p => p.HomeTeam && !p.PenaltyIsMisconduct && !p.PenaltyIsGame && p.StartTime <= startTime && p.EndTime > startTime);
            var awayPenalties = _penalties.WithoutKvittningar().Count(p => !p.HomeTeam && !p.PenaltyIsMisconduct && !p.PenaltyIsGame && p.StartTime <= startTime && p.EndTime > startTime);

            _playersOnIce = PlayersOnIce.Unknown;

            if (homePenalties == 0 && awayPenalties == 0)
                _playersOnIce = PlayersOnIce.FiveOnFive;
            if (homePenalties == 0 && awayPenalties == 1)
                _playersOnIce = PlayersOnIce.FiveOnFour;
            if (homePenalties == 0 && awayPenalties >= 2)
                _playersOnIce = PlayersOnIce.FiveOnThree;
            if (homePenalties == 1 && awayPenalties >= 2)
                _playersOnIce = PlayersOnIce.FourOnThree;
            if (homePenalties == 1 && awayPenalties == 0)
                _playersOnIce = PlayersOnIce.FourOnFive;
            if (homePenalties >= 2 && awayPenalties == 0)
                _playersOnIce = PlayersOnIce.ThreeOnFive;
            if (homePenalties >= 2 && awayPenalties == 1)
                _playersOnIce = PlayersOnIce.ThreeOnFour;
            if (homePenalties == 1 && awayPenalties == 1)
                _playersOnIce = PlayersOnIce.FourOnFour;
            if (homePenalties >= 2 && awayPenalties >= 2)
                _playersOnIce = PlayersOnIce.ThreeOnThree;
        }
Esempio n. 6
0
 private static bool IsExceptionToRule(PlayersOnIce playersOnIce, IEnumerable<PlayEvent> homePenalties, IEnumerable<PlayEvent> awayPenalties)
 {
     return playersOnIce == PlayersOnIce.FiveOnFive
            && homePenalties.Count(p => p.PenaltyIsMinor) == 1
            && awayPenalties.Count(p => p.PenaltyIsMinor) == 1;
 }