local UIHorseRearGetReward = UIViewClass() --[[ context = { activityId = xx, normalItems = {...}, randomItems = {...}, eventTimes = {...}, } ]] function UIHorseRearGetReward:OnOpened(context) CTL.Sound.PlayGameSound("UI_congratulation") local msg = context.rearEventData self.closeViewCB = context.closeViewCB self.activityId = msg.activityId self:InitGetReward(msg) end function UIHorseRearGetReward:InitGetReward(msg) local isOneTime = false --1次 local isTenTimes = false --10次 local isMultiTimes = false --超过10次,目前是50ci local temp = {} local totalTimes = 0 for i, v in ipairs(msg.eventTimes) do totalTimes = totalTimes + v.times table.insert(temp, {eventId = v.eventId, times = v.times}) end if totalTimes > 10 then isMultiTimes = true elseif totalTimes > 1 then isTenTimes = true else isOneTime = true end table.sort(temp, self.SortEvent) self:SetEventIcon(temp) self:SetEventStr(temp) UIUtils.SetActive(self.group_One.gameObject, isOneTime) UIUtils.SetActive(self.group_Ten.gameObject, isTenTimes) UIUtils.SetActive(self.group_More.gameObject, isMultiTimes) --固定奖励 local normalItemGroup if isOneTime then normalItemGroup = self.group_One.group_Fixed elseif isTenTimes then normalItemGroup = self.group_Ten.group_Fixed else normalItemGroup = self.group_More.group_Fixed end --固定奖励合并相同的奖励物品数量 temp = {} self.normalItemIds = {} for i, v in ipairs(msg.normalItems) do temp[v.ItemId] = temp[v.ItemId] and temp[v.ItemId] + v.ItemCount or v.ItemCount end for k, v in pairs(temp) do table.insert(self.normalItemIds, {ItemId = k, ItemCount = v}) end for i, v in ipairs(normalItemGroup) do local itemData = self.normalItemIds[i] if itemData then --self.normalItemIds[i] = itemData.ItemId UTL.Item.SetItemCell(v, itemData.ItemId, itemData.ItemCount) UIUtils.SetActive(v.gameObject, true) else UIUtils.SetActive(v.gameObject, false) end end self:RandomReward(isTenTimes, isMultiTimes, msg, temp) end --处理带事件图标的事件汇总 function UIHorseRearGetReward:SetEventIcon(temp) if GameAppInfo.IsJapanesePackage() then for i, v in ipairs(self.group_EventJP) do local eventInfo = temp[i] if eventInfo then UIUtils.SetActive(v.gameObject, true) local eventData = MDL.OperationActivity.HorseRearEvent:GetDataByActivityID_EventID(self.activityId, eventInfo.eventId) v.txt_Event.text = UTL.Color.FormatQualityText(UIUtils.GetLocalizedTxt(Const_IDS[eventData.EventName]), eventData.EventColor) UIUtils.SetImageByAssetBundle(v.img_Icon, eventData.EventIcon) local eventName = string.FormatByIdsKey("IDS_HorseActivity_RewardHint_7", eventInfo.times) if temp[i + 1] then v.txt_Time.text = eventName .. "、" else v.txt_Time.text = eventName end else UIUtils.SetActive(v.gameObject, false) end end else for i, v in ipairs(self.group_Event) do local eventInfo = temp[i] if eventInfo then UIUtils.SetActive(v.gameObject, true) v.txt_Time.text = string.FormatByIdsKey("IDS_HorseActivity_RewardHint_7", eventInfo.times) local eventData = MDL.OperationActivity.HorseRearEvent:GetDataByActivityID_EventID(self.activityId, eventInfo.eventId) local eventName = UTL.Color.FormatQualityText(UIUtils.GetLocalizedTxt(Const_IDS[eventData.EventName]), eventData.EventColor) if temp[i + 1] then v.txt_Event.text = eventName .. "," else v.txt_Event.text = eventName end UIUtils.SetImageByAssetBundle(v.img_Icon, eventData.EventIcon) else UIUtils.SetActive(v.gameObject, false) end end end end --事件汇总字符串 function UIHorseRearGetReward:SetEventStr(temp) local eventStr for i, v in ipairs(temp) do local eventData = MDL.OperationActivity.HorseRearEvent:GetDataByActivityID_EventID(self.activityId, v.eventId) if string.isNilOrEmpty(eventStr) then eventStr = string.FormatByIdsKey("IDS_HorseActivity_RewardHint_4", v.times, UTL.Color.FormatQualityText(UIUtils.GetLocalizedTxt(Const_IDS[eventData.EventName]), eventData.EventColor)) else eventStr = eventStr .. ", " .. string.FormatByIdsKey("IDS_HorseActivity_RewardHint_4", v.times, UTL.Color.FormatQualityText(UIUtils.GetLocalizedTxt(Const_IDS[eventData.EventName]), eventData.EventColor)) end end self.txt_LocInfo.text = UIUtils.GetLocalizedTxt(Const_IDS.IDS_HorseActivity_RewardHint_3) .. eventStr end --随机奖励 function UIHorseRearGetReward:RandomReward(isTenTimes, isMultiTimes, msg, temp) if isTenTimes or isMultiTimes then temp = {} for i, v in ipairs(msg.randomItems) do table.insert(temp, {ItemId = v.ItemId, ItemCount = v.ItemCount, AtyEventId = v.AtyEventId}) end table.sort(temp, self.SortRandomItems) for i, v in ipairs(temp) do if isTenTimes then self.group_Ten.loop_RandomReward:AddData(v, 0) else self.group_More.loop_RandomRewardMore:AddData(v, 0) end end else local itemData = msg.randomItems[1] self.randomItemId = itemData.ItemId UTL.Item.SetItemCell(self.group_One.item_Random, itemData.ItemId, itemData.ItemCount) local eventData = MDL.OperationActivity.HorseRearEvent:GetDataByActivityID_EventID(self.activityId, itemData.AtyEventId) UIUtils.SetImageByAssetBundle(self.group_One.img_Icon, eventData.EventIcon) end end function UIHorseRearGetReward:OnClosed() if self.closeViewCB then self.closeViewCB() end end function UIHorseRearGetReward:OnButtonClicked(comp) if comp == self.event_Bottom then self:CloseView() elseif comp == self.group_One.item_Random.event_Click then UTL.ItemTips.ShowCommonTipsById(self.randomItemId) else for i, v in ipairs(self.group_More.group_Fixed) do if comp == v.event_Click then UTL.ItemTips.ShowCommonTipsById(self.normalItemIds[i].ItemId) return end end for i, v in ipairs(self.group_Ten.group_Fixed) do if comp == v.event_Click then UTL.ItemTips.ShowCommonTipsById(self.normalItemIds[i].ItemId) return end end for i, v in ipairs(self.group_One.group_Fixed) do if comp == v.event_Click then UTL.ItemTips.ShowCommonTipsById(self.normalItemIds[i].ItemId) return end end end end function UIHorseRearGetReward:OnCellInit(scrollRect, index, cellTable, data) if scrollRect == self.group_Ten.loop_RandomReward or scrollRect == self.group_More.loop_RandomRewardMore then UTL.Item.SetItemCell(cellTable.item, data.ItemId, data.ItemCount) local eventData = MDL.OperationActivity.HorseRearEvent:GetDataByActivityID_EventID(self.activityId, data.AtyEventId) UIUtils.SetImageByAssetBundle(cellTable.img_Icon, eventData.EventIcon) end end function UIHorseRearGetReward:OnCellClicked(scrollRect, index, cellTable, target, data) if scrollRect == self.group_Ten.loop_RandomReward or scrollRect == self.group_More.loop_RandomRewardMore then if target == cellTable.item.event_Click then UTL.ItemTips.ShowCommonTipsById(data.ItemId) end end end function UIHorseRearGetReward.SortRandomItems(itemA, itemB) local eventA = itemA.AtyEventId local eventB = itemB.AtyEventId return eventA > eventB --if eventA ~= eventB then -- return eventA > eventB --else -- local itemIdA = itemA.ItemId -- local itemIdB = itemB.ItemId -- if itemIdA ~= itemIdB then -- return itemIdA < itemIdB -- else -- return itemA.ItemCount > itemB.ItemCount -- end --end end function UIHorseRearGetReward.SortEvent(eventA, eventB) return eventA.eventId > eventB.eventId end return UIHorseRearGetReward