local XUiGridGachaResult = XClass(nil, "XUiGridGachaResult") function XUiGridGachaResult:Ctor(transform, rootUi) self.Transform = transform self.RootUi = rootUi self:InitUiObject() end function XUiGridGachaResult:InitUiObject() ---@type UnityEngine.RectTransform self.PanelChip = self.Transform:FindTransform("PanelChip") ---@type UnityEngine.UI.RawImage self.RImgChip = self.Transform:FindTransform("ImgChip"):GetComponent("RawImage") local gridChip = self.Transform:FindTransform("GridChip") gridChip.gameObject:SetActiveEx(false) self.GridChipObj = gridChip self.GridChip = XUiGridCommon.New(nil, gridChip) ---@type UnityEngine.RectTransform self.PanelItem = self.Transform:FindTransform("PanelItem") ---@type UnityEngine.UI.RawImage self.RImgItem = self.Transform:FindTransform("ImgItem"):GetComponent("RawImage") ---@type UnityEngine.RectTransform self.PanelArms = self.Transform:FindTransform("PanelArms") ---@type UnityEngine.UI.RawImage self.RImgArms = self.Transform:FindTransform("ImgArms"):GetComponent("RawImage") ---@type UnityEngine.RectTransform self.PanelPets = self.Transform:FindTransform("PanelPets") ---@type UnityEngine.UI.RawImage self.RImgPets = self.Transform:FindTransform("ImgPets"):GetComponent("RawImage") ---@type UnityEngine.RectTransform self.PanelRole = self.Transform:FindTransform("PanelRole") ---@type UnityEngine.UI.RawImage self.RImgRole = self.Transform:FindTransform("ImgRole"):GetComponent("RawImage") ---@type UnityEngine.UI.Text self.TxtCount = self.Transform:FindTransform("TxtCount"):GetComponent("Text") ---@type UnityEngine.RectTransform self.PanelTrans = self.Transform:FindTransform("PanelTrans") self.PanelTrans.gameObject:SetActiveEx(false) self.PanelItem.gameObject:SetActiveEx(false) self.PanelRole.gameObject:SetActiveEx(false) self.PanelChip.gameObject:SetActiveEx(false) self.PanelArms.gameObject:SetActiveEx(false) self.PanelPets.gameObject:SetActiveEx(false) ---@type UnityEngine.RectTransform self.EffectRed = XUiHelper.TryGetComponent(self.Transform, "GridDrawShow2/Effect/EffectRed") ---@type UnityEngine.RectTransform self.EffectRedStart = XUiHelper.TryGetComponent(self.Transform, "GridDrawShow2/Effect/EffectRedStart") ---@type UnityEngine.UI.RawImage self.Bg = XUiHelper.TryGetComponent(self.Transform, "GridDrawShow2/Bg", "RawImage") ---@type UnityEngine.UI.RawImage self.HalfBg = XUiHelper.TryGetComponent(self.Transform, "GridDrawShow2/Bg2", "RawImage") end function XUiGridGachaResult:SetActive(isActive) self.Transform.gameObject:SetActiveEx(isActive) end local setTransform = function(target, config) if not target or not config then return end target.transform.localPosition = CS.UnityEngine.Vector3(config.PositionX, config.PositionY, config.PositionZ) --检查数据 模型旋转 target.transform.localEulerAngles = CS.UnityEngine.Vector3(config.RotationX, config.RotationY, config.RotationZ) --检查数据 模型大小 target.transform.localScale = CS.UnityEngine.Vector3( config.ScaleX == 0 and 1 or config.ScaleX, config.ScaleY == 0 and 1 or config.ScaleY, config.ScaleZ == 0 and 1 or config.ScaleZ ) end function XUiGridGachaResult:SetData(rewardInfo) self.Reward = rewardInfo local id = self.Reward.Id and self.Reward.Id > 0 and self.Reward.Id or self.Reward.TemplateId local Type = XTypeManager.GetTypeById(id) if self.Reward.ConvertFrom > 0 then Type = XTypeManager.GetTypeById(self.Reward.ConvertFrom) id = self.Reward.ConvertFrom self.PanelTrans.gameObject:SetActiveEx(true) self.GridChipObj.gameObject:SetActiveEx(true) self.GridChip:Refresh(self.Reward) end self.TxtCount.text = "x" .. self.Reward.Count local showTable = XGachaConfigs.GetGachaShowByGroupId(self.RootUi.GachaCfg.GachaShowGroupId)[Type] if XDataCenter.ItemManager.IsWeaponFashion(id) then Type = XArrangeConfigs.Types.WeaponFashion end --获取奖励品质 local quality local templateIdData = XGoodsCommonManager.GetGoodsShowParamsByTemplateId(id) if Type == XArrangeConfigs.Types.Wafer then quality = templateIdData.Star elseif Type == XArrangeConfigs.Types.Weapon then quality = templateIdData.Star elseif Type == XArrangeConfigs.Types.Character then quality = XCharacterConfigs.GetCharMinQuality(id) elseif Type == XArrangeConfigs.Types.Partner then quality = templateIdData.Quality else quality = XTypeManager.GetQualityById(id) end if XDataCenter.ItemManager.IsWeaponFashion(id) then quality = XTypeManager.GetQualityById(id) end -- 强制检测特效 local foreceQuality = XGachaConfigs.GetGachaShowRewardConfigById(id) if foreceQuality then quality = foreceQuality.EffectQualityType end local effectGroupId = showTable.GachaEffectGroupId[quality] -- 加载特效 self:LoadEffect(effectGroupId) self:SetBgRawImage(showTable.DrawPictureGroupId[quality]) self.RootUi:SetDrawEffectGroupId(effectGroupId) local icon if Type == XArrangeConfigs.Types.Furniture or Type == XArrangeConfigs.Types.HeadPortrait then local goodsShowParams = XGoodsCommonManager.GetGoodsShowParamsByTemplateId(id) icon = goodsShowParams.BigIcon self.PanelItem.gameObject:SetActiveEx(true) self.RImgItem:SetRawImage(icon) else if Type == XArrangeConfigs.Types.Character then icon = XDataCenter.CharacterManager.GetCharHalfBodyImage(id) self.PanelRole.gameObject:SetActiveEx(true) self.RImgRole:SetRawImage(icon) elseif Type == XArrangeConfigs.Types.Weapon then icon = XDataCenter.EquipManager.GetEquipLiHuiPath(id) self.PanelArms.gameObject:SetActiveEx(true) self.RImgArms:SetRawImage(icon) elseif Type == XArrangeConfigs.Types.WeaponFashion then icon = XDataCenter.ItemManager.GetItemTemplate(id).Icon self.PanelArms.gameObject:SetActiveEx(true) self.RImgArms:SetRawImage(icon) elseif Type == XArrangeConfigs.Types.Wafer then icon = XDataCenter.EquipManager.GetEquipLiHuiPath(id) self.PanelChip.gameObject:SetActiveEx(true) self.RImgChip:SetRawImage(icon) self.GridChipObj.gameObject:SetActiveEx(true) self.GridChip:Refresh(self.Reward) local transformConfig = XDrawConfigs.GetDrawWaferShowById(id) if transformConfig then setTransform(self.RImgChip, transformConfig) end elseif Type == XArrangeConfigs.Types.Item then icon = XDataCenter.ItemManager.GetItemBigIcon(id) self.PanelItem.gameObject:SetActiveEx(true) self.RImgItem:SetRawImage(icon) elseif Type == XArrangeConfigs.Types.Fashion then icon = XDataCenter.FashionManager.GetFashionGachaIcon(id) self.PanelRole.gameObject:SetActiveEx(true) self.RImgRole:SetRawImage(icon) elseif Type == XArrangeConfigs.Types.ChatEmoji then icon = XDataCenter.ChatManager.GetEmojiIcon(id) self.PanelItem.gameObject:SetActiveEx(true) self.RImgItem:SetRawImage(icon) elseif Type == XArrangeConfigs.Types.Partner then icon = XPartnerConfigs.GetPartnerTemplateLiHuiPath(id) self.PanelPets.gameObject:SetActiveEx(true) self.RImgPets:SetRawImage(icon) elseif Type == XArrangeConfigs.Types.Background then icon = XPhotographConfigs.GetBackgroundIconById(id) self.PanelItem.gameObject:SetActiveEx(true) self.RImgItem:SetRawImage(icon) end end end function XUiGridGachaResult:LoadEffect(id) local cardEffectStart = XDrawConfigs.GetCardEffectStart(id) self.EffectRedStart:LoadPrefab(cardEffectStart) local cardEffect = XDrawConfigs.GetCardEffect(id) self.EffectRed:LoadPrefab(cardEffect) end function XUiGridGachaResult:SetBgRawImage(id) local bg = XDrawConfigs.GetDrawCardBg(id) self.Bg:SetRawImage(bg) local halfBg = XDrawConfigs.GetDrawCardHalfBg(id) self.HalfBg:SetRawImage(halfBg) end return XUiGridGachaResult