local UIHonorOrderRewardList = UIViewClass() local titleImage = "zljl_msz_01.png" local EventSystem = require('Event/EventSystem') -- 排序 local function SortFunc(item_1, item_2) local a_RewardShowPriority = DataSheetManager.ItemData:GetDataByID(item_1.ItemID).RewardShowPriority local b_RewardShowPriority = DataSheetManager.ItemData:GetDataByID(item_2.ItemID).RewardShowPriority if a_RewardShowPriority == b_RewardShowPriority then if item_1.ItemID == item_2.ItemID then if item_1.ItemNum == item_2.ItemNum then return false end return item_1.ItemNum < item_2.ItemNum end return item_1.ItemID < item_2.ItemID end return a_RewardShowPriority > b_RewardShowPriority end function UIHonorOrderRewardList:OnOpened(context) self.activityId = MDL.HonorOrder.HonorOrderActivityId self.curHonorOrderConstData = MDL.HonorOrder.GetCurHonorOrderConstData() self:RegistSystemEvent(EventID.UI_HonorOrder_UnOpenActiveRefreshUI, self.ShowRewardList) -- 活动结束刷新界面 UTL.Item.SetLocalizationImage(self.loc_Title, self.img_Title, titleImage) self:ShowRewardList() CTL.HonorOrder.Show3DModel(self.renderModel, self.curHonorOrderConstData) UIUtils.SetActive(self.btn_Play, self.curHonorOrderConstData.PromotionalVideo ~= "") end function UIHonorOrderRewardList:OnButtonClicked(comp) if comp == self.btn_Close then self:CloseView() EventSystem.Dispatch(EventID.UI_HonorOrder_ShowRenderModel) EventSystem.Dispatch(EventID.UI_PayMall_ShowSomeBaseUI) elseif comp == self.btn_Up then -- 购买战令 if not self.curHonorOrderInfo.IsSenior then self:CloseView() EventSystem.Dispatch(EventID.UI_HonorOrder_OpenRewardPurchase) end elseif comp == self.btn_Play then -- 播放大奖视频 UIManager.OpenView(Const_UI_Lua.UIEnum.UICommonPlayMovie, {MovieName = self.curHonorOrderConstData.PromotionalVideo}) end end function UIHonorOrderRewardList:OnBackButtonPressed() self:OnButtonClicked(self.btn_close) end function UIHonorOrderRewardList:ShowRewardList() self.curHonorOrderInfo = MDL.HonorOrder.GetAwardInfo() UIUtils.SetLabel(self.txt_BlueNum, self.curHonorOrderConstData.OrdinaryValue) -- 普通奖励总价值 UIUtils.SetLabel(self.txt_GoldNum, self.curHonorOrderConstData.SeniorValue) -- 典藏奖励总价值 self.btn_Up:SetGray(self.curHonorOrderInfo.IsSenior or not MDL.HonorOrder.GetCurHonorOrderIsOpen()) self.state_up:SetState(self.curHonorOrderInfo.IsSenior and 0 or 1) -- 购买战令按钮文字IDS切换 if MDL.HonorOrder.GetCurHonorOrderIsOpen() and not self.curHonorOrderInfo.IsSenior then self.effect_Btn:PlayUIEffect() else self.effect_Btn:StopUIEffect() end self:GetRewardList() end function UIHonorOrderRewardList:OnCellInit(scrollRect, index, cellTable, data) UTL.Item.SetItemCell(cellTable.item, data.ItemID, data.ItemNum) -- 普通奖励 end function UIHonorOrderRewardList:OnCellClicked(scrollRect, index, cellTable, target, data) UTL.ItemTips.ShowCommonTipsById(data.ItemID) end function UIHonorOrderRewardList:GetRewardList() local blueRewardList = {} local goldRewardList = {} local rewardList = MDL.OperationActivity.HonorOrderReward:GetDataByActivityID_HonorOrderID_RewardID(self.curHonorOrderInfo.ActivityId, self.curHonorOrderInfo.HonorOrderId) for k,rewardData in pairs(rewardList) do table.insert(blueRewardList, {ItemID = rewardData.OrdinaryItem, ItemNum = rewardData.OrdinaryNum, Index = k}) table.insert(goldRewardList, {ItemID = rewardData.SeniorItem, ItemNum = rewardData.SeniorNum, Index = k}) end blueRewardList = self:MergeItemList(blueRewardList) goldRewardList = self:MergeItemList(goldRewardList) table.sort(blueRewardList, SortFunc) for k,v in pairs(blueRewardList) do self.loop_Reward:AddData(v, 0) end table.sort(goldRewardList, SortFunc) for k,v in pairs(goldRewardList) do self.loop_RewardGold:AddData(v, 0) end end function UIHonorOrderRewardList:MergeItemList(list) local itemIdToCount = {} for i, v in ipairs(list) do itemIdToCount[v.ItemID] = itemIdToCount[v.ItemID] or 0 itemIdToCount[v.ItemID] = itemIdToCount[v.ItemID] + v.ItemNum end local newList = {} for id, count in pairs(itemIdToCount) do local maxStackSize = DataSheetManager.ItemData:GetDataByID(id).MaxStackSize if MDL.Currency.IsMoneyTypeByItemID(id) or maxStackSize == 0 then table.insert(newList, { ItemID = id, ItemNum = count }) else local slotCount = math.floor(count / maxStackSize) for i = 1, slotCount do table.insert(newList, { ItemID = id, ItemNum = maxStackSize }) end if count % maxStackSize > 0 then table.insert(newList, { ItemID = id, ItemNum = (count % maxStackSize) }) end end end return newList end return UIHonorOrderRewardList