local UIFairSoloTournamentStage4 = UIViewClass() function UIFairSoloTournamentStage4:OnOpened(context) self.stageID = MDL.FairSoloTournament.ConfigStage.Finals_4T2 self:RegistSystemEvent(EventID.UI_FairSoloTournament_RefreshStageInfo, self.RefreshStageInfo) self:RegistSystemEvent(EventID.UI_FairSoloTournament_RefreshPlayerInfo, self.RefreshStageInfo) self:RegistSystemEvent(EventID.UI_FairSoloTournament_RefreshMyInfo, self.RefreshStageInfo) self:RefreshStageInfo() end function UIFairSoloTournamentStage4:OnButtonClicked(comp) for k, battle in ipairs(self.group_Battle) do for playerIndex, playerCell in ipairs(battle) do local groupInfo = self.stageInfo.groupInfos[k] local playerInfo = groupInfo.playerInfos[playerIndex] if comp == playerCell.btn_LeftWatch then -- 左边观战 CTL.FairSoloTournament.WatchBattle(groupInfo, playerInfo.gRoomId, playerInfo.playerId, playerInfo.acid, self.stageID) break elseif comp == playerCell.btn_LeftGuess or comp == playerCell.btn_LeftGuessMore then -- 左边竞猜 CTL.FairSoloTournament.OpenBetKeyBoard(groupInfo.groupId, playerInfo.acid, CTL.FairSoloTournament.ParseBetRate(playerInfo.multiplier), self.stageID, groupInfo.turn) break elseif comp == playerCell.btn_RightWatch then -- 右边观战 CTL.FairSoloTournament.WatchBattle(groupInfo, playerInfo.gRoomId, playerInfo.playerId, playerInfo.acid, self.stageID) break elseif comp == playerCell.btn_RightGuess or comp == playerCell.btn_RightGuessMore then -- 右边竞猜 CTL.FairSoloTournament.OpenBetKeyBoard(groupInfo.groupId, playerInfo.acid, CTL.FairSoloTournament.ParseBetRate(playerInfo.multiplier), self.stageID, groupInfo.turn) break elseif comp == playerCell.group_Player.UIHeroHead.img_PlayerAvatarBg then if playerIndex == 3 then local leftPlayerInfo = groupInfo.playerInfos[1] local rightPlayerInfo = groupInfo.playerInfos[2] local leftHavePlayerInfo, rightHavePlayerInfo = leftPlayerInfo.acid ~= "", rightPlayerInfo.acid ~= "" if leftHavePlayerInfo and rightHavePlayerInfo then local leftWin = leftPlayerInfo.winNum or 0 local rightWin = rightPlayerInfo.winNum or 0 if leftWin > rightWin then playerInfo = leftPlayerInfo else playerInfo = rightPlayerInfo end elseif leftHavePlayerInfo and not rightHavePlayerInfo then playerInfo = leftPlayerInfo elseif rightHavePlayerInfo and not leftHavePlayerInfo then playerInfo = rightPlayerInfo end end if playerInfo.acid ~= BattleDataGetter.GetAcID() then MDL.PlayerInteract.GetPlayerInteractiveInfoReq(playerInfo.acid) end end end end end function UIFairSoloTournamentStage4:RefreshStageInfo() local stageInfo = MDL.FairSoloTournament.GetStageInfo(self.stageID) if stageInfo == nil then MDL.FairSoloTournament.FairTournamentGetStageInfoReq(self.stageID) else self.stageInfo = stageInfo if MDL.FairSoloTournament.TryGetAllPlayerInfo(self.stageID) == false then self.curRound = stageInfo.groupInfos[1].turn if stageInfo.state == MDL.FairSoloTournament.Enum_State.Finish then self.state_Round:SetState(3) else self.state_Round:SetState(self.curRound - 1) end for k, v in ipairs(self.group_Battle) do CTL.FairSoloTournament.SetBattleGroupPlayerInfo(v, self.group_Line[k], stageInfo, stageInfo.groupInfos[k], self.curRound, k == 1) end end end end return UIFairSoloTournamentStage4