PGRData/Script/matrix/xui/xuitheatre3/adventure/main/XPanelTheatre3MainRoleInfo.lua
2024-09-01 22:49:41 +02:00

139 lines
No EOL
4.5 KiB
Lua

local XGridTheatre3MainCharacter = require("XUi/XUiTheatre3/Adventure/Main/XGridTheatre3MainCharacter")
local XGridTheatre3MainEquipSuit = require("XUi/XUiTheatre3/Adventure/Main/XGridTheatre3MainEquipSuit")
---@class XPanelTheatre3MainRoleInfo : XUiNode
---@field _Control XTheatre3Control
local XPanelTheatre3MainRoleInfo = XClass(XUiNode, "XPanelTheatre3MainRoleInfo")
function XPanelTheatre3MainRoleInfo:OnStart()
self:AddBtnListener()
self:InitCharacter()
self:InitEquipSuit()
end
function XPanelTheatre3MainRoleInfo:OnEnable()
self:AddEventListener()
end
function XPanelTheatre3MainRoleInfo:OnDisable()
self:RemoveEventListener()
end
function XPanelTheatre3MainRoleInfo:Refresh(slotId)
self._SlotId = slotId
local equipSuitIdList = self._Control:GetSlotSuits(self._SlotId)
self:RefreshCharacter()
self:RefreshEquipSuit()
if XTool.IsTableEmpty(equipSuitIdList) then
self:SetIsSelect()
end
end
function XPanelTheatre3MainRoleInfo:SetIsSelect(slotId)
if self._IsSelect and self._SlotId == slotId then
self._IsSelect = false
else
self._IsSelect = self._SlotId == slotId
end
self.PanelSet.gameObject:SetActiveEx(self._IsSelect)
self.BtnOpen.gameObject:SetActiveEx(self._IsSelect)
self:RefreshEquipSuit()
end
--region Ui - Character
function XPanelTheatre3MainRoleInfo:InitCharacter()
---@type XGridTheatre3MainCharacter
self._Character = XGridTheatre3MainCharacter.New(self.CharacterGrid.transform, self)
end
function XPanelTheatre3MainRoleInfo:RefreshCharacter()
self._Character:Refresh(self._SlotId)
self.TxtSuit.text = self._Control:GetSlotCapcity(self._SlotId).."/"..self._Control:GetSlotMaxCapcity(self._SlotId)
end
--endregion
--region Ui - EquipSuit
function XPanelTheatre3MainRoleInfo:InitEquipSuit()
local isShow = self.PanelSet.gameObject.activeInHierarchy
self.PanelSet.gameObject:SetActiveEx(true)
---@type XGridTheatre3MainEquipSuit[]
self._SuitList = {
XGridTheatre3MainEquipSuit.New(self.BtnSet1, self),
XGridTheatre3MainEquipSuit.New(self.BtnSet2, self),
XGridTheatre3MainEquipSuit.New(self.BtnSet3, self),
}
self.BtnOpen.gameObject:SetActiveEx(true)
self.PanelSet.gameObject:SetActiveEx(isShow)
end
function XPanelTheatre3MainRoleInfo:RefreshEquipSuit()
if not self.PanelSet.gameObject.activeInHierarchy then
return
end
local equipSuitIdList = self._Control:GetSlotSuits(self._SlotId)
if XTool.IsTableEmpty(equipSuitIdList) then
for _, suitGrid in ipairs(self._SuitList) do
suitGrid:Close()
end
return
end
for i, suitGrid in ipairs(self._SuitList) do
if XTool.IsNumberValid(equipSuitIdList[i]) then
suitGrid:Refresh(equipSuitIdList[i])
suitGrid:Open()
else
suitGrid:Close()
end
end
end
function XPanelTheatre3MainRoleInfo:OnOpenEquip(index)
local equipSuitIdList = self._Control:GetSlotSuits(self._SlotId)
if XTool.IsTableEmpty(equipSuitIdList) then
return
end
self._Control:OpenShowEquipPanel(equipSuitIdList[index])
end
--endregion
--region Ui - BtnListener
function XPanelTheatre3MainRoleInfo:AddBtnListener()
XUiHelper.RegisterClickEvent(self, self.CharacterGrid, self.OnBtnCharacterClick)
XUiHelper.RegisterClickEvent(self, self.BtnSet1, function()
self:OnOpenEquip(1)
end)
XUiHelper.RegisterClickEvent(self, self.BtnSet2, function()
self:OnOpenEquip(2)
end)
XUiHelper.RegisterClickEvent(self, self.BtnSet3, function()
self:OnOpenEquip(3)
end)
XUiHelper.RegisterClickEvent(self, self.BtnOpen, self.OnBtnOpenClick)
end
function XPanelTheatre3MainRoleInfo:OnBtnOpenClick()
self._Control:OpenShowEquipPanel()
end
function XPanelTheatre3MainRoleInfo:OnBtnCharacterClick()
--local equipSuitIdList = self._Control:GetSlotSuits(self._SlotId)
--if XTool.IsTableEmpty(equipSuitIdList) then
-- XUiManager.TipErrorWithKey("Theatre3PlayRoleNoEquipTip")
-- return
--end
XEventManager.DispatchEvent(XEventId.EVENT_THEATRE3_ADVENTURE_MAIN_SELECT_ROLE, self._SlotId)
end
--endregion
--region Event
function XPanelTheatre3MainRoleInfo:AddEventListener()
XEventManager.AddEventListener(XEventId.EVENT_THEATRE3_ADVENTURE_MAIN_SELECT_ROLE, self.SetIsSelect, self)
end
function XPanelTheatre3MainRoleInfo:RemoveEventListener()
XEventManager.RemoveEventListener(XEventId.EVENT_THEATRE3_ADVENTURE_MAIN_SELECT_ROLE, self.SetIsSelect, self)
end
--endregion
return XPanelTheatre3MainRoleInfo