--[[ 冠军赛--决赛界面 ]] local UIHeroMatch3v3Stage5 = UIViewClass() local TimerString = string.FormatByIdsId(Const_IDS.IDS_HeroMatch3v3_StartInMinutes, "{0}:{1}:{2}") local BattleTimerString = UIUtils.GetLocalizedTxt(Const_IDS.IDS_HeroMatch3v3_SkipBattleTime) .. "{0}:{1}:{2}" function UIHeroMatch3v3Stage5:OnOpened(context) self:RegistSystemEvent(EventID.UI_HeroMatch3v3_RefreshPlayerInfo, self.RefreshStage5) -- 刷新选手信息 self.matchStageCfg = DataSheetManager.TeamMatchStage:GetDataByID(MDL.HeroMatch3v3.Stage.match_2T1) self:RefreshStage5() end function UIHeroMatch3v3Stage5:RefreshPlayerInfo() self:RefreshStage5() end function UIHeroMatch3v3Stage5:OnButtonClicked(comp) if comp == self.btn_WatchLeft then -- 左边观战 MDL.WatchBattle.WatchBattleRequest(self.leftTeamInfo.groomId, MDL.WatchBattle.WatchBattleType.HeroMatch3v3, self.leftTeamInfo.playerIds[1], MDL.HeroMatch3v3.GetCurStageID()) elseif comp == self.btn_GuessLeft then -- 左边竞猜 MDL.HeroMatch3v3.HeroMatchBattleBetRequest(self.winnerInfo.stageId, self.groupInfo.groupId, self.leftTeamInfo.teamId) elseif comp == self.btn_WatchRight then -- 右边观战 MDL.WatchBattle.WatchBattleRequest(self.rightTeamInfo.groomId, MDL.WatchBattle.WatchBattleType.HeroMatch3v3, self.rightTeamInfo.playerIds[1], MDL.HeroMatch3v3.GetCurStageID()) elseif comp == self.btn_GuessRight then -- 右边竞猜 MDL.HeroMatch3v3.HeroMatchBattleBetRequest(self.winnerInfo.stageId, self.groupInfo.groupId, self.rightTeamInfo.teamId) elseif comp == self.group_Player01.UIHeroHead.img_PlayerAvatarBg then CTL.PlayerInteract.OpenFriendInteractView(self.leftTeamInfo.acids[1]) elseif comp == self.group_Player02.UIHeroHead.img_PlayerAvatarBg then CTL.PlayerInteract.OpenFriendInteractView(self.leftTeamInfo.acids[2]) elseif comp == self.group_Player03.UIHeroHead.img_PlayerAvatarBg then CTL.PlayerInteract.OpenFriendInteractView(self.leftTeamInfo.acids[3]) elseif comp == self.group_Player04.UIHeroHead.img_PlayerAvatarBg then CTL.PlayerInteract.OpenFriendInteractView(self.rightTeamInfo.acids[1]) elseif comp == self.group_Player05.UIHeroHead.img_PlayerAvatarBg then CTL.PlayerInteract.OpenFriendInteractView(self.rightTeamInfo.acids[2]) elseif comp == self.group_Player06.UIHeroHead.img_PlayerAvatarBg then CTL.PlayerInteract.OpenFriendInteractView(self.rightTeamInfo.acids[3]) end end function UIHeroMatch3v3Stage5:RefreshStage5() self.state_BtnLeft:SetState(2) self.state_BtnRight:SetState(2) self.winnerInfo = MDL.HeroMatch3v3.GetMatchStageInfo(MDL.HeroMatch3v3.Stage.match_2T1) self.groupInfo = self.winnerInfo.groupInfos[1] self.curTurn = self.groupInfo.turn self.leftTeamInfo = self.groupInfo.teamInfos[1] self.rightTeamInfo = self.groupInfo.teamInfos[2] self.leftHavePlayerInfo = self.leftTeamInfo.teamId ~= "" self.rightHavePlayerInfo = self.rightTeamInfo.teamId ~= "" -- 已竞猜 self.isLeftGuess = MDL.HeroMatch3v3.CheckIsGuessByGroupID_TeamID(self.groupInfo.groupId, self.leftTeamInfo.teamId) UIUtils.SetActive(self.group_LeftTeam.img_Bet, self.leftHavePlayerInfo and self.isLeftGuess or false) self.isRightGuess = MDL.HeroMatch3v3.CheckIsGuessByGroupID_TeamID(self.groupInfo.groupId, self.rightTeamInfo.teamId) UIUtils.SetActive(self.group_RightTeam.img_Bet, self.rightHavePlayerInfo and self.isRightGuess or false) self.cdTimer:EndTimer() if self.winnerInfo.state == MDL.HeroMatch3v3.Enum_State.Ready then -- 准备中 self:SetReadyInfo() elseif self.winnerInfo.state == MDL.HeroMatch3v3.Enum_State.Battle then -- 战斗中 if self.groupInfo.groupState == MDL.HeroMatch3v3.Enum_GroupState.Battle then self.state_BtnLeft:SetState(0) self.state_BtnRight:SetState(0) self.state_Match:SetState(1) self:SetStage5Score(self.group_ScoreFight[1], self.group_ScoreFight[2]) UIUtils.SetLabelText(self.txt_Round2, CTL.HeroMatch3v3.RoundTitle[self.winnerInfo.groupInfos[1].turn]) else if self.curTurn == 3 then self:SetFinishInfo() else self:SetReadyInfo(true) end end elseif self.winnerInfo.state == MDL.HeroMatch3v3.Enum_State.Matching then -- 匹配中 self:SetReadyInfo() else self:SetFinishInfo() end --左边队伍 self:SetTeamInfo(self.group_LeftTeam, self.leftHavePlayerInfo, self.leftTeamInfo, true) --右边队伍 self:SetTeamInfo(self.group_RightTeam, self.rightHavePlayerInfo, self.rightTeamInfo, false) end function UIHeroMatch3v3Stage5:SetTeamInfo(group, havePlayerInfo, teamInfo, isLeft) group.state_Info:SetState(2) if havePlayerInfo then group.state_Info:SetState(0) group.txt_TeamName.text = teamInfo.teamName local info_1 = MDL.HeroMatch3v3.GetPlayerInfoByACID(teamInfo.acids[1]) group.txt_Server.text = CTL.CrossServer.GetFormatServerShow(info_1.ShowServerId) local info_2 = MDL.HeroMatch3v3.GetPlayerInfoByACID(teamInfo.acids[2]) local info_3 = MDL.HeroMatch3v3.GetPlayerInfoByACID(teamInfo.acids[3]) if isLeft then self:SetPlayerInfo(self.group_Player01, info_1) self:SetPlayerInfo(self.group_Player02, info_2) self:SetPlayerInfo(self.group_Player03, info_3) if info_1 then UIUtils.SetCanvasSortingOrderByMainCanvas(self.group_Player01.UIHeroHead.effectUpCanvas, self.group_Player01.img_Captain, CTL.Character.UpOrder.Common) end else self:SetPlayerInfo(self.group_Player04, info_1) self:SetPlayerInfo(self.group_Player05, info_2) self:SetPlayerInfo(self.group_Player06, info_3) if info_1 then UIUtils.SetCanvasSortingOrderByMainCanvas(self.group_Player04.UIHeroHead.effectUpCanvas, self.group_Player04.img_Captain, CTL.Character.UpOrder.Common) end end else group.state_Info:SetState(1) if isLeft then self:SetPlayerInfo(self.group_Player01, nil) self:SetPlayerInfo(self.group_Player02, nil) self:SetPlayerInfo(self.group_Player03, nil) else self:SetPlayerInfo(self.group_Player04, nil) self:SetPlayerInfo(self.group_Player05, nil) self:SetPlayerInfo(self.group_Player06, nil) end end end function UIHeroMatch3v3Stage5:SetPlayerInfo(comp, info) if info then UIUtils.SetActive(comp.gameObject, true) CTL.Character.SetPortraitAndFrame(comp.UIHeroHead, info.PortraitId, info.FrameId) if info.acid == BattleDataGetter.GetAcID() then comp.txt_Name.text = UTL.Color.FormatTextByColor("fff08b", info.name) else comp.txt_Name.text = info.name end UIUtils.SetLabel(comp.txt_GuildName, info.guildName) CTL.Guild.SetGuildEmblem(comp.img_Guild, comp.txt_Guild, info.EmblemFrame, info.EmblemContent) comp.txt_BR.text = info.gsSum else UIUtils.SetActive(comp.gameObject, false) end end function UIHeroMatch3v3Stage5:SetReadyInfo(isBattleTips) if self.curTurn > 1 or self.isLeftGuess or not self.leftHavePlayerInfo then self.state_BtnLeft:SetState(2) else self.state_BtnLeft:SetState(isBattleTips and 2 or 1) end if self.curTurn > 1 or self.isRightGuess or not self.rightHavePlayerInfo then self.state_BtnRight:SetState(2) else self.state_BtnRight:SetState(isBattleTips and 2 or 1) end self.state_Match:SetState(0) self:SetCDTimer(isBattleTips) self:SetStage5Score(self.group_ScoreFight[1], self.group_ScoreFight[2]) end function UIHeroMatch3v3Stage5:SetCDTimer(isBattleTips) UIUtils.SetLabelText(self.txt_Round1, CTL.HeroMatch3v3.RoundTitle[self.winnerInfo.groupInfos[1].turn]) local timer = self.winnerInfo.stateEndTime - UTL.Time.GetServerTimestamp() if timer > 0 then if isBattleTips then self.cdTimer:ResetAndBeginCustomTimer(false, timer, 0, BattleTimerString) else self.cdTimer:ResetAndBeginCustomTimer(false, timer, 0, TimerString) end end end function UIHeroMatch3v3Stage5:SetFinishInfo() self.state_BtnLeft:SetState(2) self.state_BtnRight:SetState(2) self.state_Match:SetState(2) self:SetStage5Score(self.group_Score[1], self.group_Score[2]) end function UIHeroMatch3v3Stage5:SetStage5Score(WinLeftNum, WinRightNum) local left = self.leftTeamInfo.winNum or 0 local right = self.rightTeamInfo.winNum or 0 if self.leftHavePlayerInfo and self.rightHavePlayerInfo then local isLeftWin = left > right UIUtils.SetLabel(WinLeftNum, (isLeftWin and self.curTurn == 3) and UTL.Color.FormatTextByColor(MDL.HeroMatch3v3.WinColor, left) or UTL.Color.FormatWhiteColor(left)) UIUtils.SetLabel(WinRightNum, (not isLeftWin and self.curTurn == 3) and UTL.Color.FormatTextByColor(MDL.HeroMatch3v3.WinColor, right) or UTL.Color.FormatWhiteColor(right)) elseif self.leftHavePlayerInfo and not self.rightHavePlayerInfo then UIUtils.SetLabel(WinLeftNum, self.curTurn == 3 and UTL.Color.FormatTextByColor(MDL.HeroMatch3v3.WinColor, left) or UTL.Color.FormatWhiteColor(left)) UIUtils.SetLabel(WinRightNum, UTL.Color.FormatWhiteColor(0)) elseif self.rightHavePlayerInfo and not self.leftHavePlayerInfo then UIUtils.SetLabel(WinLeftNum, UTL.Color.FormatWhiteColor(0)) UIUtils.SetLabel(WinRightNum, self.curTurn == 3 and UTL.Color.FormatTextByColor(MDL.HeroMatch3v3.WinColor, right) or UTL.Color.FormatWhiteColor(right)) else UIUtils.SetLabel(WinLeftNum, UTL.Color.FormatWhiteColor(0)) UIUtils.SetLabel(WinRightNum, UTL.Color.FormatWhiteColor(0)) end end return UIHeroMatch3v3Stage5