--周奖励 local UISyncSoloBattleWeeklyReward = UIViewClass() --region 生命周期方法 function UISyncSoloBattleWeeklyReward:OnOpened(context) self:RegistSystemEvent(EventID.UI_FairPlay_RefreshWeeklyRewardUI,self.InitData) UIUtils.SetLabelText(self.UICommonPopUp.txt_Title,Const_IDS.IDS_1v1RewardPlus_WeeklyTask) self:InitData() end function UISyncSoloBattleWeeklyReward:OnBackButtonPressed() self:OnButtonClicked(self.UICommonPopUp.btn_Close) end function UISyncSoloBattleWeeklyReward:OnButtonClicked(comp) if comp == self.UICommonPopUp.btn_Close then self:CloseView() else local isClicked = false --按钮 for i = 1,#self.group_Task do if comp == self.group_Task[i].btn_Claim then --领取 isClicked = true self:OnClickGetTask(i) break elseif comp == self.group_Task[i].btn_Refresh then --刷新 isClicked = true self:OnClickRefreshTask(i) break end end if isClicked then return end --道具点击 for i = 1,#self.group_Task do local data = MDL.SyncSolo.GetWeeklyRewardArray() local taskData = DataSheetManager.SyncSoloWeeklyTask:GetDataByID(data[i].id) for j = 1,#self.group_Task[i].group_Award do if j <= #taskData.Item_Table and comp == self.group_Task[i].group_Award[j].event_Click then UTL.ItemTips.ShowCommonTipsById(taskData.Item_Table[j].ItemID) return end end end end end --endregion function UISyncSoloBattleWeeklyReward:InitData() --显示任务 local data = MDL.SyncSolo.GetWeeklyRewardArray() for i = 1,#self.group_Task do self:ShowTask(data[i],self.group_Task[i]) end --本周已领取任务 UIUtils.SetLabel(self.txt_Progress,CTL.SyncSolo.GetHasGetWeeklyTaskContent()) --每周一5点刷新提示 local desc, timeStr = UTL.Time.GetDateDescAndTime({[1] = 2}) --经过时区转换的每周刷新时间 UIUtils.SetLabel(self.txt_Tip, string.FormatByIdsId(Const_IDS.IDS_1v1RewardPlus_Refresh_Tips,desc.." "..timeStr)) end --显示任务 function UISyncSoloBattleWeeklyReward:ShowTask(data,taskGroup) local taskData =DataSheetManager.SyncSoloWeeklyTask:GetDataByID(data.id) local hasComplete = CTL.SyncSolo.IsTaskHasComplete(data) --任务名字 local colorText = UTL.Color.FormatQualityText(UIUtils.GetLocalizedTxt(Const_IDS[taskData.TaskTitle]), taskData.TaskQuality) UIUtils.SetLabel(taskGroup.txt_Title,colorText) --描述 local triggerData = DataSheetManager.TriggerID:GetDataByID(taskData.TriggerID) --任务进度不超出最大值 local maxNum = tonumber(triggerData.Unlock_Table[1].UnlockConditionParamA) local showNum = maxNum < data.num and maxNum or data.num local desc = MDL.Unlock.GetDesByTriggerID(triggerData.Unlock_Table[1], hasComplete,tostring(showNum)) UIUtils.SetLabel(taskGroup.txt_StoryDes,desc) for i=1, #taskGroup.group_Stars do UIUtils.SetActive(taskGroup.group_Stars[i],taskData.TaskQuality > i) end --奖励 for i = 1,#taskGroup.group_Award do local itemGo = taskGroup.group_Award[i].gameObject.transform.parent.gameObject if i <= #taskData.Item_Table then UIUtils.SetActive(itemGo,true) UTL.Item.SetItemCell(taskGroup.group_Award[i], taskData.Item_Table[i].ItemID, taskData.Item_Table[i].ItemNum) else UIUtils.SetActive(itemGo,false) end end --刷新消耗 local costItemId = DataSheetManager.ConstData:GetDataByID("SyncSoloWeeklyTaskRefreshItemID").IntValue local costItemNum = DataSheetManager.ConstData:GetDataByID("SyncSoloWeeklyTaskRefreshItemINum").IntValue local isEnough = UTL.Item.GetItemStockCount(costItemId) >= costItemNum if isEnough then UIUtils.SetLabel(taskGroup.txt_Number,tostring(costItemNum)) else UIUtils.SetLabel(taskGroup.txt_Number,UTL.Color.FormatRedColor(tostring(costItemNum))) end UTL.Item.SetItemIcon(taskGroup.img_Item, costItemId) --领取状态 local hasGet = CTL.SyncSolo.IsTaskHasGet(data) if hasGet then --已领取 UIUtils.SetActive(taskGroup.btn_Claim,false) UIUtils.SetActive(taskGroup.btn_Refresh,false) UIUtils.SetActive(taskGroup.img_CollectBg,true) UIUtils.SetActive(taskGroup.group_Cost,false) taskGroup.effect_Claim:StopUIEffect() elseif hasComplete then --已完成 UIUtils.SetActive(taskGroup.btn_Claim,true) UIUtils.SetActive(taskGroup.btn_Refresh,true) UIUtils.SetActive(taskGroup.img_CollectBg,false) UIUtils.SetActive(taskGroup.group_Cost,true) taskGroup.btn_Claim:SetGray(false,true) taskGroup.btn_Claim:SetRedPoint(true) taskGroup.effect_Claim:PlayUIEffect() else --未完成 UIUtils.SetActive(taskGroup.btn_Claim,true) UIUtils.SetActive(taskGroup.btn_Refresh,true) UIUtils.SetActive(taskGroup.img_CollectBg,false) UIUtils.SetActive(taskGroup.group_Cost,true) taskGroup.btn_Claim:SetGray(true,true) taskGroup.btn_Claim:SetRedPoint(false) taskGroup.effect_Claim:StopUIEffect() end end --领取任务 function UISyncSoloBattleWeeklyReward:OnClickGetTask(index) local data = MDL.SyncSolo.GetWeeklyRewardArray() local hasComplete = CTL.SyncSolo.IsTaskHasComplete(data[index]) -- 任务完成才请求,否则提示 if hasComplete then MDL.SyncSolo.FairSoloGetWeeklyRewardReq(data[index].id) else CTL.Tips.AddTipsMsg(Const_IDS.IDS_1v1RewardPlus_CantGet) end end --刷新任务 function UISyncSoloBattleWeeklyReward:OnClickRefreshTask(index) local costItemId = DataSheetManager.ConstData:GetDataByID("SyncSoloWeeklyTaskRefreshItemID").IntValue local costItemNum = DataSheetManager.ConstData:GetDataByID("SyncSoloWeeklyTaskRefreshItemINum").IntValue local isEnough = UTL.Item.GetItemStockCount(costItemId) >= costItemNum --判断数量、品质、进度 if not isEnough then local itemCfgData = DataSheetManager.ItemData:GetDataByID(costItemId) CTL.Tips.AddTipsMsg(string.FormatByIdsId(Const_IDS.IDS_1v1RewardPlus_LackItem,UIUtils.GetLocalizedTxt(Const_IDS[itemCfgData.Name]))) return end local data = MDL.SyncSolo.GetWeeklyRewardArray() local taskData =DataSheetManager.SyncSoloWeeklyTask:GetDataByID(data[index].id) --低品质、检查是否有进度 if not self:IsNeedCheckTaskQuality(taskData) then if not self:IsTaskHasProgress(data[index]) then self.group_Task[index].effect_Refresh:PlayUIEffect() MDL.SyncSolo.FairSoloWeeklyTaskRefreshReq(data[index].id) else UTL.MessageBox.ShowOKCancelBox("", Const_IDS.IDS_1v1RewardPlus_DoingTask, function () self.group_Task[index].effect_Refresh:PlayUIEffect() MDL.SyncSolo.FairSoloWeeklyTaskRefreshReq(data[index].id) end) end return end --高品质、检查是否有进度 UTL.MessageBox.ShowOKCancelBox("", Const_IDS.IDS_1v1RewardPlus_HighQuality, function () if self:IsTaskHasProgress(data[index]) then UTL.MessageBox.ShowOKCancelBox("", Const_IDS.IDS_1v1RewardPlus_DoingTask,function () self.group_Task[index].effect_Refresh:PlayUIEffect() MDL.SyncSolo.FairSoloWeeklyTaskRefreshReq(data[index].id) end) else self.group_Task[index].effect_Refresh:PlayUIEffect() MDL.SyncSolo.FairSoloWeeklyTaskRefreshReq(data[index].id) end end) end --是否为需要提示的品质 function UISyncSoloBattleWeeklyReward:IsNeedCheckTaskQuality(data) return data.TaskQuality >= DataSheetManager.ConstData:GetDataByID("SyncSoloWeeklyTaskHighQualityTips").IntValue end --任务是否已经有进度了 function UISyncSoloBattleWeeklyReward:IsTaskHasProgress(data) return data.num > 0 end return UISyncSoloBattleWeeklyReward