PGRData/Script/matrix/xui/xuiequipresonanceselect/XUiEquipResonanceSelectEquip.lua
2024-09-01 22:49:41 +02:00

101 lines
3.3 KiB
Lua

local XUiGridEquip = require("XUi/XUiEquipAwarenessReplace/XUiGridEquip")
local XUiEquipResonanceSelectEquip = XLuaUiManager.Register(XLuaUi, "UiEquipResonanceSelectEquip")
function XUiEquipResonanceSelectEquip:OnAwake()
self:InitAutoScript()
end
function XUiEquipResonanceSelectEquip:OnStart(equipId, confirmCb)
self.EquipId = equipId
self.ConfirmCb = confirmCb
self.LastSelectId = nil
self.SelectEquipId = nil
self:InitDynamicTable()
end
function XUiEquipResonanceSelectEquip:OnEnable(equipId)
self.EquipId = equipId or self.EquipId
self.EquipIdList = XDataCenter.EquipManager.GetResonanceCanEatEquipIds(self.EquipId)
XTool.ReverseList(self.EquipIdList) --这个UI要初始升序
self:UpdateEquipGridList()
end
function XUiEquipResonanceSelectEquip:Reset()
self.LastSelectId = nil
self.SelectEquipId = nil
end
function XUiEquipResonanceSelectEquip:InitDynamicTable()
self.DynamicTable = XDynamicTableNormal.New(self.PanelEquipScroll)
self.DynamicTable:SetDelegate(self)
self.DynamicTable:SetProxy(XUiGridEquip, self)
end
function XUiEquipResonanceSelectEquip:UpdateEquipGridList()
self.DynamicTable:SetDataSource(self.EquipIdList)
self.DynamicTable:ReloadDataASync(#self.EquipIdList > 0 and 1 or -1)
if not self.EquipIdList or not next(self.EquipIdList) then
if XDataCenter.EquipManager.IsClassifyEqual(self.EquipId, XEquipConfig.Classify.Weapon) then
self.TxtNoEquip.text = CS.XTextManager.GetText("EquipResonanceNoWeaponTip")
else
self.TxtNoEquip.text = CS.XTextManager.GetText("EquipResonanceNoAwarenessTip")
end
self.PanelNoEquip.gameObject:SetActive(true)
else
self.PanelNoEquip.gameObject:SetActive(false)
end
end
function XUiEquipResonanceSelectEquip:OnDynamicTableEvent(event, index, grid)
if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_INIT then
grid:InitRootUi(self)
grid:SetSelected(false)
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
local equipId = self.EquipIdList[index]
grid:Refresh(equipId)
local isSelected = self.LastSelectId and self.LastSelectId == equipId
if isSelected then
self.LastSelectGrid = grid
end
grid:SetSelected(isSelected)
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_TOUCHED then
local equipId = self.EquipIdList[index]
if self.LastSelectGrid then
self.LastSelectGrid:SetSelected(false)
end
self.SelectEquipId = equipId
self.LastSelectGrid = grid
self.LastSelectGrid:SetSelected(true)
end
end
-- auto
-- Automatic generation of code, forbid to edit
function XUiEquipResonanceSelectEquip:InitAutoScript()
self:AutoAddListener()
end
function XUiEquipResonanceSelectEquip:AutoAddListener()
self:RegisterClickEvent(self.BtnConfirm, self.OnBtnConfirmClick)
self:RegisterClickEvent(self.BtnClose, self.OnBtnCloseClick)
self:RegisterClickEvent(self.Btncancel, self.OnBtnCloseClick)
end
-- auto
function XUiEquipResonanceSelectEquip:OnBtnCloseClick()
self:Close()
end
function XUiEquipResonanceSelectEquip:OnBtnConfirmClick()
local equipId = self.SelectEquipId
if self.ConfirmCb and equipId then
self.ConfirmCb(equipId)
self.LastSelectId = equipId
end
self:Close()
end