local UIInBattleWatchView = require "View/Battle/UIInBattleWatchView" local UISceneQuizWatch = UIViewClass(UIInBattleWatchView) local EventSystem = require('Event/EventSystem') local SceneQuizData = DataSheetManager.SceneQuizData:GetDataByModeTypeID(1) --观战界面 function UISceneQuizWatch:OnOpened(context) self.activityId = MDL.SceneQuiz.CurActivityID self.canGetReward = false self:RegistSystemEvent(EventID.UI_SceneQuiz_MyInfoRefresh, self.UpdateReward) self:RegistSystemEvent(EventID.UI_SceneQuiz_QuizModuleInfoRefresh, self.UpdateReward) UIUtils.SetActive(self.btn_SwitchView, false) --观战者无退出观战按钮 UIUtils.SetActive(self.btn_Exit, not BattleDataGetter.GetIsSceneQuizWatch()) self:UpdateReward() end function UISceneQuizWatch:Init() self.isShowBullet = MDL.SceneQuiz.GetIsFinalsBulletOpen() self:UpdateBulletSwitch(self.isShowBullet) CTL.WatchBattle.SetIsShowBullet(self.isShowBullet) self.canvas_ChatDlg:OpenView(GetViewClass(Const_UI_Lua.UIEnum.UIBattleChatDlgWatch)) end function UISceneQuizWatch:UpdateReward() self.txt_Reward.text = nil self.effect_Reward:StopUIEffect() self.canGetReward = false local info = MDL.SceneQuiz.GetCurStageQuizInfo() if info then local curQuizIndex = info.quizIndex - 1 --淘汰每道题都能领,观战需要观战题目数达标 local isFail = MDL.SceneQuiz.GetIsFailInFinals() if isFail then local lastRewardIndex = MDL.SceneQuiz.GetHasWatchRewardQuizIndex() if curQuizIndex > lastRewardIndex then self.txt_Reward.text = "1/1" self.effect_Reward:PlayUIEffect() self.canGetReward = true else self.txt_Reward.text = "0/1" end else --加时赛需要加上决赛的总题数 if MDL.SceneQuiz.GetCurStage() == MDL.SceneQuiz.ScheduleStage.FinalsExtraTime then curQuizIndex = curQuizIndex + SceneQuizData.FinalQuestionNum end local lastRewardId = MDL.SceneQuiz.GetHasWatchRewardId() for i, v in DataSheetManager.SceneQuizWatchReward:GetEnumerator() do if v.ID > lastRewardId then self.txt_Reward.text = curQuizIndex .. "/" .. v.WatchQuestion if curQuizIndex >= v.WatchQuestion then self.effect_Reward:PlayUIEffect() self.canGetReward = true end break end end end end end function UISceneQuizWatch:OnButtonClicked(comp) if comp == self.btn_Exit then self:CloseView() EventSystem.Dispatch(EventID.UI_SceneQuiz_ExitWatch) elseif comp == self.btn_Reward then if self.canGetReward then MDL.SceneQuiz.SceneQuizWatchRewardReq() else local isFail = MDL.SceneQuiz.GetIsFailInFinals() if isFail then CTL.Tips.AddTipsMsg(Const_IDS.IDS_SceneQuiz_WatchHint_2) else CTL.Tips.AddTipsMsg(Const_IDS.IDS_SceneQuiz_WatchHint_1) end end elseif comp == self.btn_BGM then MDL.SceneQuiz.SetIsFinalsBulletOpen(not self.isShowBullet) self.isShowBullet = MDL.SceneQuiz.GetIsFinalsBulletOpen() self:UpdateBulletSwitch(self.isShowBullet) else UIInBattleWatchView.OnButtonClicked(self, comp) end end return UISceneQuizWatch