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

379 lines
13 KiB
Lua
Raw Normal View History

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