35c8d87e86
EN: 1.4.0.73 CN: 1.4.0.74 JP: 1.4.0.77 KR: 1.4.0.80
83 lines
2.9 KiB
Lua
83 lines
2.9 KiB
Lua
local BaseCtrl = require("GameCore.UI.BaseCtrl")
|
|
local CharFavourExpUpCtrl = class("CharFavourExpUpCtrl", BaseCtrl)
|
|
CharFavourExpUpCtrl._mapNodeConfig = {
|
|
loopExpUpRoot = {
|
|
sNodeName = "ExpUpRoot",
|
|
sComponentName = "LoopScrollView"
|
|
}
|
|
}
|
|
CharFavourExpUpCtrl._mapEventConfig = {}
|
|
function CharFavourExpUpCtrl:Awake()
|
|
local tbParam = self:GetPanelParam()
|
|
self.charData = tbParam[1]
|
|
end
|
|
function CharFavourExpUpCtrl:OnEnable()
|
|
self.tbLevelUpList = {}
|
|
self:OnRefresh()
|
|
end
|
|
function CharFavourExpUpCtrl:OnRefresh()
|
|
local count = #self.charData
|
|
for i = count, 1, -1 do
|
|
local affinityLevel = PlayerData.Char:GetIsNeedShowAffinityLevelUp(self.charData[i])
|
|
if affinityLevel < 0 and not PlayerData.Char:GetIsAffinityExpUp(self.charData[i]) then
|
|
table.remove(self.charData, i)
|
|
end
|
|
end
|
|
self._mapNode.loopExpUpRoot:Init(#self.charData, self, self.OnRefreshGrid)
|
|
self:AddTimer(1, 0.1, "OpenLevelUpPanel", true, true, true)
|
|
end
|
|
function CharFavourExpUpCtrl:OnRefreshGrid(goGrid, gridIndex)
|
|
local index = gridIndex + 1
|
|
local data = self.charData[index]
|
|
local rootTrans = goGrid.transform:Find("Root")
|
|
local animRoot = rootTrans:GetComponent("Animator")
|
|
local imgHead = rootTrans:Find("imgHead"):GetComponent("Image")
|
|
local txtFavourLevel = rootTrans:Find("imgHead/txtFavourLevel"):GetComponent("TMP_Text")
|
|
local txtName = rootTrans:Find("txtName"):GetComponent("TMP_Text")
|
|
local imgHeart = rootTrans:Find("imgHead/imgHeart"):GetComponent("Image")
|
|
local nSkinId = PlayerData.Char:GetCharSkinId(data)
|
|
local mapCfgData_Skin = ConfigTable.GetData_CharacterSkin(nSkinId)
|
|
self:SetPngSprite(imgHead, mapCfgData_Skin.Icon, AllEnum.CharHeadIconSurfix.L)
|
|
local mapData = PlayerData.Char:GetCharAffinityData(data)
|
|
local level = 0
|
|
local exp = 0
|
|
if mapData ~= nil then
|
|
level = mapData.Level
|
|
exp = mapData.Exp
|
|
end
|
|
NovaAPI.SetTMPText(txtFavourLevel, level)
|
|
local mapCharCfg = ConfigTable.GetData_Character(data)
|
|
NovaAPI.SetTMPText(txtName, mapCharCfg.Name)
|
|
local mapAffinity = {}
|
|
local templateId = ConfigTable.GetData("CharAffinityTemplate", data).TemplateId
|
|
local forEachAffinityLevel = function(mapData)
|
|
if mapData.TemplateId == templateId and mapData.AffinityLevel == level then
|
|
mapAffinity = mapData
|
|
end
|
|
end
|
|
ForEachTableLine(DataTable.AffinityLevel, forEachAffinityLevel)
|
|
if mapAffinity.AffinityLevelIcon ~= "" then
|
|
self:SetPngSprite(imgHeart, mapAffinity.AffinityLevelIcon)
|
|
end
|
|
local affinityLevel, affinityExp = PlayerData.Char:GetIsNeedShowAffinityLevelUp(data)
|
|
if 0 <= affinityLevel then
|
|
table.insert(self.tbLevelUpList, {
|
|
charID = data,
|
|
curLevel = level,
|
|
lastLevel = affinityLevel,
|
|
curExp = exp,
|
|
lastExp = affinityExp
|
|
})
|
|
end
|
|
self:AddTimer(1, 0.8, function()
|
|
animRoot:SetTrigger("out")
|
|
end, true, true, true)
|
|
end
|
|
function CharFavourExpUpCtrl:OpenLevelUpPanel()
|
|
if #self.tbLevelUpList <= 0 then
|
|
return
|
|
end
|
|
EventManager.Hit(EventId.OpenPanel, PanelId.CharFavourLevelUp, self.tbLevelUpList)
|
|
end
|
|
return CharFavourExpUpCtrl
|