220 lines
No EOL
7.8 KiB
Lua
220 lines
No EOL
7.8 KiB
Lua
local XUiPanelCombination = XClass(nil, "XUiPanelCombination")
|
|
local XUiGridSuitDetail = require("XUi/XUiEquipAwarenessReplace/XUiGridSuitDetail")
|
|
local CSTextManagerGetText = CS.XTextManager.GetText
|
|
function XUiPanelCombination:Ctor(ui, parent, index)
|
|
self.GameObject = ui.gameObject
|
|
self.Transform = ui.transform
|
|
XTool.InitUiObject(self)
|
|
self:AutoAddListener()
|
|
self.Parent = parent
|
|
self.Index = index
|
|
self.TxtCombination.text = CS.XTextManager.GetText("DrawCombination", index)
|
|
end
|
|
|
|
function XUiPanelCombination:SetData(drawId, IsDefaultDraw, IsCanSwitch)
|
|
local clickCb = function(data, grid)
|
|
self.Parent:OnSuitGridClick(data, grid)
|
|
end
|
|
|
|
if self.DrawId ~= drawId then
|
|
self.DrawId = drawId
|
|
local combination = XDataCenter.DrawManager.GetDrawCombination(drawId)
|
|
if not combination then return end
|
|
local goodsList = combination.GoodsId or {}
|
|
self.Type = #goodsList > 0 and XArrangeConfigs.GetType(goodsList[1]) or XArrangeConfigs.Types.Error
|
|
|
|
local list = combination.GoodsId
|
|
if not self.Compositions then
|
|
self.Compositions = {}
|
|
end
|
|
|
|
if self.Type == XArrangeConfigs.Types.Character then
|
|
self:SetCharacterData(combination)
|
|
elseif self.Type == XArrangeConfigs.Types.Partner then
|
|
self:SetPartnerData(combination, list)
|
|
elseif self.Type ~= XArrangeConfigs.Types.Error then
|
|
self:SetEquipData(combination, list, clickCb)
|
|
else
|
|
self:SetBaseData()
|
|
end
|
|
end
|
|
|
|
self:SetSelectState(false)
|
|
self:SetPanelSwitch(IsDefaultDraw, IsCanSwitch)
|
|
self:SetActiveEx(true)
|
|
|
|
local drawAimProbability = XDrawConfigs.GetDrawAimProbability()
|
|
local drawInfo = XDataCenter.DrawManager.GetDrawInfo(self.DrawId)
|
|
local nowTime = XTime.GetServerNowTimestamp()
|
|
|
|
if self.TxtTitle then
|
|
if drawInfo.EndTime - nowTime > 0 then
|
|
self.TxtTitle.text = CSTextManagerGetText("DrawAimLeftTime", XUiHelper.GetTime(drawInfo.EndTime - nowTime, XUiHelper.TimeFormatType.ACTIVITY))
|
|
else
|
|
self.TxtTitle.text = CSTextManagerGetText("DrawAimLeftTimeOver")
|
|
end
|
|
self.TxtTitle.gameObject:SetActiveEx(drawInfo.EndTime > 0)
|
|
end
|
|
|
|
self.UpTip.gameObject:SetActiveEx(drawInfo.EndTime > 0)
|
|
|
|
if self.TxtCount then
|
|
self.TxtCount.gameObject:SetActiveEx(false)
|
|
if drawAimProbability[self.DrawId] then
|
|
self.TxtCount.text = drawAimProbability[self.DrawId].UpProbability or ""
|
|
self.TxtCount.gameObject:SetActiveEx(drawAimProbability[self.DrawId].UpProbability ~= nil)
|
|
end
|
|
end
|
|
|
|
self.Probability.gameObject:SetActiveEx(true)
|
|
end
|
|
|
|
function XUiPanelCombination:SetEquipData(combination, list, clickCb)
|
|
self.PanelComposition.gameObject:SetActiveEx(false)
|
|
self.PanelSuitCommon.gameObject:SetActiveEx(false)
|
|
|
|
for _, v in pairs(self.Compositions) do
|
|
CS.UnityEngine.Object.Destroy(v.GameObject)
|
|
end
|
|
self.Compositions = {}
|
|
for i = 1, #list do
|
|
if not self.Compositions[i] then
|
|
local go
|
|
if combination.Type == XDrawConfigs.CombinationsTypes.Aim then
|
|
go = CS.UnityEngine.Object.Instantiate(self.PanelComposition, self.PanelNormal)
|
|
local item = XUiGridCommon.New(self.Parent, go)
|
|
item.GameObject:SetActiveEx(true)
|
|
table.insert(self.Compositions, item)
|
|
elseif combination.Type == XDrawConfigs.CombinationsTypes.EquipSuit then
|
|
go = CS.UnityEngine.Object.Instantiate(self.PanelSuitCommon, self.PanelSuit)
|
|
local item = XUiGridSuitDetail.New(go, self.Parent, clickCb)
|
|
item.GameObject:SetActiveEx(true)
|
|
table.insert(self.Compositions, item)
|
|
end
|
|
end
|
|
self.Compositions[i]:Refresh(list[i], nil, true)
|
|
end
|
|
|
|
if self.InfectTip then
|
|
local IsIsomer = false
|
|
for _,composition in pairs(self.Compositions) do
|
|
local templateData = XEquipConfig.GetEquipCfg(composition.TemplateId)
|
|
if templateData.CharacterType == XEquipConfig.UserType.Isomer then
|
|
IsIsomer = true
|
|
break
|
|
end
|
|
end
|
|
|
|
self.InfectTip.gameObject:SetActiveEx(IsIsomer)
|
|
end
|
|
end
|
|
|
|
function XUiPanelCombination:SetPartnerData(combination, list)
|
|
self.PanelComposition.gameObject:SetActiveEx(false)
|
|
|
|
for _, v in pairs(self.Compositions) do
|
|
CS.UnityEngine.Object.Destroy(v.GameObject)
|
|
end
|
|
|
|
self.Compositions = {}
|
|
for i = 1, #list do
|
|
if not self.Compositions[i] then
|
|
local go
|
|
if combination.Type == XDrawConfigs.CombinationsTypes.Aim then
|
|
go = CS.UnityEngine.Object.Instantiate(self.PanelComposition, self.PanelNormal)
|
|
local item = XUiGridCommon.New(self.Parent, go)
|
|
item.GameObject:SetActiveEx(true)
|
|
table.insert(self.Compositions, item)
|
|
end
|
|
end
|
|
self.Compositions[i]:Refresh(list[i], nil, true)
|
|
end
|
|
end
|
|
|
|
function XUiPanelCombination:SetCharacterData(combination)
|
|
local goodsShowParams = XGoodsCommonManager.GetGoodsShowParamsByTemplateId(combination.GoodsId[1])
|
|
local quality = XCharacterConfigs.GetCharMinQuality(combination.GoodsId[1])
|
|
|
|
self.CharId = combination.GoodsId[1]
|
|
self.AimImgBottomIco:SetRawImage(goodsShowParams.Icon)
|
|
self.AimImgBottomRank:SetRawImage(XCharacterConfigs.GetCharQualityIcon(quality))
|
|
|
|
if goodsShowParams.Quality then
|
|
local qualityIcon = goodsShowParams.QualityIcon
|
|
|
|
if qualityIcon then
|
|
self.Parent:SetUiSprite(self.AimImgQuality, qualityIcon)
|
|
else
|
|
XUiHelper.SetQualityIcon(self.Parent, self.AimImgQuality, goodsShowParams.Quality)
|
|
end
|
|
end
|
|
end
|
|
|
|
function XUiPanelCombination:SetBaseData()
|
|
--self.Probability.gameObject:SetActiveEx(false)
|
|
--local drawInfo = XDataCenter.DrawManager.GetDrawInfo(self.DrawId)
|
|
--self.TxtCount.text = string.format("%d/%d",drawInfo.BottomTimes,drawInfo.MaxBottomTimes)
|
|
end
|
|
|
|
function XUiPanelCombination:SetPanelSwitch(IsDefaultDraw, IsCanSwitch)
|
|
if not IsDefaultDraw and not IsCanSwitch then
|
|
if self.BtnSelect then
|
|
self.BtnSelect.gameObject:SetActiveEx(false)
|
|
end
|
|
if self.TxtSelected then
|
|
self.TxtSelected.gameObject:SetActiveEx(false)
|
|
end
|
|
if self.PanelCanNotSelect then
|
|
self.PanelCanNotSelect.gameObject:SetActiveEx(true)
|
|
end
|
|
else
|
|
if self.PanelCanNotSelect then
|
|
self.PanelCanNotSelect.gameObject:SetActiveEx(false)
|
|
end
|
|
end
|
|
end
|
|
|
|
function XUiPanelCombination:SetSelectState(bool)
|
|
|
|
self.BtnSelect.gameObject:SetActiveEx(not bool)
|
|
self.TxtSelected.gameObject:SetActiveEx(bool)
|
|
|
|
if self.Type == XArrangeConfigs.Types.Character then
|
|
self.Up.gameObject:SetActiveEx(bool)
|
|
elseif self.Type ~= XArrangeConfigs.Types.Error then
|
|
if not self.Compositions then
|
|
return
|
|
end
|
|
for _, v in pairs(self.Compositions) do
|
|
v:SetShowUp(bool)
|
|
end
|
|
end
|
|
end
|
|
|
|
function XUiPanelCombination:SetActiveEx(bool)
|
|
self.GameObject:SetActiveEx(bool)
|
|
end
|
|
|
|
function XUiPanelCombination:AutoAddListener()
|
|
self.BtnSelect.CallBack = function() self:OnBtnSelectClick() end
|
|
|
|
if self.BtnClick then
|
|
self.BtnClick.CallBack = function()
|
|
self:OnBtnClickClick()
|
|
end
|
|
end
|
|
end
|
|
-- auto
|
|
function XUiPanelCombination:OnBtnSelectClick()
|
|
self.Parent:SelectCombination(self.Index, self.DrawId)
|
|
--CS.XUiManager.ViewManager:Pop()
|
|
end
|
|
|
|
function XUiPanelCombination:OnBtnClickClick()
|
|
if self.Type == XArrangeConfigs.Types.Character then
|
|
XDataCenter.AutoWindowManager.StopAutoWindow()
|
|
XLuaUiManager.Open("UiCharacterDetail", self.CharId)
|
|
end
|
|
end
|
|
|
|
return XUiPanelCombination |