local UISceneQuizBetView = UIViewClass() local SceneQuizData = DataSheetManager.SceneQuizData:GetDataByModeTypeID(1) local BetMaxNum = SceneQuizData.BetMaxNum local function BetSortRule(betInfo1, betInfo2) return betInfo1.index < betInfo2.index end function UISceneQuizBetView:OnOpened(context) self.activityId = MDL.SceneQuiz.CurActivityID self:RegistSystemEvent(EventID.UI_SceneQuiz_BetInfoRefresh, self.RefreshBetInfo) self:RegistSystemEvent(EventID.UI_SceneQuiz_StageChange, self.CloseByStage) self.txt_Info.text = string.FormatByIdsKey("IDS_SceneQuiz_BetHint_4", BetMaxNum) self.sortedBetInfoList = {} MDL.SceneQuiz.GetBetInfoReq() end function UISceneQuizBetView:RefreshBetInfo(info) self.betNum = CTL.SceneQuiz.GetBetNum() self.totalNum = info.totalNum --需要按照名次排序,proto结构不允许修改,这里另外维护个sortedList来处理排序 table.clearArray(self.sortedBetInfoList) for i, v in ipairs(info.betInfo) do self.sortedBetInfoList[i] = v end table.sort(self.sortedBetInfoList, BetSortRule) self.loop_BetList:ReloadAll(self.sortedBetInfoList) end function UISceneQuizBetView:CloseByStage() if MDL.SceneQuiz.GetCurStage() ~= MDL.SceneQuiz.ScheduleStage.Bet then CTL.Tips.AddTipsMsg(Const_IDS.IDS_SceneQuiz_MainHint_13) self:CloseView() end end function UISceneQuizBetView:OnBackButtonPressed() self:OnButtonClicked(self.btn_Close) end function UISceneQuizBetView:OnButtonClicked(comp) if comp == self.btn_Close then self:CloseView() elseif comp == self.btn_Reward then CTL.SceneQuiz.OpenRewardPanel(self.activityId, {activityId = self.activityId, index = 2}) elseif comp == self.btn_Rank then CTL.SceneQuiz.OpenRankView(self.activityId, {activityId = self.activityId, rankType = true}) end end function UISceneQuizBetView:OnCellInit(scrollRect, index, cellTable, data) if scrollRect == self.loop_BetList then cellTable.txt_PlayerName.text = data.name local serverId, serverName = CTL.CrossServer.GetServerIDAndServerNameByServerID(data.serverId) cellTable.txt_Server.text = serverId .. "-" .. serverName CTL.Character.SetPortraitAndFrame(cellTable.UIHeroHead, data.portraitId, data.frameId) UIUtils.SetActive(cellTable.group_BetSign, (not self.totalNum == 0) or data.betNum > 0) if self.totalNum > 0 then local percent = data.betNum / self.totalNum cellTable.txt_Num.text = UTL.Attr.FormatNumberToPercentage(percent, 1) cellTable.state_BetPercent:SetState(CTL.SceneQuiz.GetBetPercentState(percent)) end cellTable.state_Bet:SetState(CTL.SceneQuiz.IfBetByAcId(data.acid) and 1 or 0) UIUtils.SetActive(cellTable.img_Self, BattleDataGetter.GetAcID() == data.acid) end end function UISceneQuizBetView:OnCellClicked(scrollRect, index, cellTable, target, data) if scrollRect == self.loop_BetList then if target == cellTable.btn_Bet then if self.betNum >= BetMaxNum then CTL.Tips.AddTipsMsg(Const_IDS.IDS_SceneQuiz_BetHint_2) else MDL.SceneQuiz.BetReq(data.acid, true) end elseif target == cellTable.btn_Cancel then MDL.SceneQuiz.BetReq(data.acid, false) elseif target == cellTable.UIHeroHead.img_PlayerAvatarBg then CTL.PlayerInteract.OpenFriendInteractView(data.acid) end end end return UISceneQuizBetView