379 lines
No EOL
13 KiB
Lua
379 lines
No EOL
13 KiB
Lua
local XUiGridBaseEquip = require("XUi/XUiBaseEquip/XUiGridBaseEquip")
|
||
local XUiPanelPutOnShowTip = require("XUi/XUiBaseEquip/XUiPanelPutOnShowTip")
|
||
local XUiBaseEquipInfo = require("XUi/XUiBaseEquip/XUiPanelBaseEquipInfo")
|
||
local XUiPanelBaseEquipRecycle = require("XUi/XUiBaseEquip/XUiPanelBaseEquipRecycle")
|
||
local XUiPanelBaseEquipPutOn = XClass(nil, "XUiPanelBaseEquipPutOn")
|
||
|
||
function XUiPanelBaseEquipPutOn:Ctor(ui, parent)
|
||
self.GameObject = ui.gameObject
|
||
self.Transform = ui.transform
|
||
self.Parent = parent
|
||
self:InitAutoScript()
|
||
|
||
self.PutOnTipPanel = XUiPanelPutOnShowTip.New(self.PanelPutOnShowTip)
|
||
self.RecyclePanel = XUiPanelBaseEquipRecycle.New(self.PanelBaseEquipRecycle, self, self.Parent)
|
||
self.BaseEquipInfoPanel = XUiBaseEquipInfo.New(self.PanelBaseEquipInfo, self.Parent)
|
||
self.SelectedGrid = XUiGridBaseEquip.New(self.GridBaseEquipSelected, self.RecyclePanel)
|
||
self.SelectedGrid:Init(self.Parent, self)
|
||
self.RecycleEquipList = {}
|
||
|
||
self:AddCoinListener()
|
||
self:ResetUi()
|
||
self:InitDynamicTable()
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:ResetUi()
|
||
self.BtnPutOn.gameObject:SetActive(false)
|
||
self.GridBaseEquipSelected.gameObject:SetActive(false)
|
||
self.PanelBaseEquipList.gameObject:SetActive(true)
|
||
self.PutOnTipPanel:HidePanel()
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:InitDynamicTable()
|
||
self.DynamicTable = XDynamicTableNormal.New(self.PanelBaseEquipView.gameObject)
|
||
self.DynamicTable:SetProxy(XUiGridBaseEquip)
|
||
self.DynamicTable:SetDelegate(self)
|
||
end
|
||
|
||
-- auto
|
||
-- Automatic generation of code, forbid to edit
|
||
function XUiPanelBaseEquipPutOn:InitAutoScript()
|
||
self:AutoInitUi()
|
||
self:AutoAddListener()
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:AutoInitUi()
|
||
self.PanelPart = self.Transform:Find("PanelPart")
|
||
self.GridBaseEquipSelected = self.Transform:Find("PanelPart/GridBaseEquipSelected")
|
||
self.PanelEmpty = self.Transform:Find("PanelPart/PanelEmpty")
|
||
self.TxtPart = self.Transform:Find("PanelPart/PanelEmpty/TxtPart"):GetComponent("Text")
|
||
self.TxtDesc = self.Transform:Find("PanelPart/PanelEmpty/TxtDesc"):GetComponent("Text")
|
||
self.BtnEquipInfo = self.Transform:Find("PanelPart/BtnEquipInfo"):GetComponent("Button")
|
||
self.PanelTogglePos = self.Transform:Find("PanelTogglePos")
|
||
self.Toggle1 = self.Transform:Find("PanelTogglePos/Toggle1"):GetComponent("Toggle")
|
||
self.ImgNew1 = self.Transform:Find("PanelTogglePos/Toggle1/ImgNew1"):GetComponent("Image")
|
||
self.Toggle2 = self.Transform:Find("PanelTogglePos/Toggle2"):GetComponent("Toggle")
|
||
self.ImgNew2 = self.Transform:Find("PanelTogglePos/Toggle2/ImgNew2"):GetComponent("Image")
|
||
self.Toggle3 = self.Transform:Find("PanelTogglePos/Toggle3"):GetComponent("Toggle")
|
||
self.ImgNew3 = self.Transform:Find("PanelTogglePos/Toggle3/ImgNew3"):GetComponent("Image")
|
||
self.Toggle4 = self.Transform:Find("PanelTogglePos/Toggle4"):GetComponent("Toggle")
|
||
self.ImgNew4 = self.Transform:Find("PanelTogglePos/Toggle4/ImgNew4"):GetComponent("Image")
|
||
self.Toggle5 = self.Transform:Find("PanelTogglePos/Toggle5"):GetComponent("Toggle")
|
||
self.ImgNew5 = self.Transform:Find("PanelTogglePos/Toggle5/ImgNew5"):GetComponent("Image")
|
||
self.Toggle6 = self.Transform:Find("PanelTogglePos/Toggle6"):GetComponent("Toggle")
|
||
self.ImgNew6 = self.Transform:Find("PanelTogglePos/Toggle6/ImgNew6"):GetComponent("Image")
|
||
self.PanelBaseEquipList = self.Transform:Find("PanelBaseEquipList")
|
||
self.PanelBaseEquipView = self.Transform:Find("PanelBaseEquipList/PanelBaseEquipView")
|
||
self.PanelBaseEquipRecycle = self.Transform:Find("PanelBaseEquipRecycle")
|
||
self.BtnPutOn = self.Transform:Find("BtnPutOn"):GetComponent("Button")
|
||
self.TxtEmptyTip = self.Transform:Find("TxtEmptyTip"):GetComponent("Text")
|
||
self.TxtCapacity = self.Transform:Find("TxtCapacity"):GetComponent("Text")
|
||
self.TxtCoinNum = self.Transform:Find("TxtCoinNum"):GetComponent("Text")
|
||
self.PanelPutOnShowTip = self.Transform:Find("PanelPutOnShowTip")
|
||
self.BtnRecycle = self.Transform:Find("BtnRecycle"):GetComponent("Button")
|
||
self.PanelBaseEquipInfo = self.Transform:Find("PanelBaseEquipInfo")
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:RegisterClickEvent(uiNode, func)
|
||
if func == nil then
|
||
XLog.Error("XUiPanelBaseEquipPutOn:RegisterClickEvent函数参数错误:参数func不能为空")
|
||
return
|
||
end
|
||
|
||
if type(func) ~= "function" then
|
||
XLog.Error("XUiPanelBaseEquipPutOn:RegisterClickEvent函数错误, 参数func需要是function类型, func的类型是" .. type(func))
|
||
end
|
||
|
||
local listener = function(...)
|
||
func(self, ...)
|
||
end
|
||
|
||
CsXUiHelper.RegisterClickEvent(uiNode, listener)
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:AutoAddListener()
|
||
self:RegisterClickEvent(self.BtnEquipInfo, self.OnBtnEquipInfoClick)
|
||
self:RegisterClickEvent(self.Toggle1, self.OnToggle1Click)
|
||
self:RegisterClickEvent(self.Toggle2, self.OnToggle2Click)
|
||
self:RegisterClickEvent(self.Toggle3, self.OnToggle3Click)
|
||
self:RegisterClickEvent(self.Toggle4, self.OnToggle4Click)
|
||
self:RegisterClickEvent(self.Toggle5, self.OnToggle5Click)
|
||
self:RegisterClickEvent(self.Toggle6, self.OnToggle6Click)
|
||
self:RegisterClickEvent(self.BtnPutOn, self.OnBtnPutOnClick)
|
||
self:RegisterClickEvent(self.BtnRecycle, self.OnBtnRecycleClick)
|
||
end
|
||
-- auto
|
||
function XUiPanelBaseEquipPutOn:OnBtnEquipInfoClick()
|
||
if not self.CurIndex then
|
||
return
|
||
end
|
||
|
||
local baseEquip = XDataCenter.BaseEquipManager.GetBaseEquipByPart(self.CurPart)
|
||
if not baseEquip then
|
||
return
|
||
end
|
||
self.BaseEquipInfoPanel:ShowPanel(baseEquip)
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:OnBtnRecycleClick()
|
||
self:ShowRecyclePanel()
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:OnToggle1Click()
|
||
self:ShowPanel(1)
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:OnToggle2Click()
|
||
self:ShowPanel(2)
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:OnToggle3Click()
|
||
self:ShowPanel(3)
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:OnToggle4Click()
|
||
self:ShowPanel(4)
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:OnToggle5Click()
|
||
self:ShowPanel(5)
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:OnToggle6Click()
|
||
self:ShowPanel(6)
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:OnBtnPutOnClick()
|
||
if not self.CurIndex then
|
||
return
|
||
end
|
||
|
||
local baseEquip = self.BaseEquipList[self.CurIndex]
|
||
if not baseEquip then
|
||
return
|
||
end
|
||
|
||
local oldBaseEquip = XDataCenter.BaseEquipManager.GetBaseEquipByPart(self.CurPart)
|
||
XDataCenter.BaseEquipManager.PutOn(baseEquip.Id, function()
|
||
self.PutOnTipPanel:ShowPanel(baseEquip.Id, oldBaseEquip and oldBaseEquip.Id or nil)
|
||
self:UpdateSelectedGrid(baseEquip)
|
||
self:HidePutOn()
|
||
self:ResetGrids()
|
||
self.CurGrid:SetPutOn(true)
|
||
end)
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:SetRecycleByStar(star, recycle)
|
||
for index, data in pairs(self.BaseEquipList) do
|
||
if XDataCenter.BaseEquipManager.GetBaseEquipStar(data.TemplateId) == star then
|
||
if recycle then
|
||
self:AddToRecycleList(data.Id)
|
||
else
|
||
self:RemoveFromRecycleList(data.Id)
|
||
end
|
||
|
||
local grid = self.DynamicTable:GetGridByIndex(index)
|
||
if grid then
|
||
grid:SetRecycle(recycle)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:ResetGrids()
|
||
for index, _ in pairs(self.BaseEquipList) do
|
||
local grid = self.DynamicTable:GetGridByIndex(index)
|
||
if grid then
|
||
grid:SetPutOn(false)
|
||
grid:SetRecycle(false)
|
||
end
|
||
end
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:ShowRecyclePanel()
|
||
self.RecycleMode = true
|
||
if self.CurGrid then
|
||
self.CurGrid:SetSelect(false)
|
||
self.CurGrid = nil
|
||
self.CurIndex = 0
|
||
end
|
||
self.BtnPutOn.gameObject:SetActive(false)
|
||
self.BtnRecycle.gameObject:SetActive(false)
|
||
self.PanelBaseEquipRecycle.gameObject:SetActive(true)
|
||
local isShow = XDataCenter.BaseEquipManager.CheckNewHintByPart(self.CurPart)
|
||
self["ImgNew" .. self.CurPart].gameObject:SetActive(isShow)
|
||
self.BaseEquipList = XDataCenter.BaseEquipManager.GetBaseEquipNotPutOnListByPart(self.CurPart)
|
||
self:ReloadDynamicTable()
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:HideRecyclePanel()
|
||
self.RecycleMode = false
|
||
self.PanelBaseEquipRecycle.gameObject:SetActive(false)
|
||
self.BtnRecycle.gameObject:SetActive(true)
|
||
self:ClearRecycleList()
|
||
self.RecyclePanel:RefreshRecyclePanel()
|
||
local isShow = XDataCenter.BaseEquipManager.CheckNewHintByPart(self.CurPart)
|
||
self["ImgNew" .. self.CurPart].gameObject:SetActive(isShow)
|
||
self.BaseEquipList = XDataCenter.BaseEquipManager.GetBaseEquipListByPart(self.CurPart)
|
||
self:ReloadDynamicTable()
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:UpdateSelectedGrid(baseEquip)
|
||
self.SelectedGrid:Refresh(baseEquip)
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:ShowPanel(part)
|
||
self:ResetUi()
|
||
self.CurPart = part
|
||
self.CurGrid = nil
|
||
self.CurIndex = 0
|
||
if self.RecycleMode then
|
||
self.BaseEquipList = XDataCenter.BaseEquipManager.GetBaseEquipNotPutOnListByPart(part)
|
||
self:ClearRecycleList()
|
||
self.RecyclePanel:RefreshRecyclePanel()
|
||
else
|
||
self.BaseEquipList = XDataCenter.BaseEquipManager.GetBaseEquipListByPart(part)
|
||
end
|
||
|
||
self:HidePutOn()
|
||
self.GameObject:SetActive(true)
|
||
self["Toggle" .. part].isOn = true
|
||
|
||
for i = 1, 6 do
|
||
local isShow = XDataCenter.BaseEquipManager.CheckNewHintByPart(i)
|
||
self["ImgNew" .. i].gameObject:SetActive(isShow)
|
||
end
|
||
|
||
self.TxtPart.text = part
|
||
local curType = math.ceil(part / 2)
|
||
self.TxtDesc.text = CS.XTextManager.GetText("BaseEquipType" .. curType)
|
||
self:UpdateSelectedGrid(XDataCenter.BaseEquipManager.GetBaseEquipByPart(part))
|
||
self:ReloadDynamicTable()
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:ReloadDynamicTable()
|
||
if self.CurGrid then
|
||
self.CurGrid:SetSelect(false)
|
||
end
|
||
|
||
local count = #self.BaseEquipList
|
||
self.TxtEmptyTip.gameObject:SetActive(count <= 0)
|
||
self.DynamicTable:SetDataSource(self.BaseEquipList)
|
||
self.DynamicTable:ReloadDataASync(count > 0 and 1 or -1)
|
||
|
||
self.TxtCapacity.text = count
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:HidePanel()
|
||
self.GameObject:SetActive(false)
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:IsShow()
|
||
return self.GameObject.activeSelf
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:ShowPutOn()
|
||
self.BtnPutOn.gameObject:SetActive(true)
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:HidePutOn()
|
||
self.BtnPutOn.gameObject:SetActive(false)
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:AddCoinListener()
|
||
local coinID = XDataCenter.ItemManager.ItemId.BaseEquipCoin
|
||
XDataCenter.ItemManager.AddCountUpdateListener(coinID, function()
|
||
self:UpdateBaseEquipCoin()
|
||
end, self.TxtCoinNum)
|
||
self:UpdateBaseEquipCoin()
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:UpdateBaseEquipCoin()
|
||
local coinID = XDataCenter.ItemManager.ItemId.BaseEquipCoin
|
||
self.TxtCoinNum.text = XDataCenter.ItemManager.GetItem(coinID).Count
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:OnDynamicTableEvent(event, index, grid)
|
||
if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_INIT then
|
||
grid:Init(self.Parent, self)
|
||
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
|
||
local data = self.BaseEquipList[index]
|
||
grid:Refresh(data)
|
||
grid:SetSelect(index == self.CurIndex)
|
||
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_TOUCHED then
|
||
local data = self.BaseEquipList[index]
|
||
if self.RecycleMode then
|
||
if self:CheckRecycle(data.Id) then
|
||
self:RemoveFromRecycleList(data.Id)
|
||
self.RecyclePanel:RefreshRecyclePanel()
|
||
grid:SetRecycle(false)
|
||
else
|
||
self:AddToRecycleList(data.Id)
|
||
self.RecyclePanel:RefreshRecyclePanel()
|
||
grid:SetRecycle(true)
|
||
end
|
||
else
|
||
local oldEquip = XDataCenter.BaseEquipManager.GetBaseEquipByPart(self.CurPart)
|
||
|
||
if oldEquip == nil or data.Id ~= oldEquip.Id then
|
||
self:ShowPutOn()
|
||
else
|
||
self:HidePutOn()
|
||
end
|
||
|
||
if self.CurGrid then
|
||
self.CurGrid:SetSelect(false)
|
||
end
|
||
|
||
grid:SetSelect(true)
|
||
self.CurGrid = grid
|
||
self.CurIndex = index
|
||
end
|
||
end
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:AddToRecycleList(equipId)
|
||
self.RecycleEquipList[equipId] = true
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:RemoveFromRecycleList(equipId)
|
||
self.RecycleEquipList[equipId] = nil
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:CheckRecycle(equipId)
|
||
return self.RecycleEquipList[equipId] ~= nil
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:ClearRecycleList()
|
||
self.RecycleEquipList = {}
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:GetRecycleEquipCount()
|
||
local count = 0
|
||
for _, _ in pairs(self.RecycleEquipList) do
|
||
count = count + 1
|
||
end
|
||
return count
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:GetRecycleEquipReward()
|
||
local rewardGoodsList = {}
|
||
for id, _ in pairs(self.RecycleEquipList) do
|
||
local equip = XDataCenter.BaseEquipManager.GetBaseEquipById(id)
|
||
local rewardId = XDataCenter.BaseEquipManager.GetBaseEquipRecoveryRewardId(equip.TemplateId)
|
||
if rewardId then
|
||
local rewardList = XRewardManager.GetRewardList(rewardId)
|
||
for _, reward in pairs(rewardList) do
|
||
table.insert(rewardGoodsList, reward)
|
||
end
|
||
end
|
||
end
|
||
|
||
return XRewardManager.MergeAndSortRewardGoodsList(rewardGoodsList)
|
||
end
|
||
|
||
function XUiPanelBaseEquipPutOn:RefreshAfterRecycle()
|
||
self:HideRecyclePanel()
|
||
end
|
||
|
||
return XUiPanelBaseEquipPutOn |