# -*- encoding: utf-8 -*- import footballstatshelper import helper HOME_TEAM = Game.HomeTeam AWAY_TEAM = Game.AwayTeam class PlayerInfo: def __init__( self, index, isHomeTeam, number=0, name="", function="", card=False, ): _homeOrAway = "Home" if isHomeTeam else "Away" _index = index + 1 self._number = ( "t{}PlayerNumber{:02d}".format(_homeOrAway, _index), str(number), ) self._name = ("t{}PlayerName{:02d}".format(_homeOrAway, _index), name) self._function = ( "t{}PlayerFunction{:02d}".format(_homeOrAway, _index), function, ) self._card = ( "v{}PlayerAtRiskVisibility{:02d}".format(_homeOrAway, _index), card, ) def getNumber(self): return self._number def getName(self): return self._name def getFunction(self): return self._function def getCard(self): return self._card def isValidGame(team, teamName): if not team.Coach: return -1, "{} has no coach".format(teamName) captain = filter(lambda player: player.IsCaptain, team.Players)[0] if captain.State.ToString() == "InBench": return -1, "{} Captain in Bench! Please remove it!".format(teamName) diffBenchAmount = ( len(team.InBench) != 9 and UserInteraction.ShowMessageBoxYesNo( "{} Bench".format(teamName), "{} bench players are different than 9.\n\nContinue anyway?".format( teamName ), ).ToString() != "Yes" ) if diffBenchAmount: return -1, "Canceled" return 0, "" def __onStart(graphicOnAirItem, momentExecution, workFlowtype): if workFlowtype == IntelliflowController.EWorkflowType.PreviewToProgram: return if ( workFlowtype != IntelliflowController.EWorkflowType.Preview and GameOnline.IsOnAir ): momentExecution.Message = "Online Is On Air" momentExecution.Cancel = True return status, message = isValidGame(HOME_TEAM, "Home Team") if status == -1: momentExecution.Message = message momentExecution.Cancel = True return status, message = isValidGame(AWAY_TEAM, "Away Team") if status == -1: momentExecution.Message = message momentExecution.Cancel = True return def fillInBench(view, playersInBench, isHomeTeam): """ Fills graphic tags correspondent to InBench. Args: view (TagsViewBag): Reference for Graphic Template Tags playersInBench (list[FootballGamePlayers], optional): List of players InBench. Defaults to `CURRENT_TEAM.InBench`. """ def _getPlayerFunctions(player): playerFunction = "" if player.IsGoalKeeper: playerFunction += "{{(GK)}} " if player.IsCaptain: playerFunction += "{{(C)}} " return playerFunction view.SetFloat("v{}Lines".format("Home" if isHomeTeam else "Away"), len(playersInBench)) inBench = [] for i, player in enumerate(playersInBench): inBench.append( PlayerInfo( i, isHomeTeam, player.Number, player.ShortName.upper(), _getPlayerFunctions(player).upper(), player.AtRisk ) ) for player in inBench: (numberKey, numberValue) = player.getNumber() (nameKey, nameValue) = player.getName() (functionKey, functionValue) = player.getFunction() (cardKey, cardValue) = player.getCard() view.SetString(numberKey, numberValue) view.SetString(nameKey, nameValue) view.SetTranslatedText(functionKey, functionValue) view.SetVisibility(cardKey, cardValue) def fillTeamInfo(view, team, isHomeTeam): """ Fills graphic tags correspondent to InBench. Args: view (TagsViewBag): Reference for Graphic Template Tags team (FootballGameTeam): Football Team. Defaults to CURRENT_TEAM. """ homeOrAway = "Home" if isHomeTeam else "Away" view.SetImage( "lg{}TeamBadge".format(homeOrAway), "Images\LigaPortugal\Badges\{}.png".format(team.RefName), ) view.SetImage( "lg{}TeamBadgeOutline".format(homeOrAway), "Images\LigaPortugal\Badges_Outline\{}.png".format(team.RefName), ) view.SetString("t{}TeamName".format(homeOrAway), team.ShortName.upper()) view.SetString( "v{}TeamColor.RGB".format(homeOrAway), helper._get_base_color(team.RefName) ) def fillCoachInfo(view, coach, isHomeTeam): """ Fills graphic tags correspondent to InBench. Args: view (TagsViewBag): Reference for Graphic Template Tags coach (FootballGameCoach): Football Team's Coach. Defaults to CURRENT_TEAM. """ homeOrAway = "Home" if isHomeTeam else "Away" view.SetString("t{}CoachName".format(homeOrAway), coach.ShortName.upper()) view.SetTranslatedText( "t{}CoachFunction".format(homeOrAway), "{{%s}}" % coach.Function.ToString().upper(), ) def fillCompetitionInfo(view): view.SetImage( "lgCompetitionBadge_In", "Images/LigaPortugal/CompetitionBadge/In/LogoBetclic_In_5_11.png", ) view.SetImage( "lgCompetitionBadge_Out", "Images/LigaPortugal/CompetitionBadge/Out/LogoBetclic_Out_5_9.png", ) def __getData(graphicOnAirItem, viewBag, momentExecution): viewBag.Clear() # Fill HomeTeam fillInBench(viewBag, HOME_TEAM.InBenchByKeeperAndShirt, True) fillTeamInfo(viewBag, HOME_TEAM, True) fillCoachInfo(viewBag, HOME_TEAM.Coach, True) # Fill AwayTeam fillInBench(viewBag, AWAY_TEAM.InBenchByKeeperAndShirt, False) fillTeamInfo(viewBag, AWAY_TEAM, False) fillCoachInfo(viewBag, AWAY_TEAM.Coach, False) # Fill Competition Info fillCompetitionInfo(viewBag)