# -*- 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)