Files
SL1900 5e0d58cfad Initial version - 1.2.0.60
EN: 1.2.0.60
CN: 1.2.0.61
JP: 1.2.0.63
KR: 1.2.0.67
2025-12-03 01:00:00 +09:00

130 lines
5.4 KiB
Lua

local TemplateSkillCtrl = class("TemplateSkillCtrl", BaseCtrl)
local TipsType = {
CharSkill = 1,
Talent = 2,
TalentSkill = 3,
MonsterSkill = 4
}
TemplateSkillCtrl._mapNodeConfig = {
imgElementBg = {sComponentName = "Image"},
imgIcon = {sComponentName = "Image"},
txtName = {sComponentName = "TMP_Text"},
btnSkill = {
sComponentName = "UIButton",
callback = "OnBtnClick_Skill"
},
rtSkill = {
sNodeName = "btnSkill",
sComponentName = "RectTransform"
},
TopGridCanvas = {sNodeName = "btnSkill"},
txtLevel = {sComponentName = "TMP_Text"},
txtLv = {
sComponentName = "TMP_Text",
sLanguageId = "Character_Skill_Lv"
}
}
TemplateSkillCtrl._mapEventConfig = {}
function TemplateSkillCtrl:SetCharSkill(nSkillId, nSkillLevel, nElementType)
self.nTipsType = TipsType.CharSkill
self.nSkillId = nSkillId
self.nSkillLevel = nSkillLevel
self.nElementType = nElementType
self:_RefreshSkillContent()
end
function TemplateSkillCtrl:SetTalent(nRoguelikeTalentSkill)
self.nTipsType = TipsType.Talent
self.nTalentSkillId = nRoguelikeTalentSkill
self:_RefreshTalentContent()
end
function TemplateSkillCtrl:SetTalentSkill(nSkillLevel, nTalentSkillId, nTalentLevel)
local nCharId = math.floor(nTalentSkillId / 1000)
nSkillLevel = nSkillLevel or 0
self.nTipsType = TipsType.TalentSkill
self.nSkillId = CacheTable.GetData("_TalentSkillAI", nCharId)[nTalentSkillId].SpecialSkillId
self.nSkillLevel = nSkillLevel
self.nTalentSkillId = nTalentSkillId
self.nTalentLevel = nTalentLevel
self.nElementType = ConfigTable.GetData_Character(nCharId).EET
self:_RefreshSkillContent()
end
function TemplateSkillCtrl:SetMonsterSkill(nSkillId, nDiffLv)
self.nTipsType = TipsType.MonsterSkill
self.nSkillId = nSkillId
self:_RefreshMonsterContent(nDiffLv)
end
function TemplateSkillCtrl:SetTravelerDuelSkill(nSkillId)
self.nTipsType = TipsType.MonsterSkill
self.nSkillId = nSkillId
self:_RefreshTravelerDuelContent()
end
function TemplateSkillCtrl:_RefreshSkillContent()
self:SetAtlasSprite(self._mapNode.imgElementBg, "12_rare", AllEnum.ElementIconType.Skill .. self.nElementType)
self:SetPngSprite(self._mapNode.imgIcon, ConfigTable.GetData_Skill(self.nSkillId).Icon)
NovaAPI.SetTMPText(self._mapNode.txtName, ConfigTable.GetData_Skill(self.nSkillId).Title)
if self.nSkillLevel then
NovaAPI.SetTMPText(self._mapNode.txtLevel, self.nSkillLevel)
end
end
function TemplateSkillCtrl:_RefreshTalentContent()
local nRare = self.nTalentSkillId % 100 > 10 and GameEnum.itemRarity.SSR or GameEnum.itemRarity.SR
self:SetSprite_FrameColor(self._mapNode.imgElementBg, nRare, AllEnum.FrameType_New.Talent)
self:SetPngSprite(self._mapNode.imgIcon, self.nTalentSkillId)
NovaAPI.SetTMPText(self._mapNode.txtName, ConfigTable.GetData("RoguelikeTalentSkill", self.nTalentSkillId).Title)
end
function TemplateSkillCtrl:_RefreshMonsterContent(nDiffLv)
local isWeeklyCopies = PlayerData.RogueBoss:GetIsWeeklyCopies()
if isWeeklyCopies then
local mapSkill = ConfigTable.GetData("WeekBossAffix", self.nSkillId)
self:SetAtlasSprite(self._mapNode.imgElementBg, "12_rare", AllEnum.ElementIconType.Skill .. mapSkill.Element)
self:SetPngSprite(self._mapNode.imgIcon, mapSkill.Icon)
NovaAPI.SetTMPText(self._mapNode.txtName, mapSkill.name)
NovaAPI.SetTMPText(self._mapNode.txtLevel, mapSkill.Level)
else
local mapSkill = ConfigTable.GetData("RegionBossAffix", self.nSkillId)
self:SetAtlasSprite(self._mapNode.imgElementBg, "12_rare", AllEnum.ElementIconType.Skill .. mapSkill.Element)
self:SetPngSprite(self._mapNode.imgIcon, mapSkill.Icon)
NovaAPI.SetTMPText(self._mapNode.txtName, mapSkill.name)
NovaAPI.SetTMPText(self._mapNode.txtLevel, mapSkill.Level)
end
local goMask = self.gameObject.transform:Find("imgMask").gameObject
goMask:SetActive(nDiffLv and 0 < nDiffLv)
end
function TemplateSkillCtrl:_RefreshTravelerDuelContent()
local mapSkill = ConfigTable.GetData("TravelerDuelChallengeAffix", self.nSkillId)
self:SetAtlasSprite(self._mapNode.imgElementBg, "12_rare", AllEnum.ElementIconType.Skill .. mapSkill.Element)
self:SetPngSprite(self._mapNode.imgIcon, mapSkill.Icon)
NovaAPI.SetTMPText(self._mapNode.txtName, mapSkill.name)
NovaAPI.SetTMPText(self._mapNode.txtLevel, "")
local goMask = self.gameObject.transform:Find("imgMask").gameObject
goMask:SetActive(false)
end
function TemplateSkillCtrl:Awake()
self.nTipsType = TipsType.CharSkill
self.nSkillId = nil
self.nSkillLevel = nil
self.nTalentSkillId = nil
self.nTalentLevel = nil
self.nElementType = nil
NovaAPI.SetComponentEnableByName(self._mapNode.TopGridCanvas.gameObject, "TopGridCanvas", false)
end
function TemplateSkillCtrl:OnDestroy()
self.nSkillId = nil
self.nSkillLevel = nil
self.nTalentSkillId = nil
self.nTalentLevel = nil
self.nElementType = nil
end
function TemplateSkillCtrl:OnBtnClick_Skill(btn)
if self.nTipsType == TipsType.CharSkill then
EventManager.Hit(EventId.ShowCharacterSkillTips, self.nSkillId, self.nSkillLevel, self.nElementType, self._mapNode.rtSkill)
elseif self.nTipsType == TipsType.Talent then
EventManager.Hit(EventId.ShowCharacterTalentTips, self.nTalentSkillId, 0, GameEnum.itemRarity.SR, self._mapNode.rtSkill)
elseif self.nTipsType == TipsType.TalentSkill then
EventManager.Hit(EventId.ShowTalentSkillTips, self.nTalentSkillId, self.nSkillLevel, self.nElementType, self.nTalentLevel)
elseif self.nTipsType == TipsType.MonsterSkill then
EventManager.Hit(EventId.ShowMonsterSkillTips, self.nSkillId, self._mapNode.rtSkill)
end
end
return TemplateSkillCtrl