e0549005e1
EN: 1.9.0.103 CN: 1.9.0.104 JP: 1.9.0.106 KR: 1.9.0.108
156 lines
6.5 KiB
Lua
156 lines
6.5 KiB
Lua
local TemplateCharCtrl = class("TemplateCharCtrl", BaseCtrl)
|
|
TemplateCharCtrl._mapNodeConfig = {
|
|
imgRareFrame = {sComponentName = "Image"},
|
|
imgHead = {sComponentName = "Image"},
|
|
imgRareName = {sComponentName = "Image"},
|
|
imgElement = {sComponentName = "Image"},
|
|
txtCharName = {sComponentName = "TMP_Text"},
|
|
txtRank = {sComponentName = "TMP_Text"},
|
|
txtLv = {sComponentName = "TMP_Text", sLanguageId = "Lv"},
|
|
imgSelected = {},
|
|
redDotChar = {},
|
|
imgBg = {},
|
|
imgElementMask = {},
|
|
txtCharClass = {sComponentName = "TMP_Text"},
|
|
imgAttackType = {sComponentName = "Image"},
|
|
imgClassBg = {sComponentName = "Image"},
|
|
imgRankBg = {},
|
|
imgAttackTypeBg = {},
|
|
goSkills = {},
|
|
imgSkill = {nCount = 4, sComponentName = "Image"},
|
|
txtSkill = {nCount = 4, sComponentName = "TMP_Text"},
|
|
imgAffinity = {sComponentName = "Image"},
|
|
txtAffinity = {sComponentName = "TMP_Text"},
|
|
imgFavorite = {}
|
|
}
|
|
TemplateCharCtrl._mapEventConfig = {}
|
|
function TemplateCharCtrl:SetChar(nCharId, bShowRedDot, bLocked, nTrialId, nSortType)
|
|
self.nCharId = nCharId
|
|
self._mapNode.imgSelected:SetActive(false)
|
|
local mapTrial
|
|
if nTrialId then
|
|
mapTrial = ConfigTable.GetData("TrialCharacter", nTrialId)
|
|
end
|
|
local mapChar = ConfigTable.GetData_Character(nCharId)
|
|
if mapChar == nil then
|
|
return
|
|
end
|
|
NovaAPI.SetTMPText(self._mapNode.txtCharName, mapTrial and mapTrial.Name or mapChar.Name)
|
|
local nLv = bLocked and 1 or PlayerData.Char:GetCharLv(nCharId)
|
|
if mapTrial then
|
|
nLv = mapTrial.Level
|
|
end
|
|
NovaAPI.SetTMPText(self._mapNode.txtRank, nLv)
|
|
local nSkinId = bLocked and ConfigTable.GetData_Character(nCharId).DefaultSkinId or PlayerData.Char:GetCharSkinId(nCharId)
|
|
if mapTrial then
|
|
nSkinId = mapTrial.CharacterSkin
|
|
end
|
|
local mapCharSkin = ConfigTable.GetData_CharacterSkin(nSkinId)
|
|
if mapCharSkin == nil then
|
|
return
|
|
end
|
|
self:RefreshCharaIsFavorite()
|
|
self:SetPngSprite(self._mapNode.imgHead, mapCharSkin.Icon .. AllEnum.CharHeadIconSurfix.XL)
|
|
local nRarity = mapChar.Grade
|
|
self:SetSprite_FrameColor(self._mapNode.imgRareFrame, nRarity == GameEnum.characterGrade.R and GameEnum.characterGrade.SR or nRarity, AllEnum.FrameType_New.CharFrame, true)
|
|
self:SetSprite_FrameColor(self._mapNode.imgRareName, nRarity, AllEnum.FrameType_New.Text)
|
|
NovaAPI.SetImageNativeSize(self._mapNode.imgRareName)
|
|
local sName = AllEnum.ElementIconType.Icon .. mapChar.EET
|
|
self:SetAtlasSprite(self._mapNode.imgElement, "12_rare", sName)
|
|
self._mapNode.imgElementMask:SetActive(bLocked)
|
|
self._mapNode.imgBg:SetActive(bLocked)
|
|
NovaAPI.SetTMPText(self._mapNode.txtCharClass, ConfigTable.GetUIText("Char_JobClass_" .. mapChar.Class))
|
|
if mapChar.CharacterAttackType == GameEnum.characterAttackType.MELEE then
|
|
self:SetAtlasSprite(self._mapNode.imgAttackType, "10_ico", "zs_list_near")
|
|
elseif mapChar.CharacterAttackType == GameEnum.characterAttackType.RANGED then
|
|
self:SetAtlasSprite(self._mapNode.imgAttackType, "10_ico", "zs_list_far")
|
|
end
|
|
if mapChar.Class == GameEnum.characterJobClass.Vanguard then
|
|
self:SetAtlasSprite(self._mapNode.imgClassBg, "08_db", "db_list_herald")
|
|
elseif mapChar.Class == GameEnum.characterJobClass.Balance then
|
|
self:SetAtlasSprite(self._mapNode.imgClassBg, "08_db", "db_list_equal")
|
|
elseif mapChar.Class == GameEnum.characterJobClass.Support then
|
|
self:SetAtlasSprite(self._mapNode.imgClassBg, "08_db", "db_list_assist")
|
|
end
|
|
if bShowRedDot then
|
|
self:RegisterRedDot()
|
|
else
|
|
self._mapNode.redDotChar.gameObject:SetActive(false)
|
|
end
|
|
self._mapNode.imgAffinity.gameObject:SetActive(nSortType == AllEnum.SortType.Affinity)
|
|
self._mapNode.goSkills:SetActive(nSortType == AllEnum.SortType.Skill)
|
|
if nSortType then
|
|
if nSortType == AllEnum.SortType.Affinity then
|
|
local mapCharAffinity = ConfigTable.GetData("CharAffinityTemplate", nCharId)
|
|
if mapCharAffinity == nil then
|
|
return
|
|
end
|
|
local templateId = mapCharAffinity.TemplateId
|
|
local tbCharData = PlayerData.Char:GetCharDataById(nCharId)
|
|
local curData = CacheTable.GetData("_AffinityLevel", templateId)[tbCharData.Favorability]
|
|
if curData ~= nil then
|
|
self:SetPngSprite(self._mapNode.imgAffinity, curData.AffinityLevelIcon)
|
|
else
|
|
self._mapNode.imgAffinity.gameObject:SetActive(false)
|
|
end
|
|
NovaAPI.SetTMPText(self._mapNode.txtAffinity, tbCharData.Favorability)
|
|
elseif nSortType == AllEnum.SortType.Skill then
|
|
local mapCharSkill = PlayerData.Char:GetCharSkillUpgradeData(nCharId)
|
|
if mapCharSkill ~= nil and not bLocked then
|
|
for i = 1, 4 do
|
|
local skillShowCfg = AllEnum.SkillTypeShow[i]
|
|
local skillTypeIconIdx = skillShowCfg.iconIndex
|
|
self:SetAtlasSprite(self._mapNode.imgSkill[i], "05_language", "zs_character_skill_text_" .. skillTypeIconIdx)
|
|
NovaAPI.SetTMPText(self._mapNode.txtSkill[i], mapCharSkill[i].nLv)
|
|
end
|
|
else
|
|
self._mapNode.goSkills:SetActive(false)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
function TemplateCharCtrl:SetSpecificChar(nCharId, nLv, nSkinId)
|
|
self._mapNode.imgSelected:SetActive(false)
|
|
local mapChar = ConfigTable.GetData_Character(nCharId)
|
|
if mapChar == nil then
|
|
return
|
|
end
|
|
NovaAPI.SetTMPText(self._mapNode.txtCharName, mapChar.Name)
|
|
self._mapNode.imgRankBg:SetActive(nLv)
|
|
if nLv then
|
|
NovaAPI.SetTMPText(self._mapNode.txtRank, nLv)
|
|
end
|
|
nSkinId = nSkinId or ConfigTable.GetData_Character(nCharId).DefaultSkinId
|
|
local mapCharSkin = ConfigTable.GetData_CharacterSkin(nSkinId)
|
|
if mapCharSkin == nil then
|
|
return
|
|
end
|
|
self:SetPngSprite(self._mapNode.imgHead, mapCharSkin.Icon .. AllEnum.CharHeadIconSurfix.XL)
|
|
local nRarity = mapChar.Grade
|
|
self:SetSprite_FrameColor(self._mapNode.imgRareFrame, nRarity == GameEnum.characterGrade.R and GameEnum.characterGrade.SR or nRarity, AllEnum.FrameType_New.CharFrame, true)
|
|
self:SetSprite_FrameColor(self._mapNode.imgRareName, nRarity, AllEnum.FrameType_New.Text)
|
|
NovaAPI.SetImageNativeSize(self._mapNode.imgRareName)
|
|
local sName = AllEnum.ElementIconType.Icon .. mapChar.EET
|
|
self:SetAtlasSprite(self._mapNode.imgElement, "12_rare", sName)
|
|
self._mapNode.imgElementMask:SetActive(false)
|
|
self._mapNode.imgBg:SetActive(false)
|
|
self._mapNode.imgAttackTypeBg:SetActive(false)
|
|
self._mapNode.imgClassBg.gameObject:SetActive(false)
|
|
self._mapNode.redDotChar.gameObject:SetActive(false)
|
|
end
|
|
function TemplateCharCtrl:SetSelect(bSelect)
|
|
self._mapNode.imgSelected:SetActive(bSelect)
|
|
end
|
|
function TemplateCharCtrl:RefreshCharaIsFavorite()
|
|
local bIsFavorite = PlayerData.Char:GetCharFavoriteState(self.nCharId)
|
|
if bIsFavorite ~= nil then
|
|
self._mapNode.imgFavorite:SetActive(bIsFavorite)
|
|
end
|
|
end
|
|
function TemplateCharCtrl:RegisterRedDot()
|
|
RedDotManager.RegisterNode(RedDotDefine.Role_Item, self.nCharId, self._mapNode.redDotChar)
|
|
end
|
|
function TemplateCharCtrl:OnDisable()
|
|
end
|
|
return TemplateCharCtrl
|