local UIDemonGodRewardAchievement = UIViewClass() local INDEX_SHOW_REWARD = 5 --已领取的放后边 local function SortRule(reward1, reward2) local hasGet1 = MDL.DemonGod.HasRewardReceived(reward1.ID) local hasGet2 = MDL.DemonGod.HasRewardReceived(reward2.ID) if hasGet1 == hasGet2 then return reward1.ID < reward2.ID end return hasGet2 end function UIDemonGodRewardAchievement:OnOpened(context) self:RegistSystemEvent(EventID.UI_DemonGod_RefreshRewardUI, self.UpdateReward) --只显示达标后的5条 local num = INDEX_SHOW_REWARD local maxDmg = MDL.DemonGod.GetLineUpMaxDamage() self.rewardCfgArray = {} for i, v in DataSheetManager.DemonGodBossAchievementReward:GetEnumerator() do if num == 0 then break end if MDL.DemonGod.HasRewardReceived(v.ID) == false and maxDmg < v.AchievementDamage then num = num - 1 end self.rewardCfgArray[i] = v end self:UpdateReward() end function UIDemonGodRewardAchievement:UpdateReward() table.sort(self.rewardCfgArray, SortRule) self.loop_Rank:ReloadAll(self.rewardCfgArray) end function UIDemonGodRewardAchievement:OnCellInit(scrollRect, index, cellTable, data) local reward = DataSheetManager.DemonGodBossReward:GetDataByID(data.AchievementRewardID) if reward then for i = 1, #cellTable.group_Items do if i <= #reward.Item_Table then UIUtils.SetActive(cellTable.group_Items[i].gameObject, true) UTL.Item.SetItemCell(cellTable.group_Items[i], reward.Item_Table[i].ItemID, reward.Item_Table[i].ItemNum) else UIUtils.SetActive(cellTable.group_Items[i].gameObject, false) end end end local maxDmg = MDL.DemonGod.GetLineUpMaxDamage() if MDL.DemonGod.HasRewardReceived(data.ID) then UIUtils.SetActive(cellTable.btn_Reward, false) UIUtils.SetActive(cellTable.img_Collected, true) local dmgShow = UTL.String.GetCountStr(data.AchievementDamage) cellTable.txt_Score.text = UTL.Color.FormatGreenColor(dmgShow) .. "/" .. dmgShow else UIUtils.SetActive(cellTable.btn_Reward, true) UIUtils.SetActive(cellTable.img_Collected, false) if maxDmg >= data.AchievementDamage then cellTable.btn_Reward:SetGray(false) cellTable.btn_Reward:SetRedPoint(true) cellTable.txt_Score.text = UTL.Color.FormatGreenColor(UTL.String.GetCountStr(maxDmg)) .. "/" .. UTL.String.GetCountStr(data.AchievementDamage) else cellTable.btn_Reward:SetGray(true) cellTable.btn_Reward:SetRedPoint(false) cellTable.txt_Score.text = UTL.Color.FormatRedColor(UTL.String.GetCountStr(maxDmg)) .. "/" .. UTL.String.GetCountStr(data.AchievementDamage) end end end function UIDemonGodRewardAchievement:OnCellClicked(scrollRect, index, cellTable, target, data) if target == cellTable.btn_Reward then MDL.DemonGod.DemonGodGetAwardRequest(data.ID) else for i, v in ipairs(cellTable.group_Items) do if target == v.event_Click then local reward = DataSheetManager.DemonGodBossReward:GetDataByID(data.AchievementRewardID) UTL.ItemTips.ShowCommonTipsById(reward.Item_Table[i].ItemID) break end end end end return UIDemonGodRewardAchievement