2023-07-14 19:35:33 +00:00
|
|
|
|
local PanelUsingWords = CS.XTextManager.GetText("EquipGridUsingWords")
|
|
|
|
|
local PanelInPrefabWords = CS.XTextManager.GetText("EquipGridInPrefabWords")
|
|
|
|
|
local PanelSelectedWords = CS.XTextManager.GetText("MentorGiftIsSelectedText")
|
2024-09-01 20:49:41 +00:00
|
|
|
|
local XUiGridEquip = XClass(XUiNode, "XUiGridEquip")
|
2023-07-14 19:35:33 +00:00
|
|
|
|
|
2024-09-01 20:49:41 +00:00
|
|
|
|
-- 如需注册事件在界面里注册,后续会优化删掉XUiGridEquip事件的注册
|
|
|
|
|
function XUiGridEquip:OnStart(clickCb, isNeedEvent)
|
2023-07-14 19:35:33 +00:00
|
|
|
|
self.ClickCb = clickCb
|
2024-09-01 20:49:41 +00:00
|
|
|
|
self.IsNeedEvent = isNeedEvent
|
2023-07-14 19:35:33 +00:00
|
|
|
|
self:InitAutoScript()
|
|
|
|
|
self:SetSelected(false)
|
|
|
|
|
|
2024-09-01 20:49:41 +00:00
|
|
|
|
if self.IsNeedEvent then
|
|
|
|
|
XEventManager.AddEventListener(XEventId.EVENT_EQUIP_PUTON_NOTYFY, self.UpdateUsing, self)
|
|
|
|
|
XEventManager.AddEventListener(XEventId.EVENT_EQUIP_TAKEOFF_NOTYFY, self.UpdateUsing, self)
|
|
|
|
|
XEventManager.AddEventListener(XEventId.EVENT_EQUIP_LOCK_STATUS_CHANGE_NOTYFY, self.UpdateIsLock, self)
|
|
|
|
|
XEventManager.AddEventListener(XEventId.EVENT_EQUIP_RECYCLE_STATUS_CHANGE_NOTYFY, self.UpdateIsRecycle, self)
|
|
|
|
|
XEventManager.AddEventListener(XEventId.EVENT_EQUIP_BREAKTHROUGH_NOTYFY, self.UpdateBreakthrough, self)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XUiGridEquip:OnRelease()
|
|
|
|
|
if self.IsNeedEvent then
|
|
|
|
|
XEventManager.RemoveEventListener(XEventId.EVENT_EQUIP_PUTON_NOTYFY, self.UpdateUsing, self)
|
|
|
|
|
XEventManager.RemoveEventListener(XEventId.EVENT_EQUIP_TAKEOFF_NOTYFY, self.UpdateUsing, self)
|
|
|
|
|
XEventManager.RemoveEventListener(XEventId.EVENT_EQUIP_LOCK_STATUS_CHANGE_NOTYFY, self.UpdateIsLock, self)
|
|
|
|
|
XEventManager.RemoveEventListener(XEventId.EVENT_EQUIP_RECYCLE_STATUS_CHANGE_NOTYFY, self.UpdateIsRecycle, self)
|
|
|
|
|
XEventManager.RemoveEventListener(XEventId.EVENT_EQUIP_BREAKTHROUGH_NOTYFY, self.UpdateBreakthrough, self)
|
|
|
|
|
end
|
2023-07-14 19:35:33 +00:00
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XUiGridEquip:InitRootUi(rootUi)
|
2024-09-01 20:49:41 +00:00
|
|
|
|
self.Parent = rootUi
|
2023-07-14 19:35:33 +00:00
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XUiGridEquip:Refresh(equipId,idList)
|
|
|
|
|
self.EquipId = equipId
|
|
|
|
|
local equip = XDataCenter.EquipManager.GetEquip(equipId)
|
|
|
|
|
if not equip then
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local templateId = equip.TemplateId
|
|
|
|
|
|
|
|
|
|
if self.RImgIcon and self.RImgIcon:Exist() then
|
|
|
|
|
self.RImgIcon:SetRawImage(XDataCenter.EquipManager.GetEquipIconBagPath(templateId, equip.Breakthrough), nil, true)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
--通用的横条品质色
|
|
|
|
|
if self.ImgQuality then
|
2024-09-01 20:49:41 +00:00
|
|
|
|
local qualityPath = equip:GetEquipQualityPath()
|
|
|
|
|
self.Parent:SetUiSprite(self.ImgQuality, qualityPath)
|
|
|
|
|
|
|
|
|
|
if self.ImgQualityEffect then
|
|
|
|
|
local effectPath = equip:GetEquipQualityEffectPath()
|
|
|
|
|
self.ImgQualityEffect.gameObject:SetActiveEx(effectPath ~= nil)
|
|
|
|
|
if effectPath then
|
|
|
|
|
self.ImgQualityEffect.gameObject:LoadUiEffect(effectPath)
|
|
|
|
|
end
|
|
|
|
|
end
|
2023-07-14 19:35:33 +00:00
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
--装备专用的竖条品质色
|
|
|
|
|
if self.ImgEquipQuality then
|
2024-09-01 20:49:41 +00:00
|
|
|
|
local bgPath = equip:GetEquipBgPath()
|
|
|
|
|
self.Parent:SetUiSprite(self.ImgEquipQuality, bgPath)
|
|
|
|
|
|
|
|
|
|
if self.ImgEquipQualityEffect then
|
|
|
|
|
local effectPath = equip:GetEquipBgEffectPath()
|
|
|
|
|
self.ImgEquipQualityEffect.gameObject:SetActiveEx(effectPath ~= nil)
|
|
|
|
|
if effectPath then
|
|
|
|
|
self.ImgEquipQualityEffect.gameObject:LoadUiEffect(effectPath)
|
|
|
|
|
end
|
|
|
|
|
end
|
2023-07-14 19:35:33 +00:00
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
if self.TxtName then
|
|
|
|
|
self.TxtName.text = XDataCenter.EquipManager.GetEquipName(templateId)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
if self.TxtLevel then
|
|
|
|
|
self.TxtLevel.text = equip.Level
|
|
|
|
|
end
|
|
|
|
|
|
2024-09-01 20:49:41 +00:00
|
|
|
|
-- 公约驻守激活橙色边框
|
|
|
|
|
local equipSite = XDataCenter.EquipManager.GetEquipSite(equipId)
|
|
|
|
|
local isActiveAwarenessOcuupy = XTool.IsNumberValid(equipSite) and XDataCenter.FubenAwarenessManager.GetChapterDataBySiteNum(equipSite):IsOccupy()
|
|
|
|
|
if self.ImgFrame then
|
|
|
|
|
self.ImgFrame.gameObject:SetActiveEx(isActiveAwarenessOcuupy)
|
|
|
|
|
end
|
|
|
|
|
|
2023-07-14 19:35:33 +00:00
|
|
|
|
if self.PanelSite and self.TxtSite then
|
|
|
|
|
local equipSite = XDataCenter.EquipManager.GetEquipSite(equipId)
|
|
|
|
|
if equipSite and equipSite ~= XEquipConfig.EquipSite.Weapon then
|
|
|
|
|
self.TxtSite.text = "0" .. equipSite
|
|
|
|
|
self.PanelSite.gameObject:SetActiveEx(true)
|
|
|
|
|
else
|
|
|
|
|
self.PanelSite.gameObject:SetActiveEx(false)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
for i = 1, XEquipConfig.MAX_STAR_COUNT do
|
|
|
|
|
if self["ImgGirdStar" .. i] then
|
|
|
|
|
if i <= XDataCenter.EquipManager.GetEquipStar(templateId) then
|
|
|
|
|
self["ImgGirdStar" .. i].transform.parent.gameObject:SetActiveEx(true)
|
|
|
|
|
else
|
|
|
|
|
self["ImgGirdStar" .. i].transform.parent.gameObject:SetActiveEx(false)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
for i = 1, XEquipConfig.MAX_RESONANCE_SKILL_COUNT do
|
|
|
|
|
local obj = self["ImgResonance" .. i]
|
|
|
|
|
if obj then
|
|
|
|
|
if XDataCenter.EquipManager.CheckEquipPosResonanced(equipId, i) then
|
2024-09-01 20:49:41 +00:00
|
|
|
|
-- 公约驻守+超频激活橙色标签
|
|
|
|
|
local awaken = XDataCenter.EquipManager.IsEquipPosAwaken(equipId, i)
|
|
|
|
|
local icon = XEquipConfig.GetEquipResoanceIconPath(awaken)
|
|
|
|
|
local bindCharId = XDataCenter.EquipManager.GetResonanceBindCharacterId(equipId, i)
|
|
|
|
|
local characterId = XDataCenter.EquipManager.GetEquipWearingCharacterId(equipId)
|
|
|
|
|
if isActiveAwarenessOcuupy and awaken and bindCharId == characterId then
|
|
|
|
|
icon = CS.XGame.ClientConfig:GetString("AwarenessOcuupyActiveResonanced")
|
|
|
|
|
end
|
|
|
|
|
self.Parent:SetUiSprite(obj, icon)
|
2023-07-14 19:35:33 +00:00
|
|
|
|
obj.gameObject:SetActiveEx(true)
|
|
|
|
|
else
|
|
|
|
|
obj.gameObject:SetActiveEx(false)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
self:UpdateIsLock(equipId)
|
|
|
|
|
self:UpdateIsRecycle(equipId)
|
|
|
|
|
self:UpdateUsing(equipId,idList)
|
|
|
|
|
self:UpdateBreakthrough(equipId)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XUiGridEquip:SetSelected(status)
|
|
|
|
|
if XTool.UObjIsNil(self.ImgSelect) then
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
self.ImgSelect.gameObject:SetActiveEx(status)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XUiGridEquip:IsSelected()
|
|
|
|
|
return not XTool.UObjIsNil(self.ImgSelect) and self.ImgSelect.gameObject.activeSelf
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XUiGridEquip:UpdateUsing(equipId,idList)
|
|
|
|
|
if equipId ~= self.EquipId then return end
|
|
|
|
|
if XTool.UObjIsNil(self.PanelUsing) then return end
|
|
|
|
|
|
|
|
|
|
--v1.28 装备头像
|
|
|
|
|
if XDataCenter.EquipManager.IsWearing(equipId) then
|
|
|
|
|
if not XTool.UObjIsNil(self.TxtUsingOrInSuitPrefab) then
|
|
|
|
|
self.TxtUsingOrInSuitPrefab.text = PanelUsingWords
|
|
|
|
|
end
|
|
|
|
|
self.PanelUsing.gameObject:SetActiveEx(true)
|
|
|
|
|
if not XTool.UObjIsNil(self.PanelDefault) then self.PanelDefault.gameObject:SetActiveEx(false) end
|
|
|
|
|
if not XTool.UObjIsNil(self.RImgRole) then
|
|
|
|
|
local characterId = XDataCenter.EquipManager.GetEquipWearingCharacterId(equipId)
|
|
|
|
|
local icon = XDataCenter.CharacterManager.GetCharBigRoundnessNotItemHeadIcon(characterId)
|
|
|
|
|
self.RImgRole:SetRawImage(icon)
|
|
|
|
|
end
|
|
|
|
|
elseif XDataCenter.EquipManager.IsInSuitPrefab(equipId)
|
|
|
|
|
and not XTool.UObjIsNil(self.TxtUsingOrInSuitPrefab) then
|
|
|
|
|
if not XTool.UObjIsNil(self.TextInPrefab) then
|
|
|
|
|
self.PanelUsing.gameObject:SetActiveEx(false)
|
|
|
|
|
self.PanelDefault.gameObject:SetActiveEx(true)
|
|
|
|
|
self.TextInPrefab.text = PanelInPrefabWords
|
|
|
|
|
else
|
|
|
|
|
self.PanelUsing.gameObject:SetActiveEx(true)
|
|
|
|
|
self.TxtUsingOrInSuitPrefab.text = PanelInPrefabWords
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
self.PanelUsing.gameObject:SetActiveEx(false)
|
|
|
|
|
if not XTool.UObjIsNil(self.PanelDefault) then self.PanelDefault.gameObject:SetActiveEx(false) end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
if idList then
|
|
|
|
|
for _,id in pairs(idList) do
|
|
|
|
|
if equipId == id then
|
|
|
|
|
if not XTool.UObjIsNil(self.TxtUsingOrInSuitPrefab) then
|
|
|
|
|
self.TxtUsingOrInSuitPrefab.text = PanelSelectedWords
|
|
|
|
|
end
|
|
|
|
|
self.PanelUsing.gameObject:SetActiveEx(true)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XUiGridEquip:UpdateIsLock(equipId)
|
|
|
|
|
if equipId ~= self.EquipId then
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
if XTool.UObjIsNil(self.ImgLock) then
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
self.ImgLock.gameObject:SetActiveEx(XDataCenter.EquipManager.IsLock(self.EquipId))
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XUiGridEquip:UpdateIsRecycle(equipId)
|
|
|
|
|
if equipId ~= self.EquipId then
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
if XTool.UObjIsNil(self.ImgLaJi) then
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
self.ImgLaJi.gameObject:SetActiveEx(XDataCenter.EquipManager.IsRecycle(self.EquipId))
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XUiGridEquip:UpdateBreakthrough(equipId)
|
|
|
|
|
if equipId ~= self.EquipId then
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
if XTool.UObjIsNil(self.ImgBreakthrough) then
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local icon = XDataCenter.EquipManager.GetEquipBreakThroughSmallIcon(self.EquipId)
|
|
|
|
|
if icon then
|
2024-09-01 20:49:41 +00:00
|
|
|
|
self.Parent:SetUiSprite(self.ImgBreakthrough, icon)
|
2023-07-14 19:35:33 +00:00
|
|
|
|
self.ImgBreakthrough.gameObject:SetActiveEx(true)
|
|
|
|
|
else
|
|
|
|
|
self.ImgBreakthrough.gameObject:SetActiveEx(false)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XUiGridEquip:InitAutoScript()
|
|
|
|
|
XTool.InitUiObject(self)
|
|
|
|
|
if not XTool.UObjIsNil(self.PanelUsing) then
|
|
|
|
|
local textGo = self.PanelUsing:Find("TextUsing")
|
|
|
|
|
self.TxtUsingOrInSuitPrefab = textGo and textGo:GetComponent("Text")
|
|
|
|
|
--v1.28 装备头像
|
|
|
|
|
self.RImgRole = self.PanelUsing.transform:Find("RImgRole"):GetComponent("RawImage")
|
|
|
|
|
self.PanelDefault = self.GameObject.transform:Find("GridEquipRectangle/PanelDefault") or nil
|
|
|
|
|
self.TextInPrefab = not XTool.UObjIsNil(self.PanelDefault) and self.PanelDefault.transform:Find("TextUsing"):GetComponent("Text") or nil
|
|
|
|
|
end
|
2024-09-01 20:49:41 +00:00
|
|
|
|
if self.BtnClick and self.ClickCb then
|
|
|
|
|
CsXUiHelper.RegisterClickEvent(self.BtnClick, function() self:OnBtnClickClick() end)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
--v2.5 品质特效
|
|
|
|
|
if self.ImgQuality then
|
|
|
|
|
self.ImgQualityEffect = XUiHelper.TryGetComponent(self.ImgQuality.transform, "ImgQualityEffect")
|
|
|
|
|
end
|
|
|
|
|
if self.ImgEquipQuality then
|
|
|
|
|
self.ImgEquipQualityEffect = XUiHelper.TryGetComponent(self.ImgEquipQuality.transform, "ImgEquipQualityEffect")
|
|
|
|
|
end
|
2023-07-14 19:35:33 +00:00
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XUiGridEquip:OnBtnClickClick()
|
|
|
|
|
if self.ClickCb then
|
|
|
|
|
self.ClickCb(self.EquipId, self)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
return XUiGridEquip
|