local UIHorseSoulGachaResult = UIViewClass() local EventSystem = require('Event/EventSystem') local EFFECT_Red = ConstAssetPathConfig.EFFECT_Red local EFFECT_Gold = ConstAssetPathConfig.EFFECT_Gold function UIHorseSoulGachaResult:OnOpened(context) UIUtils.SetLabelText(self.UITemplatePopUpZero.txt_Title, Const_IDS.IDS_DrawCard_Title_Congratulations) UIUtils.SetActive(self.group_One.gameObject, false) UIUtils.SetActive(self.group_Ten.gameObject, false) UIUtils.SetActive(self.loop_HunReward.gameObject, false) self.RedWishQuality = DataSheetManager.HorseSoulDrawWish:GetDataByWishID(1).WishSoulQuality -- 红色心愿品质 self.GoldWishQuality = DataSheetManager.HorseSoulDrawWish:GetDataByWishID(2).WishSoulQuality -- 金色心愿品质 self.rewardList = context.rewardList if #context.rewardList > 1 then if #context.rewardList == 10 then self:SetTenReward() elseif #context.rewardList == 100 then self:SetHunReward() end else self:SetOneReward() self:StartRepeatFunc(function() self:ShowEffect(self.group_One, self.rewardList[1]) end , 0.2, 1) end CTL.Sound.PlayGameSound("UI_obtain") end function UIHorseSoulGachaResult:OnClosed() MDL.HorseSoul.CanOpenResetView() EventSystem.Dispatch(EventID.UI_HorseSoul_Gacha_RefreshUI) end function UIHorseSoulGachaResult:OnButtonClicked(comp) if comp == self.UITemplatePopUpZero.Bottom then self:CloseView() elseif comp == self.group_One.event_Click then self:ShowTips(self.rewardList[1]) else for k, v in ipairs(self.group_Ten) do if comp == v.event_Click then self:ShowTips(self.rewardList[k]) end end end end function UIHorseSoulGachaResult:OnCellInit(scrollRect, index, cellTable, data) if scrollRect == self.loop_HunReward then self:SetRewardCell(cellTable, data) local itemCfg = DataSheetManager.ItemData:GetDataByID(data.ItemId) if itemCfg.Color == self.RedWishQuality or itemCfg.Color == self.GoldWishQuality then self:ShowEffect(cellTable, data) end end end function UIHorseSoulGachaResult:OnCellClicked(scrollRect, index, cellTable, target, data) if scrollRect == self.loop_HunReward then self:ShowTips(data) end end function UIHorseSoulGachaResult:SetOneReward() UIUtils.SetActive(self.group_One.gameObject, true) self:SetRewardCell(self.group_One, self.rewardList[1]) end function UIHorseSoulGachaResult:SetTenReward() UIUtils.SetActive(self.group_Ten.gameObject, true) local delayTime = 0.25 for k, v in ipairs(self.group_Ten) do if self.rewardList[k] then delayTime = delayTime + 0.1 self:SetRewardCell(v, self.rewardList[k]) local itemCfg = DataSheetManager.ItemData:GetDataByID(self.rewardList[k].ItemId) if itemCfg.Color == self.RedWishQuality or itemCfg.Color == self.GoldWishQuality then self:StartRepeatFunc(function() self:ShowEffect(self.group_Ten[k], self.rewardList[k]) end , delayTime, 1) end end end end function UIHorseSoulGachaResult:SetHunReward() UIUtils.SetActive(self.loop_HunReward.gameObject, true) local rewards = {} local material = {} for k,v in ipairs(self.rewardList) do local itemData = DataSheetManager.ItemData:GetDataByID(v.ItemId) if itemData.FirstType ~= LuaConst.ItemType.HorseSoul then if material[v.ItemId] then material[v.ItemId] = material[v.ItemId] + v.ItemCount else material[v.ItemId] = v.ItemCount end else table.insert(rewards, v) end end table.sort(rewards, self.SortSoulDataList) for k,v in pairs(material) do table.insert(rewards, {ItemId = k, ItemCount = v}) end self.loop_HunReward:ReloadAll(rewards) end function UIHorseSoulGachaResult:SetRewardCell(cellTable, data) UTL.Item.SetItemCell(cellTable.item, data.ItemId, data.ItemCount) CTL.HorseSoul.SetStarLevel(cellTable.item.group_Star, 0) end function UIHorseSoulGachaResult:ShowEffect(cellTable, data) local itemCfg = DataSheetManager.ItemData:GetDataByID(data.ItemId) if itemCfg.Color == self.RedWishQuality then cellTable.effect_Qua:PlayUIEffect(EFFECT_Red, 0) elseif itemCfg.Color == self.GoldWishQuality then cellTable.effect_Qua:PlayUIEffect(EFFECT_Gold, 0) else cellTable.effect_Qua:StopUIEffect() end end function UIHorseSoulGachaResult:ShowTips(data) local horseSoulData = DataSheetManager.HorseSoulData:GetDataByHorseSoulID(data.ItemId) if horseSoulData == nil then UTL.ItemTips.ShowCommonTipsById(data.ItemId) else CTL.HorseSoul.OpenSoulTips(0, data.ItemId) end end --已装备>高品质>高等级>id靠前 function UIHorseSoulGachaResult.SortSoulDataList(a, b) local qualityA = DataSheetManager.ItemData:GetDataByID(a.ItemId).Color local qualityB = DataSheetManager.ItemData:GetDataByID(b.ItemId).Color if qualityA ~= qualityB then return qualityA > qualityB else return a.ItemId < b.ItemId end end return UIHorseSoulGachaResult