306 lines
14 KiB
Lua
306 lines
14 KiB
Lua
ElementDrawCardPanelNew = {}
|
|
local isPlayAnim = true
|
|
local isSubPlayAnim = true
|
|
function ElementDrawCardPanelNew:New(gameObject)
|
|
local b = {}
|
|
b.gameObject = gameObject
|
|
b.transform = gameObject.transform
|
|
setmetatable(b, { __index = ElementDrawCardPanelNew })
|
|
return b
|
|
end
|
|
|
|
local Pos = {
|
|
[1] = {ori = Vector3.New(0,277,0),tar = Vector3.New(-0,-174.83,0),},
|
|
[2] = {ori = Vector3.New(0,-186.4,0),tar = Vector3.New(-0,-186.4,0),},
|
|
[3] = {ori = Vector3.New(0,-256.2,0),tar = Vector3.New(-0,-256.2,0),},
|
|
[4] = {ori = Vector3.New(0,371.8,0),tar = Vector3.New(-0,-205,0),},
|
|
}
|
|
|
|
local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig)
|
|
function ElementDrawCardPanelNew:InitComponent()
|
|
self.spLoader = SpriteLoader.New()
|
|
|
|
self.getCardPanel = Util.GetGameObject(self.transform, "getCardPanel")
|
|
self.getCardPanel.gameObject:SetActive(false)
|
|
self.getCardPanelCanvas = self.getCardPanel:GetComponent("Canvas")
|
|
self.root = Util.GetGameObject(self.getCardPanel, "root")
|
|
self.content2 = Util.GetGameObject(self.getCardPanel,"content2")
|
|
self.buyOneBtn = Util.GetGameObject(self.getCardPanel,"content2/btn1")
|
|
self.content1 = Util.GetGameObject(self.getCardPanel,"content1")
|
|
self.content3 = Util.GetGameObject(self.getCardPanel,"content3")
|
|
self.buyTenBtn = Util.GetGameObject(self.getCardPanel,"content3/btn1")
|
|
self.titleImageText = Util.GetGameObject(self.getCardPanel,"content1/titleImage/Text"):GetComponent("Text")
|
|
self.Image2Text = Util.GetGameObject(self.getCardPanel,"content1/Image/Image2/Text"):GetComponent("Text")
|
|
self.Image3 = Util.GetGameObject(self.getCardPanel,"content1/Image/Image3"):GetComponent("Image")
|
|
self.detailText1=Util.GetGameObject(self.getCardPanel,"content1/Image2/detailText1"):GetComponent("Text")
|
|
self.detailText2=Util.GetGameObject(self.getCardPanel,"content1/Image2/detailText2"):GetComponent("Text")
|
|
self.btnBack=Util.GetGameObject(self.getCardPanel,"btnBack")
|
|
|
|
self.itemPosCom = Util.GetGameObject(self.transform, "enterCardPanel/itemPos"):GetComponent("HorizontalLayoutGroup")
|
|
self.itemPos = {}
|
|
for i = 1,4 do
|
|
self.itemPos[i] = {}
|
|
self.itemPos[i].pos = Util.GetGameObject(self.transform, "enterCardPanel/itemPos/itemPre"..i)
|
|
self.itemPos[i].btn = Util.GetGameObject(self.itemPos[i].pos, "Button")
|
|
self.itemPos[i].codeLayer = Util.GetGameObject(self.itemPos[i].pos, "Image"):GetComponent("Canvas")
|
|
self.itemPos[i].effect = Util.GetGameObject(self.itemPos[i].pos, "effect")
|
|
end
|
|
self.effect=Util.GetGameObject(self.transform, "effect")
|
|
self.UI_effect_RecruitPanel_particle=Util.GetGameObject(self.effect, "UI_effect_RecruitPanel_particle")
|
|
self.fx_shiyuanzheng_diban=Util.GetGameObject(self.transform, "fx_shiyuanzheng_diban")
|
|
self.qianghua=Util.GetGameObject(self.effect, "qianghua")
|
|
self.bgImage=Util.GetGameObject(self.transform, "bgImage")
|
|
self.previewBtn = Util.GetGameObject(self.transform, "enterCardPanel/previewBtn")
|
|
self.shopBtn = Util.GetGameObject(self.transform, "enterCardPanel/shopBtn")
|
|
self.helpBtn = Util.GetGameObject(self.transform, "enterCardPanel/helpBtn")
|
|
self.exchangeBtn = Util.GetGameObject(self.transform, "enterCardPanel/exchangeBtn")
|
|
screenAdapte(self.bgImage)
|
|
self.liveNode = nil
|
|
end
|
|
|
|
--绑定事件(用于子类重写)
|
|
function ElementDrawCardPanelNew:BindEvent()
|
|
|
|
Util.AddClick(self.buyOneBtn, function ()
|
|
local index = self.index > 0 and self.index or RecruitManager.recruitSubIndex
|
|
local singleConfig = ConfigManager.TryGetConfigDataByThreeKey(ConfigName.LotterySetting,"LotteryType",TableRecruitType.Siyuanzhen,"PropertyType",self.index,"PerCount",1)
|
|
local costnum = singleConfig.CostItem[1][2]
|
|
local costId = singleConfig.CostItem[1][1]
|
|
if BagManager.GetItemCountById(costId) < costnum then
|
|
PopupTipPanel.ShowTip(GetLanguageStrById(itemConfig[costId].Name)..Language[10486])
|
|
return
|
|
end
|
|
RecruitManager.RecruitRequest(singleConfig.Id, function(msg)
|
|
UIManager.OpenPanel(UIName.SecretBoxBuyOnePanel,msg.drop,singleConfig.Id)
|
|
Game.GlobalEvent:DispatchEvent(GameEvent.Bag.BagGold)
|
|
end)
|
|
end)
|
|
|
|
Util.AddClick(self.buyTenBtn, function ()
|
|
local index = self.index > 0 and self.index or RecruitManager.recruitSubIndex
|
|
local tenConfig = ConfigManager.TryGetConfigDataByThreeKey(ConfigName.LotterySetting,"LotteryType",TableRecruitType.Siyuanzhen,"PropertyType",self.index,"PerCount",10)
|
|
local costnum = tenConfig.CostItem[1][2]
|
|
local costId = tenConfig.CostItem[1][1]
|
|
if BagManager.GetItemCountById(costId) < costnum then
|
|
PopupTipPanel.ShowTip(GetLanguageStrById(itemConfig[costId].Name)..Language[10486])
|
|
return
|
|
end
|
|
RecruitManager.RecruitRequest(tenConfig.Id, function(msg)
|
|
UIManager.OpenPanel(UIName.SecretBoxBuyTenPanel,msg.drop,tenConfig.Id)
|
|
Game.GlobalEvent:DispatchEvent(GameEvent.Bag.BagGold)
|
|
end)
|
|
end)
|
|
|
|
Util.AddClick(self.btnBack, function ()
|
|
if self.liveNode then
|
|
poolManager:UnLoadLive(self.liveNode.name, self.liveNode)
|
|
self.liveNode = nil
|
|
end
|
|
self.getCardPanel:SetActive(false)
|
|
self.parent.AddTrigger()
|
|
self.qianghua:SetActive(false)
|
|
self.UI_effect_RecruitPanel_particle:SetActive(true)
|
|
SoundManager.PlayMusic(SoundConfig.BGM_Main)
|
|
RecruitManager.recruitSubIndex = 0
|
|
self.parent.tabbox.gameObject:SetActive(true)
|
|
self.parent.btnBack.gameObject:SetActive(true)
|
|
isSubPlayAnim = true
|
|
end)
|
|
|
|
Util.AddClick(self.previewBtn, function()
|
|
UIManager.OpenPanel(UIName.HeroPreviewPanel,false)
|
|
end)
|
|
Util.AddClick(self.shopBtn, function()
|
|
JumpManager.GoJump(20008)
|
|
end)
|
|
Util.AddClick(self.helpBtn, function()
|
|
local pos = self.helpBtn.transform.localPosition
|
|
UIManager.OpenPanel(UIName.HelpPopup, HELP_TYPE.ElementDraw, pos.x, pos.y)
|
|
end)
|
|
Util.AddClick(self.exchangeBtn, function()
|
|
UIManager.OpenPanel(UIName.CompoundHeroPanel,2)
|
|
end)
|
|
|
|
for i = 1, #self.itemPos do
|
|
Util.AddClick(self.itemPos[i].btn, function()
|
|
self.index = i
|
|
RecruitManager.recruitSubIndex = i
|
|
self:BtnAction(i)
|
|
end)
|
|
end
|
|
end
|
|
|
|
function ElementDrawCardPanelNew:BtnAction(index)
|
|
--LogGreen("index:"..index)
|
|
if not index or index < 1 or index > 4 then
|
|
return
|
|
end
|
|
|
|
self.parent.btnBack.gameObject:SetActive(false)
|
|
self.parent.tabbox.gameObject:SetActive(false)
|
|
if self.liveNode then
|
|
poolManager:UnLoadLive(self.liveNode.name, self.liveNode)
|
|
self.liveNode = nil
|
|
end
|
|
--Vector3.one *heroConfig.Scale
|
|
self.root.gameObject:SetActive(false)
|
|
local heroConfig
|
|
local SkeletonGraphic
|
|
if self.config.ShopData[2][index] and self.config.ShopData[2][index] > 0 then
|
|
heroConfig = ConfigManager.GetConfigData(ConfigName.HeroConfig,self.config.ShopData[2][index])
|
|
local name = GetResourcePath(heroConfig.Live)
|
|
self.liveNode = poolManager:LoadLive(name, self.root.transform,Vector3.one *heroConfig.Scale, Vector3.New(heroConfig.Position[1], heroConfig.Position[2], 0))
|
|
self.liveNode.name = name
|
|
SkeletonGraphic = self.liveNode:GetComponent("SkeletonGraphic")
|
|
SetHEeroLiveToward(self.liveNode,heroConfig.Toward)
|
|
local idle = function() SkeletonGraphic.AnimationState:SetAnimation(0, "idle", true) end
|
|
SkeletonGraphic.AnimationState.Complete = SkeletonGraphic.AnimationState.Complete + idle
|
|
poolManager:SetLiveClearCall(name, self.liveNode, function ()
|
|
SkeletonGraphic.AnimationState.Complete = SkeletonGraphic.AnimationState.Complete - idle
|
|
end)
|
|
end
|
|
|
|
self.getCardPanel.gameObject:SetActive(true)
|
|
if isSubPlayAnim then
|
|
self.content1.gameObject:SetActive(false)
|
|
self.content2.gameObject:SetActive(false)
|
|
self.content3.gameObject:SetActive(false)
|
|
LogGreen("开始播放人物动画")
|
|
self.liveNode.gameObject.transform:DOScale(Vector3.zero,0)
|
|
self.root.gameObject:SetActive(true)
|
|
self.liveNode.gameObject.transform:DOScale(Vector3.one *heroConfig.Scale, 0.3):SetEase(Ease.Linear):OnStart(function()
|
|
self.root.gameObject.transform:DOLocalMove(Pos[index].ori,0)
|
|
self.root.gameObject.transform:DOLocalMove(Pos[index].tar, 0.3,false):SetEase(Ease.Linear):OnStart(function() end):OnUpdate(function() --TODO:测试速度
|
|
end):OnComplete(function ()
|
|
end)
|
|
-- SkeletonGraphic:DOColor(Color.New(1,1,1,0),0)
|
|
-- SkeletonGraphic:DOColor(Color.New(1,1,1,1),0.5):SetEase(Ease.Linear):OnStart(function() end):OnUpdate(function() --TODO:测试速度
|
|
-- end):OnComplete(function ()
|
|
-- end)
|
|
end):OnUpdate(function() --TODO:测试速度
|
|
end):OnComplete(function ()
|
|
|
|
end)
|
|
Timer.New(function()
|
|
self.content1.gameObject:SetActive(true)
|
|
self.content2.gameObject:SetActive(true)
|
|
self.content3.gameObject:SetActive(true)
|
|
PlayUIAnim(self.getCardPanel)
|
|
end,0.2):Start()
|
|
|
|
isSubPlayAnim = false
|
|
else
|
|
self.root.gameObject:SetActive(true)
|
|
end
|
|
|
|
self.parent.RemoveTrigger()
|
|
self.qianghua:SetActive(true)
|
|
self.UI_effect_RecruitPanel_particle:SetActive(false)
|
|
self.Image2Text.text = string.format("%s英雄碎片",PropertyType[index])
|
|
SetTextVerTial(self.Image2Text,Vector3.New(134.88,-5.9,0),"MiddleLeft")
|
|
self.Image3.sprite = self.spLoader:LoadSprite(PropertyTypeImageBySiYuan[index].image3)
|
|
self.titleImageText.text = string.format("阵营召唤·%s",PropertyTypeImageBySiYuan[index].property)
|
|
self.detailText1.text = string.format("必得<color=#EDB54B>%s</color>英雄碎片",PropertyType[index])
|
|
end
|
|
|
|
--添加事件监听(用于子类重写)
|
|
function ElementDrawCardPanelNew:AddListener()
|
|
Game.GlobalEvent:AddEvent(GameEvent.SecretBox.OnOpenOneReward, self.OpenOneRewardPanel)
|
|
Game.GlobalEvent:AddEvent(GameEvent.SecretBox.OnOpenTenReward, self.OpenTenRewardPanel)
|
|
end
|
|
|
|
--移除事件监听(用于子类重写)
|
|
function ElementDrawCardPanelNew:RemoveListener()
|
|
Game.GlobalEvent:RemoveEvent(GameEvent.SecretBox.OnOpenOneReward,self.OpenOneRewardPanel)
|
|
Game.GlobalEvent:RemoveEvent(GameEvent.SecretBox.OnOpenTenReward,self.OpenTenRewardPanel)
|
|
end
|
|
|
|
function ElementDrawCardPanelNew.OpenOneRewardPanel(drop)
|
|
UIManager.OpenPanel(UIName.SecretBoxBuyOnePanel,drop)
|
|
end
|
|
function ElementDrawCardPanelNew.OpenTenRewardPanel(drop)
|
|
UIManager.OpenPanel(UIName.SecretBoxBuyTenPanel,drop)
|
|
end
|
|
|
|
function ElementDrawCardPanelNew:OnSortingOrderChange(sortingOrder)
|
|
self.sortingOrder = sortingOrder
|
|
Util.SetParticleSortLayer(self.UI_effect_RecruitPanel_particle, self.sortingOrder + 1)
|
|
Util.SetParticleSortLayer(self.qianghua, self.sortingOrder + 4)
|
|
Util.SetParticleSortLayer(self.fx_shiyuanzheng_diban, self.sortingOrder + 1)
|
|
self.getCardPanelCanvas.overrideSorting = true
|
|
self.getCardPanelCanvas.sortingOrder = self.sortingOrder + 3
|
|
for i = 1,4 do
|
|
self.itemPos[i].codeLayer.overrideSorting = true
|
|
self.itemPos[i].codeLayer.sortingOrder = self.sortingOrder + 2
|
|
Util.SetParticleSortLayer(self.itemPos[i].effect , self.sortingOrder + 1)
|
|
end
|
|
end
|
|
|
|
--界面打开时调用(用于子类重写)
|
|
function ElementDrawCardPanelNew:OnOpen(_Config,_index, parent)
|
|
self.config = _Config
|
|
self.parent = parent
|
|
isPlayAnim = true
|
|
isSubPlayAnim = true
|
|
end
|
|
|
|
--界面打开或者重新打开后,界面刷新时调用(用于子类重写)
|
|
function ElementDrawCardPanelNew:OnShow(orginLayer)
|
|
self.sortingOrder = orginLayer
|
|
self.gameObject:SetActive(true)
|
|
self.qianghua:SetActive(false)
|
|
self.UI_effect_RecruitPanel_particle:SetActive(true)
|
|
self.index = RecruitManager.recruitSubIndex
|
|
self:BtnAction(self.index)
|
|
self.parent.mask2.sprite = self.spLoader:LoadSprite(self.config.Icon[3])
|
|
self.parent.mask1.sprite = self.spLoader:LoadSprite(self.config.Icon[3])
|
|
Util.SetParticleSortLayer(self.UI_effect_RecruitPanel_particle, self.sortingOrder + 1)
|
|
Util.SetParticleSortLayer(self.fx_shiyuanzheng_diban, self.sortingOrder + 1)
|
|
Util.SetParticleSortLayer(self.qianghua, self.sortingOrder + 4)
|
|
self.getCardPanelCanvas.overrideSorting = true
|
|
self.getCardPanelCanvas.sortingOrder = self.sortingOrder + 3
|
|
for i = 1,4 do
|
|
self.itemPos[i].codeLayer.overrideSorting = true
|
|
self.itemPos[i].codeLayer.sortingOrder = self.sortingOrder + 2
|
|
Util.SetParticleSortLayer(self.itemPos[i].effect, self.sortingOrder + 1)
|
|
end
|
|
self.itemPosCom.enabled = true
|
|
ForceRebuildLayout(self.itemPosCom.transform)
|
|
-- self.itemPosCom.enabled = false
|
|
-- if isPlayAnim then
|
|
-- isPlayAnim = false
|
|
-- local anims = self.gameObject:GetComponentsInChildren(typeof(PlayFlyAnim))
|
|
-- if anims.Length > 0 then
|
|
-- for i = 0, anims.Length - 1 do
|
|
-- local anim = anims[i]
|
|
-- if anim.isPlayOnOpen then
|
|
-- anim:PlayAnim(false,function()
|
|
-- self.itemPosCom.enabled = true
|
|
-- end)
|
|
-- end
|
|
-- end
|
|
-- end
|
|
-- end
|
|
-- Timer.New(function()
|
|
-- self.itemPosCom.enabled = true
|
|
-- end,0.5):Start()
|
|
end
|
|
|
|
|
|
--界面关闭时调用(用于子类重写)
|
|
function ElementDrawCardPanelNew:OnClose()
|
|
isPlayAnim = true
|
|
isSubPlayAnim = true
|
|
self.gameObject:SetActive(false)
|
|
if self.liveNode then
|
|
poolManager:UnLoadLive(self.liveNode.name, self.liveNode)
|
|
self.liveNode = nil
|
|
end
|
|
end
|
|
|
|
--界面销毁时调用(用于子类重写)
|
|
function ElementDrawCardPanelNew:OnDestroy()
|
|
self.spLoader:Destroy()
|
|
end
|
|
|
|
return ElementDrawCardPanelNew |