local UIHonorOrderChallenge = UIViewClass() local ItemIconPath = ConstAssetPathConfig.ItemIconPath local EventSystem = require('Event/EventSystem') -- 排序:可领取>未完成>已领取>id local function SortTask(task_1, task_2) local isGetRewardA = task_1.State == 1 and 0 or 1 local isGetRewardB = task_2.State == 1 and 0 or 1 if isGetRewardA == isGetRewardB then if task_1.State == task_2.State then return task_1.TaskId < task_2.TaskId end return task_1.State < task_2.State end return isGetRewardA < isGetRewardB end function UIHonorOrderChallenge:OnOpened(context) -- 设置分类页签 UTL.Toggle.InitToggleGroupByIDS(self.toggle_UpGroup, "text_toggle", {Const_IDS.IDS_HonorOrder_RiChangTiaoZhan, Const_IDS.IDS_HonorOrder_ZhouQiTiaoZhan}) self:RegistSystemEvent(EventID.UI_HonorOrder_RefreshChallenge, self.RefreshLevelInfo) -- 刷新任务列表 self:RegistSystemEvent(EventID.UI_HonorOrder_UnOpenActiveRefreshUI, self.RefreshLevelInfo) -- 活动结束刷新界面 self:RegistSystemEvent(EventID.UI_HonorOrderChallenge_ShowSomeEffectUI, self.ShowSomeEffectUI) -- 显示UI self:RegistSystemEvent(EventID.UI_HonorOrderChallenge_HideSomeEffectUI, self.HideSomeEffectUI) -- 隐藏UI self:RegistSystemEvent(CTL.RedPoint.RedPointKey.HonorOrder_Challenge_Daily, self.RefreshDailyRed) -- 每日挑战红点 self:RegistSystemEvent(CTL.RedPoint.RedPointKey.HonorOrder_Challenge_Cycle, self.RefreshCycleRed) -- 周期挑战红点 self:RegistSystemEvent(CTL.RedPoint.RedPointKey.HonorOrder_Challenge, self.RefreshGetRewardRed) -- 一键领取红点 UIUtils.SetActive(self.group_Remind, true) local _, refreshTime = UTL.Time.GetDateDescAndTime({[1] = 1}) UIUtils.SetLabel(self.txt_Time, string.FormatByIdsKey("IDS_HonorOrder_TiaoZhanShuaXin", refreshTime)) self.curTaskType = MDL.HonorOrder.TaskType.Daily MDL.HonorOrder.CurOpenChallengeToggleID = 0 self:RefreshLevelInfo() self:RefreshDailyRed(CTL.RedPoint.GetRedPointActive(CTL.RedPoint.RedPointKey.HonorOrder_Challenge_Daily)) -- 每日挑战红点 self:RefreshCycleRed(CTL.RedPoint.GetRedPointActive(CTL.RedPoint.RedPointKey.HonorOrder_Challenge_Cycle)) -- 周期挑战红点 self:RefreshGetRewardRed(CTL.RedPoint.GetRedPointActive(CTL.RedPoint.RedPointKey.HonorOrder_Challenge)) -- 一键领取红点 end function UIHonorOrderChallenge:RefreshLevelInfo() self.activityId = MDL.HonorOrder.HonorOrderActivityId self.curHonorOrderInfo = MDL.HonorOrder.GetAwardInfo() local curHonorOrderConstData = MDL.HonorOrder.GetCurHonorOrderConstData() self.isSenior = self.curHonorOrderInfo.IsSenior -- 战令经验加成提示 UIUtils.SetLabel(self.txt_Remind, string.FormatByIdsKey(self.isSenior and "IDS_HonorOrder_ShengJiJiangLi_4" or "IDS_HonorOrder_ShengJiJiangLi_1", curHonorOrderConstData.ExpGrowRate)) local curExp = 0 local isMaxLevel = self.curHonorOrderInfo.HonorLv == curHonorOrderConstData.MaxLevel curExp = isMaxLevel and curHonorOrderConstData.EachLevelExp or self.curHonorOrderInfo.HonorExp self.toggle_UpGroup:SelectIndex(MDL.HonorOrder.CurOpenChallengeToggleID) self.state_up:SetState(self.isSenior and 0 or 1) -- 购买战令按钮文字IDS切换 local curIsOpen = MDL.HonorOrder.GetCurHonorOrderIsOpen() self.btn_Get:SetGray(not curIsOpen) self.btn_Up:SetGray(self.isSenior or not curIsOpen) if curIsOpen and not self.isSenior then self.effect_Btn:PlayUIEffect() else self.effect_Btn:StopUIEffect() end end function UIHonorOrderChallenge:OnButtonClicked(comp) if not MDL.HonorOrder.GetCurHonorOrderIsOpen() then CTL.Tips.AddTipsMsg(Const_IDS["IDS_ERRORCODE_174_WarnCode_Activity_EndWrongHint"]) -- 活动已结束 return end if comp == self.btn_Get then -- 一键领取 MDL.HonorOrder.HonorOrderAutoTaskAwardRequest() elseif comp == self.btn_Up then -- 升级战令 if not self.isSenior then EventSystem.Dispatch(EventID.UI_HonorOrder_OpenRewardPurchase) end end end function UIHonorOrderChallenge:OnValueChanged(comp, value) if comp == self.toggle_UpGroup then self.loop_Task:ClearCells() MDL.HonorOrder.CurOpenChallengeToggleID = value self.curTaskType = value + 1 local TaskList = MDL.HonorOrder.GetTaskListByType(self.curTaskType) UIUtils.SetActive(self.group_Remind, self.curTaskType == MDL.HonorOrder.TaskType.Daily) if TaskList then if #TaskList > 1 then table.sort(TaskList, SortTask) end for k,v in pairs(TaskList) do self.loop_Task:AddData(v, 0) end end end end function UIHonorOrderChallenge:OnCellInit(scrollRect, index, cellTable, data) local taskCfg = self:GetTaskCfg(data) local triggerData = DataSheetManager.TriggerID:GetDataByID(taskCfg.TriggerID).Unlock_Table[1] local title = "" if triggerData.UnlockCondition == LuaConst.TriggerType.Login_Count then title = Const_IDS.IDS_GoldHeroActivity_Task_TabName_1 -- 挑战标题--累计登录 if data.State == 0 then cellTable.state_btn:SetState(3) else cellTable.state_btn:SetState(data.State) -- 挑战状态 end else local gotoViewID = DataSheetManager.TriggerType:GetDataByID(triggerData.UnlockCondition).ItemSourceID title = Const_IDS[DataSheetManager.ItemSource:GetDataByID(gotoViewID).Activity] -- 挑战标题 cellTable.state_btn:SetState(data.State) -- 挑战状态 end UIUtils.SetLabelText(cellTable.txt_Title, title) -- 挑战标题 local curValue = data.State == 0 and UTL.Color.FormatRedColor(data.CurValue) or UTL.Color.FormatTextByColor("AEB0B6", triggerData.UnlockConditionParamA) UIUtils.SetLabel(cellTable.txt_Task, MDL.Unlock.GetDesByTriggerID(triggerData)..string.format("(%s/%s)", curValue, triggerData.UnlockConditionParamA)) -- 挑战内容 local itemData = DataSheetManager.ItemData:GetDataByID(taskCfg.Reward) UIUtils.SetImageByAssetBundle(cellTable.img_Icon, string.format(ItemIconPath, itemData.Icon)) -- 奖励图片 UIUtils.SetLabel(cellTable.txt_ExpNum, taskCfg.Num) -- 奖励数量 local curIsOpen = MDL.HonorOrder.GetCurHonorOrderIsOpen() cellTable.btn_Go:SetGray(not curIsOpen) cellTable.btn_Recieve:SetGray(not curIsOpen) end function UIHonorOrderChallenge:OnCellClicked(scrollRect, index, cellTable, target, data) local taskCfg = self:GetTaskCfg(data) if target == cellTable.btn_Item then UTL.ItemTips.ShowCommonTipsById(taskCfg.Reward) elseif target == cellTable.btn_Go then if not MDL.HonorOrder.GetCurHonorOrderIsOpen() then CTL.Tips.AddTipsMsg(Const_IDS["IDS_ERRORCODE_174_WarnCode_Activity_EndWrongHint"]) -- 活动已结束 return end --处理一个前往的逻辑 local triggerData = DataSheetManager.TriggerID:GetDataByID(taskCfg.TriggerID).Unlock_Table[1] local gotoViewID = DataSheetManager.TriggerType:GetDataByID(triggerData.UnlockCondition).ItemSourceID local unlockId = DataSheetManager.ItemSource:GetDataByID(gotoViewID).UnlockID if unlockId > 0 and not MDL.Unlock.IsUnlock(unlockId) then CTL.Tips.AddTipsMsg(Const_IDS["IDS_7DayActivity_Hint_6"]) return end CTL.ItemSources.ExecuteSourceFunctionById(gotoViewID) --保存当前打开的页面参数 CTL.PayMall.CurrentShowContext = {tabId = CTL.PayMall.ShopTabType.PreferentialOrder, childTabId = CTL.PayMall.ShopChildTabType.HonorOrder} elseif target == cellTable.btn_Recieve then MDL.HonorOrder.HonorOrderGetTaskAwardRequest(self.curTaskType, data.TaskId) end end -- 日常红点 function UIHonorOrderChallenge:RefreshDailyRed(active) self.toggle_UpGroup:SetRedPoint(0, active) end -- 周期红点 function UIHonorOrderChallenge:RefreshCycleRed(active) self.toggle_UpGroup:SetRedPoint(1, active) end -- 一键领取红点 function UIHonorOrderChallenge:RefreshGetRewardRed(active) self.btn_Get:SetRedPoint(active) end --特效UI层级太高,关闭其他子页面时再显示 function UIHonorOrderChallenge:ShowSomeEffectUI() UIUtils.SetActive(self.btn_Up, true) UIUtils.SetActive(self.img_Dec01, true) UIUtils.SetActive(self.img_Dec02, true) end --特效UI层级太高,打开其他子页面时需要隐藏 function UIHonorOrderChallenge:HideSomeEffectUI() UIUtils.SetActive(self.btn_Up, false) UIUtils.SetActive(self.img_Dec01, false) UIUtils.SetActive(self.img_Dec02, false) end -- 获取任务信息 function UIHonorOrderChallenge:GetTaskCfg(data) if self.curTaskType == MDL.HonorOrder.TaskType.Daily then return MDL.OperationActivity.HonorOrderTargetPointDaily:GetDataByActivityID_ID(self.activityId, data.TaskId) elseif self.curTaskType == MDL.HonorOrder.TaskType.Cycle then return MDL.OperationActivity.HonorOrderTargetPointCycle:GetDataByActivityID_ID_Type(self.activityId, data.TaskId, data.SubId) end end return UIHonorOrderChallenge