local UIWelfareLevelUpReward = UIViewClass() function UIWelfareLevelUpReward:OnOpened(context) self:RegistSystemEvent(EventID.UI_LevelUpGift_Refresh, self.DelayRefreshPanel) self:RegistSystemEvent(EventID.TeamLevelUpdate, self.RefreshPanel) if self.MainTitle.CurState == 0 then UIUtils.SetLocalizationImage(self.img_Title, "sjjl_msz.png") end self:RefreshPanel() end function UIWelfareLevelUpReward:OnCellInit(scrollRect, index, cellTable, gift) if scrollRect == self.Loop_Goals then local tlData = DataSheetManager.TeamLevelData:GetDataByTeamLevel(gift.data.Level) local _levelStr = UTL.Item.GetNobilityByTeamLevel(gift.data.Level) -- 爵位转换 local teamLevelName = string.FormatByIdsId(Const_IDS[tlData.TeamLevelName], _levelStr) UIUtils.SetLabel(cellTable.txt_GoalLevel, teamLevelName) for i, itemData in ipairs(gift.Item_Table) do local contentItem = cellTable.group_Reward[i] if not contentItem then contentItem = self:InstantiateCellCollection(cellTable.cell.gameObject, cellTable.group_Reward, self.itemTemplate_Reward.gameObject) end UTL.Item.SetItemCell(contentItem, itemData.ItemID, itemData.ItemNum) UIUtils.SetActive(contentItem.gameObject, true) end for i = #gift.Item_Table + 1, #cellTable.group_Reward do UIUtils.SetActive(cellTable.group_Reward[i].gameObject, false) end local state = MDL.Reward.GetLevelUpGiftState(gift.data) if state == MDL.Reward.LevelUpGiftState.Claimed then UIUtils.SetActive(cellTable.btn_Available, false) UIUtils.SetActive(cellTable.group_Collected, true) else cellTable.ButtonStateController:SetState(state == MDL.Reward.LevelUpGiftState.Locked and 1 or 0) UIUtils.SetActive(cellTable.btn_Available, true) UIUtils.SetActive(cellTable.group_Collected, false) end end end function UIWelfareLevelUpReward:OnCellClicked(scrollRect, index, cellTable, target, gift) if scrollRect == self.Loop_Goals then if target == cellTable.btn_Available then local state = MDL.Reward.GetLevelUpGiftState(gift.data) if state == MDL.Reward.LevelUpGiftState.Locked then CTL.ItemSources.ExecuteSourceFunctionById(MDL.ItemSources.SourceType.Activation) return end MDL.Reward.RequestLevelGift(gift.data.ID) else for i = 1, #cellTable.group_Reward do if target == cellTable.group_Reward[i].event_Click then local itemTable = gift.Item_Table[i] if itemTable then UTL.ItemTips.ShowCommonTipsById(itemTable.ItemID) end break end end end end end function UIWelfareLevelUpReward:RefreshPanel() if self.Loop_Goals.Count == 0 then for _, v in pairs (MDL.Reward.GetShowLevelUpGifts()) do self.Loop_Goals:AddData(v, 0) end else self.Loop_Goals:ReloadAll(MDL.Reward.GetShowLevelUpGifts()) end end --这样做的原因是因为原刷新逻辑执行了两次 不同的事件派发 一次是运营活动刷新 此时奖励状态还没处理 --另一次是奖励状态刷新 在同一帧ReloadAll 会导致第二次刷新无效 但是两次数据又不一样 --由于运营活动这里不好改 所有只能在这里做延迟刷新 function UIWelfareLevelUpReward:DelayRefreshPanel() self:StartRepeatFunc(self.RefreshPanel, 0.3, 1) end return UIWelfareLevelUpReward