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:
SL1900
2026-07-21 12:30:00 +09:00
parent a12087abad
commit 8c4bd41668
1334 changed files with 873026 additions and 95164 deletions
@@ -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