local UIQuestionnairePanel = UIViewClass() local EventSystem = require('Event/EventSystem') function UIQuestionnairePanel:OnOpened(context) self:RegistSystemEvent(EventID.UI_QuestionnaireRewardRefresh, self.RefreshQuestionnaireList) self.selectIndex = nil self:RefreshQuestionnaireList() end function UIQuestionnairePanel:OnBackButtonPressed() self:OnButtonClicked(self.UICommonPopUp.btn_Close) end function UIQuestionnairePanel:OnButtonClicked(comp) if comp == self.btn_FillIn then local questionnaireData = DataSheetManager.Questionnaire:GetDataByID(self.questionnaireId) if questionnaireData.Type == 2 then if GameAppInfo.IsAndroidPackage() then SDKUtil.AndroidCallMethod("openBrowser", questionnaireData.Link, "", true, true) elseif GameAppInfo.IsiOSPackage() then SDKUtil.OpenBrowserByWebId(questionnaireData.Link) end else if GameAppInfo.IsPCPackage() then MDL.Questionnaire.QuestionnairRewardReq(self.questionnaireId) else MDL.Questionnaire.SetQuestionnaireId(self.questionnaireId) end UnityEngine.Application.OpenURL(questionnaireData.Link) end end end function UIQuestionnairePanel:RefreshQuestionnaireList(isClaimReward) local validList = MDL.Questionnaire.GetValidQuestionnaireIdList() if validList and #validList > 0 then if self.loop_QuestionList.Count > 0 then self.loop_QuestionList:ClearCells() end for i, v in ipairs(validList) do self.loop_QuestionList:AddData(v, 0) end if isClaimReward then self.selectIndex = nil end local index = self.selectIndex or 0 if index ~=nil then MDL.Questionnaire.ChangeRedPointStateById(validList[index+1].ID) end self.loop_QuestionList:SelectIndex(index) else self:CloseView() EventSystem.Dispatch(EventID.UI_WelfareBase_RefreshEventList) end end function UIQuestionnairePanel:RefreshQuestionnairePanel(id) self:RefreshQuestionnaireReward(id) local questionnaireData = DataSheetManager.Questionnaire:GetDataByID(id) UIUtils.SetImageByAssetBundle(self.img_Question, questionnaireData.Pic) -- 如果是开服天数限制类型的调查问卷,自己算倒计时传进去 if #questionnaireData.SeverOpenDays > 0 then -- 开服时间 + 活动时间间隔 local questionnaireEndTime = MDL.Player.GetServerOpenTs() + ((questionnaireData.SeverOpenDays[2] - questionnaireData.SeverOpenDays[1]) * UTL.Time.TotalSecondsOneDay) -- 使用活动结束时间戳 - 玩家当前时间戳 得出 倒计时时间戳 local diffTimeStamp = questionnaireEndTime - UTL.Time.GetServerTimestamp() -- 传入倒计时器 if diffTimeStamp > 0 then self.bg_Time:ResetAndBeginCustomTimer(false, diffTimeStamp, 0, UIUtils.GetLocalizedTxt(Const_IDS["IDS_BossChallenge_SeasonLeftTime"]), 1) else self.bg_Time:EndTimer() end UIUtils.SetLabelText(self.lab_TimeTitle, Const_IDS["IDS_Questionnaire_Countdown"]) elseif questionnaireData.EndTime > 0 then local time = UTL.Time.GetServerIntervalTimeByTimeId(questionnaireData.EndTime) if time > 0 then self.bg_Time:ResetAndBeginCustomTimer(false, time, 0, UIUtils.GetLocalizedTxt(Const_IDS["IDS_BossChallenge_SeasonLeftTime"]), 1) else self.bg_Time:EndTimer() end UIUtils.SetLabelText(self.lab_TimeTitle, Const_IDS["IDS_Questionnaire_Countdown"]) else self.bg_Time:EndTimer() end end function UIQuestionnairePanel:RefreshQuestionnaireReward(id) local questionnaireRewardId = DataSheetManager.Questionnaire:GetDataByID(id).QuestionnaireRewardID local questionnaireData = DataSheetManager.QuestionnaireReward:GetDataByID(questionnaireRewardId).Item_Table if self.loop_QuestionReward.Count > 0 then self.loop_QuestionReward:ClearCells() end for i, v in ipairs(questionnaireData) do self.loop_QuestionReward:AddData(v, 0) end end function UIQuestionnairePanel:OnCellInit(scrollRect, index, cellTable, data) if scrollRect == self.loop_QuestionList then UIUtils.SetLabelText(cellTable.lab_UnSelected, Const_IDS[data.Title]) UIUtils.SetLabelText(cellTable.lab_Selected, Const_IDS[data.Title]) UIUtils.SetActive(cellTable.RedPoint,MDL.Questionnaire.IsShowQuestionnaireRedPointById(data.ID)) elseif scrollRect == self.loop_QuestionReward then UTL.Item.SetItemCell(cellTable.item, data.ItemID, data.ItemNum) end end function UIQuestionnairePanel:OnCellSelect(scrollRect, index, cellTable, data) if scrollRect == self.loop_QuestionList then self.questionnaireId = data.ID self.selectIndex = index MDL.Questionnaire.ChangeRedPointStateById(data.ID) UIUtils.SetActive(cellTable.RedPoint,MDL.Questionnaire.IsShowQuestionnaireRedPointById(data.ID)) self:RefreshQuestionnairePanel(data.ID) EventSystem.Dispatch(EventID.UI_Welfare_Questionnaire_Click) EventSystem.Dispatch(EventID.UI_WelfareBase_RefreshRedPoint) end end function UIQuestionnairePanel:OnCellClicked(scrollRect, index, cellTable, target, data) if scrollRect == self.loop_QuestionReward then UTL.ItemTips.ShowCommonTipsById(data.ItemID) end end return UIQuestionnairePanel