# -*- encoding: utf-8 -*- clr.AddReference("Wtvision.Sports.Models.Football") from Wtvision.Sports.Models.Football import FootballEvents clr.AddReference("Wtvision.Link.R3SpaceEngine") from Wtvision.Link import R3SpaceEngine from System.IO import Path, Directory from System.Threading.Tasks import Task from Wtvision.Link import R3SpaceEngine from Wtvision.Tools.Graphics import Tools from itertools import islice global team global playersNumbersIn global playersNumbersOut def externalTake(gameTeam, substitutionsList): global team global playersNumbersIn global playersNumbersOut playersIn = [] playersOut = [] for sub in substitutionsList: playersIn.append(sub["PlayerIn"]) playersOut.append(sub["PlayerOut"]) team = Game.HomeTeam if gameTeam == "Home" else Game.AwayTeam playersNumbersIn = playersIn playersNumbersOut = playersOut graph = GraphicTemplatesManager.GetGraphicByName(Script.Name) graphicsOnAir = IntelliflowController.GetGraphicOnAirItems(graph.Name, OutputManager.ActiveChannelOutput) IntelliflowController.TakeIn(graph, OutputManager.ActiveChannelOutput, workflowType = IntelliflowController.EWorkflowType.Preview) def __onStart(graphicOnAirItem, momentExecution, workFlowtype): global team global playersNumbersIn global playersNumbersOut if GameOnline.Clock.ActivePart.Name.ToString() == "First Half" or GameOnline.Clock.ActivePart.Name.ToString() == "First Extra Time": momentExecution.Message = "CANNOT TAKE THIS GRAPHIC IN FIRST HALF OR FIRST EXTRA TIME" momentExecution.Cancel = True return if workFlowtype.ToString() != "PreviewToProgram": delCount = len(playersNumbersOut) for sub in islice(playersNumbersOut, delCount): if __validationPlayers(team.InGame, sub.ToString(), "Out") == False: momentExecution.Message = "The following OUT number is invalid: %s" %sub.ToString() momentExecution.Cancel = True return delCount = len(playersNumbersIn) for sub in islice(playersNumbersIn, delCount): if __validationPlayers(team.InGame, sub.ToString(), "In") == False: momentExecution.Message = "The following IN number is invalid: %s" %sub.ToString() momentExecution.Cancel = True return playersNumbersIn = playersNumbersIn[-delCount:] playersNumbersOut = playersNumbersOut[-delCount:] def __validationPlayers(team, playerNumber, typePlayer = None): global playersNumbersIn global playersNumbersOut outMatchNumber = 0 inMatchNumber = 0 for enum, player in enumerate(team): if player.Number.ToString() == playerNumber.ToString(): if typePlayer == "Out": playersNumbersOut.append(player) outMatchNumber += 1 elif typePlayer == "In": playersNumbersIn.append(player) inMatchNumber += 1 return True if outMatchNumber == 0: return False if inMatchNumber == 0: return False return False def __getData(graphicOnAirItem, viewBag, momentExecution): viewBag.Clear() size = len(playersNumbersOut) viewBag.SetString("vLines", size) viewBag.SetFloat("vArrowType", 2) viewBag.SetVisibility("vTitleVisibility", True) viewBag.SetTranslatedText("tTitle", "{{Half-Time Substitution}}.{{Substitution Plural}}|filter:ToUpper ") if GameOnline.Clock.ActivePart.Name.ToString() == "After 90 Minutes": viewBag.SetTranslatedText("tTitle", "{{Substitution}}.{{Substitution Plural}}|filter:ToUpper ") if GameOnline.Clock.ActivePart.Name.ToString() == "Extra-Time Break" or GameOnline.Clock.ActivePart.Name.ToString() == "Second Extra Time": viewBag.SetTranslatedText("tTitle", "{{Extra-Time Break Substitution}}.{{Substitution Plural}}|filter:ToUpper ") viewBag.SetTranslatedText("tInformation", "{{PLAYERS OUT}}.{{Substitution}}") viewBag.SetImage("lgTeamBadge", "Images/Badges/%s.png" % team.RefName) for enum, playerOut in enumerate(playersNumbersOut, 1): viewBag.SetString("tPlayerNumber%02d" % enum, playerOut.Number) viewBag.SetString("tPlayerFirstName%02d" % enum, "") viewBag.SetString("tPlayerLastName%02d" % enum, playerOut.LastName) if playerOut.LastName == "": viewBag.SetString("tPlayerLastName%02d" % enum, playerOut.NickName) graphicOnAirItem.ExtraData["Team"] = team graphicOnAirItem.ExtraData["PlayersIn"] = playersNumbersIn graphicOnAirItem.ExtraData["PlayersOut"] = playersNumbersOut def __afterProgram(graphicOnAirItem, momentExecution): global playersNumbersIn global playersNumbersOut graphic = GraphicTemplatesManager.GetGraphicByName("SUBSTITUTION MULTI OUT + IN HALFTIME CONTINUE") graphicsOnAirItem = IntelliflowController.GetGraphicOnAirItems(graphic, OutputManager.ActiveChannelOutput) IntelliflowController.TakeIn(graphic, OutputManager.ActiveChannelOutput, workflowType = IntelliflowController.EWorkflowType.Preview, extraData = graphicOnAirItem.ExtraData)