Update - 1.13.0.124
EN: 1.13.0.124 CN: 1.13.0.124 JP: 1.13.0.128 KR: 1.13.0.130
This commit is contained in:
@@ -0,0 +1,209 @@
|
||||
local SoldierCharCardItemCtrl = class("SoldierCharCardItemCtrl", BaseCtrl)
|
||||
local iconPath2 = "Icon/SoldierOtherIcon/"
|
||||
SoldierCharCardItemCtrl._mapNodeConfig = {
|
||||
btnItem = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnItemClick"
|
||||
},
|
||||
Star = {nCount = 5},
|
||||
FxStar = {nCount = 5},
|
||||
StarRoot = {sComponentName = "Transform"},
|
||||
goChar = {},
|
||||
imgEmpty = {},
|
||||
imgSelect = {},
|
||||
imgLock = {},
|
||||
imgPut = {},
|
||||
imageIcon = {sComponentName = "Image"},
|
||||
imageRarity = {sComponentName = "Image"},
|
||||
imgRecommend = {sComponentName = "Image"},
|
||||
img_Position = {sComponentName = "Image"},
|
||||
imgAttribute = {sComponentName = "Image"},
|
||||
animRoot = {sNodeName = "AnimRoot", sComponentName = "Animator"}
|
||||
}
|
||||
SoldierCharCardItemCtrl._mapEventConfig = {
|
||||
SoldierCharCardItemClicked = "OnEvent_SoldierCharCardItemClicked",
|
||||
SoldierRecommend_Update = "SetTrackAndRecommend",
|
||||
SoldierPartnerTrace = "SetTrackAndRecommend",
|
||||
SoldierExtraPartnerTagChange = "OnEvent_SoldierExtraPartnerTagChange"
|
||||
}
|
||||
SoldierCharCardItemCtrl._mapRedDotConfig = {}
|
||||
SoldierCharCardItemCtrl.MAX_STAR = 5
|
||||
function SoldierCharCardItemCtrl:Awake()
|
||||
self.bActive = false
|
||||
end
|
||||
function SoldierCharCardItemCtrl:OnEnable()
|
||||
self.bActive = true
|
||||
end
|
||||
function SoldierCharCardItemCtrl:OnDisable()
|
||||
self._objClickCallback = nil
|
||||
self._fnClickCallback = nil
|
||||
self.nCharId = nil
|
||||
self.bActive = false
|
||||
end
|
||||
function SoldierCharCardItemCtrl:OnDestroy()
|
||||
self.bActive = false
|
||||
end
|
||||
function SoldierCharCardItemCtrl:OnSelected()
|
||||
end
|
||||
function SoldierCharCardItemCtrl:OnRefresh(nCharId)
|
||||
self.nCharId = nCharId
|
||||
self:SetItemData(nCharId)
|
||||
end
|
||||
function SoldierCharCardItemCtrl:SetItemData(nCharId, bInSandland)
|
||||
bInSandland = bInSandland or false
|
||||
self._mapNode.imgSelect:SetActive(false)
|
||||
self._mapNode.imgPut:SetActive(false)
|
||||
if nCharId == nil then
|
||||
self._mapNode.goChar:SetActive(false)
|
||||
self._mapNode.imgEmpty:SetActive(true)
|
||||
return
|
||||
end
|
||||
self.nCharId = nCharId
|
||||
self._mapNode.imgEmpty:SetActive(false)
|
||||
self._mapNode.goChar:SetActive(true)
|
||||
local soldierCharConfig = ConfigTable.GetData("SoldierCharacter", nCharId)
|
||||
if soldierCharConfig == nil then
|
||||
return
|
||||
end
|
||||
self:SetRarity(soldierCharConfig.Rarity)
|
||||
self:SetStar(soldierCharConfig.Star, nCharId)
|
||||
self:SetChessPosition(soldierCharConfig.Type)
|
||||
self.bInSandland = bInSandland
|
||||
self:SetTrackAndRecommend()
|
||||
local skinConfig = ConfigTable.GetData("SoldierSkin", soldierCharConfig.Skin)
|
||||
if skinConfig then
|
||||
self:SetPngSprite(self._mapNode.imageIcon, skinConfig.Icon .. AllEnum.SoldierChessIconSurfix.M)
|
||||
end
|
||||
end
|
||||
function SoldierCharCardItemCtrl:SetRarity(nRarity)
|
||||
if nRarity == nil then
|
||||
return
|
||||
end
|
||||
self:SetPngSprite(self._mapNode.imageRarity, "Icon/SoldierOtherIcon/" .. AllEnum.SoldierChessRarityIcon[nRarity] .. AllEnum.SoldierChessIconSurfix.M)
|
||||
end
|
||||
function SoldierCharCardItemCtrl:SetAttribute(nIndex)
|
||||
if nIndex == nil or nIndex < 1 or 3 < nIndex then
|
||||
self._mapNode.imgAttribute.gameObject:SetActive(false)
|
||||
return
|
||||
end
|
||||
local nCfgId = PlayerData.SoldierData:GetSoldierPositionEffectDataId(nIndex)
|
||||
local cfg = ConfigTable.GetData("SoldierPositionEffect", nCfgId)
|
||||
if cfg then
|
||||
self._mapNode.imgAttribute.gameObject:SetActive(true)
|
||||
self:SetPngSprite(self._mapNode.imgAttribute, iconPath2 .. cfg.Icon)
|
||||
end
|
||||
end
|
||||
function SoldierCharCardItemCtrl:SetStar(nStar, nCharId)
|
||||
nStar = nStar or 0
|
||||
local bPlayCompoundAnim = false
|
||||
if self.nStar == nil then
|
||||
self.nStar = nStar
|
||||
elseif nStar > self.nStar and self.nCharId == nCharId then
|
||||
self.nStar = nStar
|
||||
bPlayCompoundAnim = true
|
||||
end
|
||||
for i = 1, self.MAX_STAR do
|
||||
local goFxStar = self._mapNode.FxStar[i]
|
||||
if goFxStar then
|
||||
goFxStar:SetActive(i <= nStar)
|
||||
end
|
||||
end
|
||||
if bPlayCompoundAnim == true then
|
||||
CS.WwiseAudioManager.Instance:PostEvent("mode_900001_chess_chair_combine")
|
||||
local nAnimLength = NovaAPI.GetAnimClipLength(self._mapNode.animRoot, {
|
||||
"SoldierSupportCard_compound"
|
||||
})
|
||||
self:AddTimer(1, nAnimLength, function()
|
||||
for i = 1, self.MAX_STAR do
|
||||
local goStar = self._mapNode.Star[i]
|
||||
if goStar then
|
||||
goStar:SetActive(i <= nStar)
|
||||
end
|
||||
end
|
||||
end)
|
||||
else
|
||||
for i = 1, self.MAX_STAR do
|
||||
local goStar = self._mapNode.Star[i]
|
||||
if goStar then
|
||||
goStar:SetActive(nStar >= i)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
function SoldierCharCardItemCtrl:SetTrackAndRecommend()
|
||||
if self.bActive == false then
|
||||
return
|
||||
end
|
||||
if self.bInSandland == nil or self.bInSandland == false then
|
||||
self._mapNode.imgRecommend.gameObject:SetActive(false)
|
||||
return
|
||||
end
|
||||
if self.nCharId == nil then
|
||||
return
|
||||
end
|
||||
self._mapNode.imgRecommend.gameObject:SetActive(true)
|
||||
local levelData = PlayerData.SoldierData:GetCurLevelData()
|
||||
if levelData == nil then
|
||||
self._mapNode.imgRecommend.gameObject:SetActive(false)
|
||||
return
|
||||
end
|
||||
local bTrack = levelData:CheckChessTrace(self.nCharId)
|
||||
local bRecommend = PlayerData.SoldierData:CheckChessRecommendState(self.nCharId)
|
||||
local sIcon = ""
|
||||
if bRecommend and bTrack then
|
||||
sIcon = "Icon/SoldierOtherIcon/SoldierPartnerBuilds_03"
|
||||
elseif bTrack then
|
||||
sIcon = "Icon/SoldierOtherIcon/SoldierPartnerBuilds_02"
|
||||
elseif bRecommend then
|
||||
sIcon = "Icon/SoldierOtherIcon/SoldierPartnerBuilds_01"
|
||||
else
|
||||
self._mapNode.imgRecommend.gameObject:SetActive(false)
|
||||
end
|
||||
if sIcon ~= "" then
|
||||
self:SetPngSprite(self._mapNode.imgRecommend, sIcon)
|
||||
end
|
||||
end
|
||||
function SoldierCharCardItemCtrl:SetChessPosition(nType)
|
||||
if nType == nil then
|
||||
return
|
||||
end
|
||||
local tbChessTypeConfig = CacheTable.GetData("_SoldierChessType", nType)
|
||||
local sIcon = ""
|
||||
if tbChessTypeConfig ~= nil then
|
||||
sIcon = tbChessTypeConfig.Icon
|
||||
end
|
||||
local sPath = "Icon/SoldierOtherIcon/" .. sIcon
|
||||
self:SetPngSprite(self._mapNode.img_Position, sPath)
|
||||
end
|
||||
function SoldierCharCardItemCtrl:SetSelect(bSelect)
|
||||
self._mapNode.ImageSelect.gameObject:SetActive(bSelect)
|
||||
end
|
||||
function SoldierCharCardItemCtrl:SetLock(bLock)
|
||||
self._mapNode.imgLock.gameObject:SetActive(bLock)
|
||||
end
|
||||
function SoldierCharCardItemCtrl:SetClickCallback(obj, fn)
|
||||
self._objClickCallback = obj
|
||||
self._fnClickCallback = fn
|
||||
end
|
||||
function SoldierCharCardItemCtrl:GetAnimator()
|
||||
if self._mapNode.animRoot == nil then
|
||||
self._mapNode.animRoot = self.gameObejct.transform:GetChild(0):GetChild(0):GetComponent("Animator")
|
||||
if self._mapNode.animRoot == nil then
|
||||
return nil
|
||||
end
|
||||
end
|
||||
return self._mapNode.animRoot
|
||||
end
|
||||
function SoldierCharCardItemCtrl:OnBtnItemClick()
|
||||
if self._fnClickCallback ~= nil and self.nCharId ~= nil then
|
||||
self._fnClickCallback(self._objClickCallback, self.nCharId)
|
||||
end
|
||||
end
|
||||
function SoldierCharCardItemCtrl:OnEvent_SoldierCharCardItemClicked(nCharId)
|
||||
if nCharId == nil then
|
||||
self:SetSelect(false)
|
||||
return
|
||||
end
|
||||
self:SetSelect(nCharId == self.nCharId)
|
||||
end
|
||||
return SoldierCharCardItemCtrl
|
||||
@@ -0,0 +1,52 @@
|
||||
local SoldierCharItemCtrl = class("SoldierCharItemCtrl", BaseCtrl)
|
||||
local RootPath = "Icon/SoldierOtherIcon/"
|
||||
SoldierCharItemCtrl._mapNodeConfig = {
|
||||
img_icon = {sComponentName = "Image"},
|
||||
img_rarity = {sComponentName = "Image"},
|
||||
imgInBattle = {},
|
||||
txtInBattle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Soldier_InBattle"
|
||||
},
|
||||
imgMask = {},
|
||||
Star = {nCount = 5},
|
||||
StarRoot = {}
|
||||
}
|
||||
SoldierCharItemCtrl._mapEventConfig = {}
|
||||
SoldierCharItemCtrl._mapRedDotConfig = {}
|
||||
function SoldierCharItemCtrl:SetItemData(soldierCharId)
|
||||
self.soldierCharId = soldierCharId
|
||||
local soldierCharConfig = ConfigTable.GetData("SoldierCharacter", self.soldierCharId)
|
||||
if soldierCharConfig == nil then
|
||||
return
|
||||
end
|
||||
local rarity = soldierCharConfig.Rarity
|
||||
self:SetPngSprite(self._mapNode.img_rarity, RootPath .. AllEnum.SoldierChessRarityIcon[rarity] .. AllEnum.SoldierChessIconSurfix.S)
|
||||
local skinId = soldierCharConfig.Skin
|
||||
local skinConfig = ConfigTable.GetData("SoldierSkin", skinId)
|
||||
if skinConfig == nil then
|
||||
return
|
||||
end
|
||||
self:SetPngSprite(self._mapNode.img_icon, skinConfig.Icon .. AllEnum.SoldierChessIconSurfix.S)
|
||||
end
|
||||
function SoldierCharItemCtrl:SetItemState(bInBattle, bNotOwned)
|
||||
self._mapNode.imgInBattle:SetActive(bInBattle)
|
||||
self._mapNode.imgMask:SetActive(bNotOwned)
|
||||
end
|
||||
function SoldierCharItemCtrl:SetCharItemBtnFunc(callback)
|
||||
local btnChar = self.gameObject:GetComponent("UIButton")
|
||||
if btnChar == nil then
|
||||
return
|
||||
end
|
||||
btnChar.onClick:RemoveAllListeners()
|
||||
btnChar.onClick:AddListener(callback)
|
||||
end
|
||||
function SoldierCharItemCtrl:SetCharLevel(nLevel)
|
||||
self._mapNode.StarRoot:SetActive(0 < nLevel)
|
||||
if 0 < nLevel then
|
||||
for i = 1, 5 do
|
||||
self._mapNode.Star[i]:SetActive(i <= nLevel)
|
||||
end
|
||||
end
|
||||
end
|
||||
return SoldierCharItemCtrl
|
||||
@@ -0,0 +1,314 @@
|
||||
local SoldierCharSupportCardItemCtrl = class("SoldierCharSupportCardItemCtrl", BaseCtrl)
|
||||
local SoldierAttrData = require("GameCore.Data.DataClass.Soldier.SoldierAttrData")
|
||||
SoldierCharSupportCardItemCtrl._mapNodeConfig = {
|
||||
btnItem = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnItemClick"
|
||||
},
|
||||
Star = {nCount = 5},
|
||||
FxStar = {nCount = 5},
|
||||
StarRoot = {sComponentName = "Transform"},
|
||||
goChar = {},
|
||||
imgEmpty = {},
|
||||
imgSelect = {},
|
||||
imgPut = {},
|
||||
ImgPutLight = {},
|
||||
imageIcon = {sComponentName = "Image"},
|
||||
imageRarity = {sComponentName = "Image"},
|
||||
img_Position = {sComponentName = "Image"},
|
||||
imgPosition = {},
|
||||
animRoot = {sNodeName = "AnimRoot", sComponentName = "Animator"},
|
||||
HeadRoot = {sComponentName = "Animator"},
|
||||
img_icon = {sComponentName = "Image"},
|
||||
img_iconBg = {sComponentName = "Image"},
|
||||
img_iconBg_Add = {sComponentName = "Image"},
|
||||
Fx_warrior = {}
|
||||
}
|
||||
SoldierCharSupportCardItemCtrl._mapEventConfig = {
|
||||
SoldierCharSupportCardItemClicked = "OnEvent_SoldierCharSupportCardItemClicked",
|
||||
SoldierPartnerNewActive = "OnEvent_SoldierPartnerNewActive",
|
||||
SoldierExtraPartnerTagChange = "OnEvent_SoldierExtraPartnerTagChange"
|
||||
}
|
||||
SoldierCharSupportCardItemCtrl._mapRedDotConfig = {}
|
||||
SoldierCharSupportCardItemCtrl.MAX_STAR = 5
|
||||
function SoldierCharSupportCardItemCtrl:Awake()
|
||||
end
|
||||
function SoldierCharSupportCardItemCtrl:OnEnable()
|
||||
end
|
||||
function SoldierCharSupportCardItemCtrl:OnDisable()
|
||||
self:_StopPartnerActiveAnim()
|
||||
end
|
||||
function SoldierCharSupportCardItemCtrl:OnDestroy()
|
||||
self:_StopPartnerActiveAnim()
|
||||
end
|
||||
function SoldierCharSupportCardItemCtrl:OnSelected()
|
||||
end
|
||||
function SoldierCharSupportCardItemCtrl:OnRefresh(nCharId)
|
||||
if self.nCharId ~= nCharId then
|
||||
self:_StopPartnerActiveAnim()
|
||||
end
|
||||
self.nCharId = nCharId
|
||||
self:SetItemData(nCharId)
|
||||
end
|
||||
function SoldierCharSupportCardItemCtrl:SetItemData(nCharId)
|
||||
if self.nCharId ~= nCharId then
|
||||
self:_StopPartnerActiveAnim()
|
||||
end
|
||||
self._mapNode.imgPut:SetActive(false)
|
||||
self._mapNode.ImgPutLight:SetActive(false)
|
||||
self._mapNode.imgSelect:SetActive(false)
|
||||
if nCharId == nil then
|
||||
self.nCharId = nil
|
||||
self._mapNode.goChar:SetActive(false)
|
||||
self._mapNode.imgEmpty:SetActive(true)
|
||||
return
|
||||
end
|
||||
self.nCharId = nCharId
|
||||
self._mapNode.imgEmpty:SetActive(false)
|
||||
self._mapNode.goChar:SetActive(true)
|
||||
local soldierCharConfig = ConfigTable.GetData("SoldierCharacter", nCharId)
|
||||
if soldierCharConfig == nil then
|
||||
return
|
||||
end
|
||||
self:SetRarity(soldierCharConfig.Rarity)
|
||||
self:SetStar(soldierCharConfig.Star, nCharId)
|
||||
local skinConfig = ConfigTable.GetData("SoldierSkin", soldierCharConfig.Skin)
|
||||
if skinConfig then
|
||||
self:SetPngSprite(self._mapNode.imageIcon, skinConfig.Icon .. AllEnum.SoldierChessIconSurfix.M)
|
||||
end
|
||||
self._mapNode.Fx_warrior.gameObject:SetActive(false)
|
||||
local curLevelData = PlayerData.SoldierData:GetCurLevelData()
|
||||
if curLevelData ~= nil then
|
||||
local bWarrior = curLevelData:GetExtraPartnerTags(self.nCharId)
|
||||
if bWarrior ~= nil then
|
||||
self._mapNode.Fx_warrior.gameObject:SetActive(true)
|
||||
end
|
||||
end
|
||||
end
|
||||
function SoldierCharSupportCardItemCtrl:SetRarity(nRarity)
|
||||
if nRarity == nil then
|
||||
return
|
||||
end
|
||||
self:SetPngSprite(self._mapNode.imageRarity, "Icon/SoldierOtherIcon/" .. AllEnum.SoldierChessRarityIcon[nRarity] .. AllEnum.SoldierChessIconSurfix.M)
|
||||
end
|
||||
function SoldierCharSupportCardItemCtrl:SetChessPosition(nDeployedPos)
|
||||
self._mapNode.imgPosition.gameObject:SetActive(false)
|
||||
if self.nCharId == nil then
|
||||
return
|
||||
end
|
||||
local mapChar = ConfigTable.GetData("SoldierCharacter", self.nCharId)
|
||||
if mapChar == nil then
|
||||
return
|
||||
end
|
||||
local nType = mapChar.Type or GameEnum.ChessType.Balance
|
||||
local tbChessTypeConfig = CacheTable.GetData("_SoldierChessType", nType)
|
||||
local sIcon = ""
|
||||
if tbChessTypeConfig ~= nil then
|
||||
sIcon = tbChessTypeConfig.Icon
|
||||
end
|
||||
self._mapNode.imgPosition.gameObject:SetActive(true)
|
||||
if nType ~= GameEnum.ChessType.Balance and nType ~= nDeployedPos then
|
||||
sIcon = sIcon .. "_00"
|
||||
end
|
||||
local sPath = "Icon/SoldierOtherIcon/" .. sIcon
|
||||
self:SetPngSprite(self._mapNode.img_Position, sPath)
|
||||
end
|
||||
function SoldierCharSupportCardItemCtrl:SetStar(nStar, nCharId)
|
||||
nStar = nStar or 0
|
||||
local bPlayCompoundAnim = false
|
||||
if self.nStar == nil then
|
||||
self.nStar = nStar
|
||||
elseif nStar > self.nStar and self.nCharId == nCharId then
|
||||
self.nStar = nStar
|
||||
bPlayCompoundAnim = true
|
||||
end
|
||||
for i = 1, self.MAX_STAR do
|
||||
local goFxStar = self._mapNode.FxStar[i]
|
||||
if goFxStar then
|
||||
goFxStar:SetActive(i <= nStar)
|
||||
end
|
||||
end
|
||||
if bPlayCompoundAnim == true then
|
||||
CS.WwiseAudioManager.Instance:PostEvent("mode_900001_chess_chair_combine")
|
||||
local nAnimLength = NovaAPI.GetAnimClipLength(self._mapNode.animRoot, {
|
||||
"SoldierSupportCard_compound"
|
||||
})
|
||||
self:AddTimer(1, nAnimLength, function()
|
||||
for i = 1, self.MAX_STAR do
|
||||
local goStar = self._mapNode.Star[i]
|
||||
if goStar then
|
||||
goStar:SetActive(i <= nStar)
|
||||
end
|
||||
end
|
||||
end)
|
||||
else
|
||||
for i = 1, self.MAX_STAR do
|
||||
local goStar = self._mapNode.Star[i]
|
||||
if goStar then
|
||||
goStar:SetActive(nStar >= i)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
function SoldierCharSupportCardItemCtrl:SetSelect(bSelect)
|
||||
self._mapNode.ImageSelect.gameObject:SetActive(bSelect)
|
||||
end
|
||||
function SoldierCharSupportCardItemCtrl:SetLock(bLock)
|
||||
self._mapNode.imgLock.gameObject:SetActive(bLock)
|
||||
end
|
||||
function SoldierCharSupportCardItemCtrl:_CancelPartnerActiveTimer()
|
||||
if self.timerCloseParterNode ~= nil then
|
||||
self.timerCloseParterNode:Cancel()
|
||||
self.timerCloseParterNode = nil
|
||||
end
|
||||
end
|
||||
function SoldierCharSupportCardItemCtrl:_StopPartnerActiveAnim()
|
||||
self:_CancelPartnerActiveTimer()
|
||||
self.tbPartnerActiveAnimQueue = nil
|
||||
self.mapPartnerActiveAnimPending = nil
|
||||
self.bPlayingPartnerActiveAnim = false
|
||||
if self._mapNode ~= nil and self._mapNode.HeadRoot ~= nil then
|
||||
self._mapNode.HeadRoot.gameObject:SetActive(false)
|
||||
end
|
||||
end
|
||||
function SoldierCharSupportCardItemCtrl:_GetPartnerActiveAnimKey(nPartnerType, nPartnerId)
|
||||
return tostring(nPartnerType or 0) .. "_" .. tostring(nPartnerId or 0)
|
||||
end
|
||||
function SoldierCharSupportCardItemCtrl:_TryInsertPartnerActiveAnim(tbQueue, nPartnerType, nPartnerId, nOrder)
|
||||
if nPartnerType == nil then
|
||||
return
|
||||
end
|
||||
local mapGroup = CacheTable.GetData("_SoldierPartnerGroup", nPartnerType)
|
||||
if mapGroup == nil then
|
||||
return
|
||||
end
|
||||
table.insert(tbQueue, {
|
||||
nType = nPartnerType,
|
||||
nId = nPartnerId,
|
||||
nOrder = nOrder
|
||||
})
|
||||
end
|
||||
function SoldierCharSupportCardItemCtrl:_GetMyActivePartnerQueue(tbActivePartner)
|
||||
local tbPartnerTypes = SoldierAttrData.GetPartnerGroupsByChessId(self.nCharId)
|
||||
if tbPartnerTypes == nil or #tbPartnerTypes == 0 then
|
||||
return nil
|
||||
end
|
||||
local tbQueue = {}
|
||||
for nOrder, nPartnerType in ipairs(tbPartnerTypes) do
|
||||
local mapActivePartner = tbActivePartner ~= nil and tbActivePartner[nPartnerType] or nil
|
||||
if mapActivePartner ~= nil then
|
||||
local nPartnerId = type(mapActivePartner) == "table" and mapActivePartner.nId or mapActivePartner
|
||||
self:_TryInsertPartnerActiveAnim(tbQueue, nPartnerType, nPartnerId, nOrder)
|
||||
end
|
||||
end
|
||||
if #tbQueue == 0 then
|
||||
return nil
|
||||
end
|
||||
table.sort(tbQueue, function(a, b)
|
||||
if a.nOrder == b.nOrder then
|
||||
return a.nType < b.nType
|
||||
end
|
||||
return a.nOrder < b.nOrder
|
||||
end)
|
||||
return tbQueue
|
||||
end
|
||||
function SoldierCharSupportCardItemCtrl:_TryAppendPartnerActiveAnimQueue(mapItem)
|
||||
if mapItem == nil then
|
||||
return
|
||||
end
|
||||
local sKey = self:_GetPartnerActiveAnimKey(mapItem.nType, mapItem.nId)
|
||||
self.mapPartnerActiveAnimPending = self.mapPartnerActiveAnimPending or {}
|
||||
if self.mapPartnerActiveAnimPending[sKey] == true then
|
||||
return
|
||||
end
|
||||
self.mapPartnerActiveAnimPending[sKey] = true
|
||||
self.tbPartnerActiveAnimQueue = self.tbPartnerActiveAnimQueue or {}
|
||||
table.insert(self.tbPartnerActiveAnimQueue, mapItem)
|
||||
end
|
||||
function SoldierCharSupportCardItemCtrl:_FinishPartnerActiveAnimItem(mapItem)
|
||||
if mapItem == nil or self.mapPartnerActiveAnimPending == nil then
|
||||
return
|
||||
end
|
||||
local sKey = self:_GetPartnerActiveAnimKey(mapItem.nType, mapItem.nId)
|
||||
self.mapPartnerActiveAnimPending[sKey] = nil
|
||||
end
|
||||
function SoldierCharSupportCardItemCtrl:_PlayNextPartnerActiveAnim()
|
||||
self:_CancelPartnerActiveTimer()
|
||||
if self.tbPartnerActiveAnimQueue == nil or #self.tbPartnerActiveAnimQueue == 0 then
|
||||
self.bPlayingPartnerActiveAnim = false
|
||||
self._mapNode.HeadRoot.gameObject:SetActive(false)
|
||||
return
|
||||
end
|
||||
local mapItem = table.remove(self.tbPartnerActiveAnimQueue, 1)
|
||||
local mapGroup = CacheTable.GetData("_SoldierPartnerGroup", mapItem.nType)
|
||||
local mapPartner = ConfigTable.GetData("SoldierPartner", mapItem.nId)
|
||||
if mapGroup ~= nil and mapPartner ~= nil then
|
||||
self.bPlayingPartnerActiveAnim = true
|
||||
self:SetPngSprite(self._mapNode.img_icon, "Icon/SoldierPartner/" .. mapGroup.Icon .. AllEnum.SoldierChessIconSurfix.M)
|
||||
self:SetPngSprite(self._mapNode.img_iconBg, "Icon/SoldierOtherIcon/PartnerLevelQuality_0" .. mapPartner.PartnerLevelQuality)
|
||||
self:SetPngSprite(self._mapNode.img_iconBg_Add, "Icon/SoldierOtherIcon/PartnerLevelQuality_0" .. mapPartner.PartnerLevelQuality)
|
||||
self._mapNode.HeadRoot.gameObject:SetActive(true)
|
||||
self._mapNode.HeadRoot:Play("HeadActive", 0, 0)
|
||||
local nAnimLength = NovaAPI.GetAnimClipLength(self._mapNode.HeadRoot, {"HeadActive"})
|
||||
if type(nAnimLength) ~= "number" or nAnimLength <= 0 then
|
||||
nAnimLength = 1
|
||||
end
|
||||
self.timerCloseParterNode = self:AddTimer(1, nAnimLength, function()
|
||||
self._mapNode.HeadRoot.gameObject:SetActive(false)
|
||||
self:_FinishPartnerActiveAnimItem(mapItem)
|
||||
self:_PlayNextPartnerActiveAnim()
|
||||
end, true, true)
|
||||
else
|
||||
self:_FinishPartnerActiveAnimItem(mapItem)
|
||||
self:_PlayNextPartnerActiveAnim()
|
||||
end
|
||||
end
|
||||
function SoldierCharSupportCardItemCtrl:OnEvent_SoldierPartnerNewActive(tbActivePartner)
|
||||
local tbQueue = self:_GetMyActivePartnerQueue(tbActivePartner)
|
||||
if tbQueue == nil then
|
||||
return
|
||||
end
|
||||
for _, mapItem in ipairs(tbQueue) do
|
||||
self:_TryAppendPartnerActiveAnimQueue(mapItem)
|
||||
end
|
||||
if self.bPlayingPartnerActiveAnim ~= true then
|
||||
self:_PlayNextPartnerActiveAnim()
|
||||
end
|
||||
end
|
||||
function SoldierCharSupportCardItemCtrl:OnEvent_SoldierExtraPartnerTagChange()
|
||||
local bWarrior = PlayerData.SoldierData:GetCurLevelData():GetExtraPartnerTags(self.nCharId)
|
||||
if bWarrior ~= nil then
|
||||
self._mapNode.Fx_warrior.gameObject:SetActive(true)
|
||||
else
|
||||
self._mapNode.Fx_warrior.gameObject:SetActive(false)
|
||||
end
|
||||
end
|
||||
function SoldierCharSupportCardItemCtrl:GetAnimator()
|
||||
if self._mapNode.animRoot == nil then
|
||||
self._mapNode.animRoot = self.gameObejct.transform:GetChild(0):GetChild(0):GetComponent("Animator")
|
||||
if self._mapNode.animRoot == nil then
|
||||
return nil
|
||||
end
|
||||
end
|
||||
return self._mapNode.animRoot
|
||||
end
|
||||
function SoldierCharSupportCardItemCtrl:OnBtnItemClick()
|
||||
if self._fnClickCallback ~= nil and self.nCharId ~= nil then
|
||||
self._fnClickCallback(self._objClickCallback, self.nCharId)
|
||||
end
|
||||
end
|
||||
function SoldierCharSupportCardItemCtrl:SetClickCallback(obj, fn)
|
||||
self._objClickCallback = obj
|
||||
self._fnClickCallback = fn
|
||||
end
|
||||
function SoldierCharSupportCardItemCtrl:OnEvent_SoldierCharSupportCardItemClicked(nCharId)
|
||||
if nCharId == nil then
|
||||
self:SetSelect(false)
|
||||
return
|
||||
end
|
||||
if self._fnClickCallback ~= nil and self.nCharId ~= nil then
|
||||
self:SetSelect(nCharId == self.nCharId)
|
||||
self._fnClickCallback(self._objClickCallback, self.nCharId)
|
||||
end
|
||||
end
|
||||
return SoldierCharSupportCardItemCtrl
|
||||
Reference in New Issue
Block a user