PGRData/Script/matrix/xui/xuipartner/partnerpreset/uipartnerskill/XUiGridPresetSkill.lua

118 lines
No EOL
4 KiB
Lua

--==============================
---@desc 辅助机预设 -- 技能格子
--==============================
local XUiGridPresetSkill = XClass(nil, "XUiGridPresetSkill")
local Type2Func = {
[XPartnerConfigs.SkillType.MainSkill] = function(partner, partnerPrefab)
XLuaUiManager.Open("UiPartnerPresetMainSkill", partner, partnerPrefab)
end,
[XPartnerConfigs.SkillType.PassiveSkill] = function(partner, partnerPrefab)
XLuaUiManager.Open("UiPartnerPresetPassiveSkill", partner, partnerPrefab)
end
}
function XUiGridPresetSkill:Ctor(ui)
XTool.InitUiObjectByUi(self, ui)
self:InitUi()
self:AddListener()
end
function XUiGridPresetSkill:InitUi()
self.TxtMainLevel = self.PanelMainSkill:GetObject("TxtLevel")
self.TxtPassiveLevel = self.PanelPassiveSkill:GetObject("TxtLevel")
self.RImgMainSkillIcon = self.PanelMainSkill:GetObject("IconSkill")
self.RImgPassiveSkillIcon = self.PanelPassiveSkill:GetObject("IconSkill")
self.RawElement = self.Tag:GetObject("RawElement")
end
function XUiGridPresetSkill:AddListener()
self.BtnSkill.CallBack = function()
self:OnBtnSkillClick()
end
end
function XUiGridPresetSkill:OnBtnSkillClick()
if self.Locked then
XUiManager.TipMsg(XUiHelper.GetText("PartnerSkillFieldIsLock", XPartnerConfigs.QualityString[self.UnlockQuality]))
return
end
local func = Type2Func[self.Type]
if func then
func(self.Partner, self.PartnerPrefab)
end
end
--==============================
---@desc 刷新技能显示状态
---@skillGroup @class XPartnerSkillGroupBase
---@partner 辅助机 @class XPartner
---@lock 锁定 @boolean
---@type -技能类型
---@unlockQuality 对应的进化阶段
--==============================
function XUiGridPresetSkill:Refresh(skillGroup, partner, lock, type, unlockQuality, partnerPrefab)
self.Partner = partner
self.Locked = lock
self.Type = type
self.UnlockQuality = unlockQuality
self.PartnerPrefab = partnerPrefab
local partnerId = partner:GetId()
self.IsCarry = partnerPrefab:GetIsCarry(partnerId)
local hasData = not XTool.IsTableEmpty(skillGroup)
if hasData then
local chrId = partnerPrefab:GetCharacterId(partnerId)
local activeSkillId = XDataCenter.PartnerManager.SwitchMainActiveSkillId(skillGroup, chrId)
local icon = skillGroup:GetSkillIcon(activeSkillId)
local level = skillGroup:GetLevelStr()
local txtLevel, skillIcon
if self:IsMainSkill() then
txtLevel, skillIcon = self.TxtMainLevel, self.RImgMainSkillIcon
else
txtLevel, skillIcon = self.TxtPassiveLevel, self.RImgPassiveSkillIcon
end
txtLevel.text = level
skillIcon:SetRawImage(icon)
if partner and self.IsCarry then
local charElement = XCharacterConfigs.GetCharacterElement(chrId)
local elementConfig = XCharacterConfigs.GetCharElement(charElement)
self.RawElement:SetRawImage(elementConfig.Icon2)
self.RawElement.gameObject:SetActiveEx(true)
else
self.RawElement.gameObject:SetActiveEx(false)
end
self.PanelNoSkill.gameObject:SetActiveEx(false)
self.PanelMainSkill.gameObject:SetActiveEx(self:IsMainSkill())
self.PanelPassiveSkill.gameObject:SetActiveEx(self:IsPassiveSkill())
self.PanelLock.gameObject:SetActiveEx(false)
self.Tag.gameObject:SetActiveEx(self:IsMainSkill())
else
self.PanelNoSkill.gameObject:SetActiveEx(not lock)
self.PanelMainSkill.gameObject:SetActiveEx(false)
self.PanelPassiveSkill.gameObject:SetActiveEx(false)
self.PanelLock.gameObject:SetActiveEx(lock)
self.Tag.gameObject:SetActiveEx(false)
end
end
function XUiGridPresetSkill:IsMainSkill()
return self.Type == XPartnerConfigs.SkillType.MainSkill
end
function XUiGridPresetSkill:IsPassiveSkill()
return self.Type == XPartnerConfigs.SkillType.PassiveSkill
end
return XUiGridPresetSkill