def getInGamePlayerMinutes(player, game): clock = game.Clock events = game.OrderedGameEvents timeplayed = 0 parts = filter(lambda p : p.HasTime and clock.ActivePart.Number != int(EFootballClockPart.Penalties), clock.Parts) if player.InitialState == player.State.InPlay and player.State == player.State.InPlay and not player.IsOut: # player started and finished in play timeplayed = getFullGameMinutes(clock, game, parts) elif player.State == player.State.InPlay and player.IsOut: # red ou double yellow or just out injuried timeplayed = __getPlayerPartsMinutes(clock, game, parts, startPart = player.GamePartIn, minuteOut = player.MinuteOut, endPart = player.GamePartOut, player = player) elif player.InitialState == EPlayerState.InPlay and player.State == EPlayerState.SubstOut:#player started in play and is in bench timeplayed = __getPlayerPartsMinutes(clock, game, parts, minuteOut = player.MinuteOut, endPart = player.GamePartOut, player = player) elif player.InitialState == EPlayerState.InBench and player.State == EPlayerState.InPlay:#player started in bench and is in play timeplayed = __getPlayerPartsMinutes(clock, game, parts, startPart = player.GamePartIn, minuteIn = player.MinuteIn, player = player) elif player.InitialState == EPlayerState.InBench and player.State == EPlayerState.SubstOut:#player started in bench and finished in bench but played timeplayed = __getPlayerPartsMinutes(clock, game, parts, startPart = player.GamePartIn, minuteOut = player.MinuteOut, endPart = player.GamePartOut, minuteIn = player.MinuteIn, player = player) return timeplayed