local UIAchievementReward = UIViewClass() local EventSystem = require('Event/EventSystem') local ScoreStr = "%d/%d" ------------------------------- 系统函数 ---------------------------- function UIAchievementReward:OnOpened(context) UIUtils.SetLabelText(self.UICommonPopUp.txt_Title, Const_IDS.IDS_Gift_RewardPreview) self:RegistSystemEvent(EventID.UI_AchievementReward_RefreshLevel, self.RefreshLevel) self:RegistSystemEvent(EventID.UI_AchievementReward_RefreshReward, self.RefreshReward) self:RefreshPanel() end function UIAchievementReward:OnCellInit(scrollRect, index, cellTable, data) if scrollRect == self.loop_AchieventLevel then UIUtils.SetImageByAssetBundle(cellTable.img_LevelIcon, data.Icon) UIUtils.SetLabelText(cellTable.txt_Name, Const_IDS[data.AchievementTitle]) UIUtils.SetLabel(cellTable.txt_Score, string.format(ScoreStr, MDL.Achievement.GetCurAchievementScore(), data.Score)) UIUtils.SetActive(cellTable.btn_Get, data.ID <= MDL.Achievement.GetCurAchievementLevel() and not MDL.Achievement.IsClaimLevelReward(data.ID)) UIUtils.SetActive(cellTable.group_AlreadyGet, MDL.Achievement.IsClaimLevelReward(data.ID) == true) UIUtils.SetActive(cellTable.group_UnReach, data.ID > MDL.Achievement.GetCurAchievementLevel()) cellTable.btn_Get:SetRedPoint(true) local rewardCfg = DataSheetManager.AchievementReward:GetDataByID(data.AchievementReward) UIUtils.SetActive(cellTable.Content.gameObject, rewardCfg ~= nil) if not rewardCfg then return end for i, rewardData in ipairs(rewardCfg.Item_Table) do local contentItem = cellTable.Content[i] if not contentItem then contentItem = self:InstantiateCellCollection(cellTable.cell.gameObject, cellTable.Content, self.itemTemplate_Reward.gameObject) end UTL.Item.SetItemCell(contentItem, rewardData.ItemID, rewardData.ItemNum) UIUtils.SetActive(contentItem.gameObject, true) end for i = #rewardCfg.Item_Table + 1, #cellTable.Content do UIUtils.SetActive(cellTable.Content[i].gameObject, false) end end end function UIAchievementReward:OnCellClicked(scrollRect, index, cellTable, target, data) if scrollRect == self.loop_AchieventLevel then if target == cellTable.btn_Get then MDL.Achievement.RequestClaimAchievementLevelReward(data.ID) else local rewardCfg = DataSheetManager.AchievementReward:GetDataByID(data.AchievementReward) for i, v in ipairs (cellTable.Content) do if target == v.event_Click then UTL.ItemTips.ShowCommonTipsById(rewardCfg.Item_Table[i].ItemID) break end end end end end function UIAchievementReward:OnBackButtonPressed() self:OnButtonClicked(self.UICommonPopUp.btn_Close) end function UIAchievementReward:OnButtonClicked(comp) if comp == self.UICommonPopUp.btn_Close then self:CloseView() end end ---------------------------------------------------------------------- function UIAchievementReward:RefreshPanel() self:RefreshLevel() self:RefreshReward() end function UIAchievementReward:RefreshLevel() local curLevel = MDL.Achievement.GetCurAchievementLevel() local cfg = DataSheetManager.AchievementData:GetDataByID(curLevel) UIUtils.SetLabelText(self.txt_Title, Const_IDS[cfg.AchievementTitle]) end function UIAchievementReward:RefreshReward() if self.loop_AchieventLevel.Count == 0 then for _, v in DataSheetManager.AchievementData:GetEnumerator() do if v.ID ~= 0 then self.loop_AchieventLevel:AddData(v, 0) end end else self.loop_AchieventLevel:RefreshCells(false) end local firstUnclaimIndex, firstUnachieveIndex = MDL.Achievement.FindFirstUnclaimIndexAndUnachieveIndex() if firstUnclaimIndex ~= -1 then self.loop_AchieventLevel:MoveIndex(firstUnclaimIndex - 1) elseif firstUnachieveIndex ~= -1 then self.loop_AchieventLevel:MoveIndex(firstUnachieveIndex - 1) else self.loop_AchieventLevel:MoveIndex(MDL.Achievement.GetCurAchievementLevel() - 1) end end return UIAchievementReward