8c4bd41668
EN: 1.13.0.124 CN: 1.13.0.124 JP: 1.13.0.128 KR: 1.13.0.130
210 lines
6.5 KiB
Lua
210 lines
6.5 KiB
Lua
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
|