PGRData/Script/matrix/xui/xuibaseequip/XUiGridBaseEquip.lua

218 lines
6.8 KiB
Lua
Raw Normal View History

local pairs = pairs
local XUiGridBaseEquip = XClass(nil, "XUiGridBaseEquip")
function XUiGridBaseEquip:Ctor(ui)
self.GameObject = ui.gameObject
self.Transform = ui.transform
self:InitAutoScript()
self:ResetUi()
end
-- auto
-- Automatic generation of code, forbid to edit
function XUiGridBaseEquip:InitAutoScript()
self:AutoInitUi()
self.SpecialSoundMap = {}
self:AutoAddListener()
end
function XUiGridBaseEquip:AutoInitUi()
self.ImgSelect = XUiHelper.TryGetComponent(self.Transform, "ImgSelect", "Image")
self.RImgIcon = XUiHelper.TryGetComponent(self.Transform, "RImgIcon", "RawImage")
self.ImgQuality = XUiHelper.TryGetComponent(self.Transform, "ImgQuality", "Image")
self.TxtStar = XUiHelper.TryGetComponent(self.Transform, "TxtStar", "Text")
self.TxtName = XUiHelper.TryGetComponent(self.Transform, "TxtName", "Text")
self.PanelAttrib1 = XUiHelper.TryGetComponent(self.Transform, "PanelAttrib1", nil)
self.PanelAttrib2 = XUiHelper.TryGetComponent(self.Transform, "PanelAttrib2", nil)
self.ImgPutOn = XUiHelper.TryGetComponent(self.Transform, "ImgPutOn", "Image")
self.PanelRedPoint = XUiHelper.TryGetComponent(self.Transform, "PanelRedPoint", "Image")
self.ImgRecycle = XUiHelper.TryGetComponent(self.Transform, "ImgRecycle", nil)
self.ImgLevelLimit = XUiHelper.TryGetComponent(self.Transform, "ImgLevelLimit", "Image")
self.TxtLevelLimit = XUiHelper.TryGetComponent(self.Transform, "TxtLevelLimit", "Text")
self.TxtPart = XUiHelper.TryGetComponent(self.Transform, "TxtPart", "Text")
self.TxtDesc = XUiHelper.TryGetComponent(self.Transform, "TxtDesc", "Text")
end
function XUiGridBaseEquip:GetAutoKey(uiNode,eventName)
if not uiNode then return end
return eventName .. uiNode:GetHashCode()
end
function XUiGridBaseEquip:RegisterListener(uiNode, eventName, func)
local key = self:GetAutoKey(uiNode, eventName)
if not key then return end
local listener = self.AutoCreateListeners[key]
if listener ~= nil then
uiNode[eventName]:RemoveListener(listener)
end
if func ~= nil then
if type(func) ~= "function" then
XLog.Error("XUiGridBaseEquip:RegisterListener函数错误, 参数func需要是function类型, func的类型是" .. type(func))
end
listener = function(...)
XSoundManager.PlayBtnMusic(self.SpecialSoundMap[key],eventName)
func(self, ...)
end
uiNode[eventName]:AddListener(listener)
self.AutoCreateListeners[key] = listener
end
end
function XUiGridBaseEquip:AutoAddListener()
self.AutoCreateListeners = {}
end
-- auto
function XUiGridBaseEquip:SetUiActive(ui, active)
if not ui or not ui.gameObject then
return
end
if ui.gameObject.activeSelf == active then
return
end
ui.gameObject:SetActive(active)
end
function XUiGridBaseEquip:ResetUi()
self:SetUiActive(self.PanelAttrib1, false)
self:SetUiActive(self.PanelAttrib2, false)
self:SetUiActive(self.ImgSelect, false)
self:SetUiActive(self.PanelRedPoint, false)
self:SetUiActive(self.ImgPutOn, false)
end
function XUiGridBaseEquip:ShowPanelArrtib(panel, attribInfo)
if not panel or not attribInfo then
return
end
self:SetUiActive(XUiHelper.TryGetComponent(panel, "TxtNotEvaluated", "Text"), false)
local txtName = XUiHelper.TryGetComponent(panel, "TxtAttribName", "Text")
if txtName then
txtName.text = attribInfo.Name
self:SetUiActive(txtName, true)
end
local txtValue = XUiHelper.TryGetComponent(panel, "TxtAttribValue", "Text")
if txtValue then
txtValue.text = attribInfo.Value
self:SetUiActive(txtValue, true)
end
self:SetUiActive(panel, true)
end
function XUiGridBaseEquip:ShowEvaluated(id)
local info = XDataCenter.BaseEquipManager.GetEvaluatedAttribShowInfo(id)
if not info then
return
end
local attriDescList = info.AttriDescList
if attriDescList then
local index = 1
for _, descInfo in pairs(attriDescList) do
local panelAttrib = self["PanelAttrib" .. index]
if not panelAttrib then
return
end
self:ShowPanelArrtib(panelAttrib, descInfo)
index = index + 1
end
end
end
function XUiGridBaseEquip:Init(rootUi, parent)
self.RootUi = rootUi
self.Parent = parent
end
function XUiGridBaseEquip:Refresh(baseEquip)
if not baseEquip then
self.GameObject:SetActive(false)
return
end
local templateId = baseEquip.TemplateId
self:ShowEvaluated(baseEquip.Id)
local template = XDataCenter.BaseEquipManager.GetBaseEquipTemplate(templateId)
if not template then
return
end
if self.RImgIcon and template.Icon then
self.RImgIcon:SetRawImage(template.Icon)
self:SetUiActive(self.RImgIcon, true)
end
if self.ImgQuality and template.Quality then
self.RootUi:SetUiSprite(self.ImgQuality, XArrangeConfigs.GeQualityBgPath(template.Quality))
self:SetUiActive(self.ImgQuality, true)
end
if self.TxtStar and template.Star then
self.TxtStar.text = template.Star
self:SetUiActive(self.TxtStar, true)
end
if self.TxtName and template.Name then
self.TxtName.text = template.Name
self:SetUiActive(self.TxtName, true)
end
if self.ImgLevelLimit and self.TxtLevelLimit then
if template.Level > XPlayer.Level then
self.TxtLevelLimit.text = CS.XTextManager.GetText("BaseEquipNeedLevel", template.Level)
self:SetUiActive(self.ImgLevelLimit, true)
self:SetUiActive(self.TxtLevelLimit, true)
else
self:SetUiActive(self.ImgLevelLimit, false)
self:SetUiActive(self.TxtLevelLimit, false)
end
end
if self.TxtPart and self.TxtDesc then
self.TxtPart.text = template.Part
local curType = math.ceil(template.Part /2)
self.TxtDesc.text = CS.XTextManager.GetText("BaseEquipType" .. curType)
self:SetUiActive(self.TxtPart, true)
end
if XDataCenter.BaseEquipManager.CheckNewHint(baseEquip.Id) then
self:SetUiActive(self.PanelRedPoint, true)
XDataCenter.BaseEquipManager.AddNewHint(baseEquip.Id)
else
self:SetUiActive(self.PanelRedPoint, false)
end
if self.Parent:CheckRecycle(baseEquip.Id) then
self:SetRecycle(true)
else
self:SetRecycle(false)
end
self:SetPutOn(XDataCenter.BaseEquipManager.IsBaseEquipPutOn(baseEquip.Id))
self.GameObject:SetActive(true)
end
function XUiGridBaseEquip:SetSelect(isSelect)
self:SetUiActive(self.ImgSelect, isSelect)
end
function XUiGridBaseEquip:SetRecycle(isSelect)
self:SetUiActive(self.ImgRecycle, isSelect)
end
function XUiGridBaseEquip:SetPutOn(isPutOn)
self:SetUiActive(self.ImgPutOn, isPutOn)
end
return XUiGridBaseEquip