218 lines
6.8 KiB
Lua
218 lines
6.8 KiB
Lua
|
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
|