PGRData/Script/matrix/xui/xuiguildwar/assistant/XUiGuildWarAssistantSelect.lua
2024-09-01 22:49:41 +02:00

171 lines
5.7 KiB
Lua

local XUiPanelRoleModel = require("XUi/XUiCharacter/XUiPanelRoleModel")
local XUiGuildWarAssistantSelectGrid = require("XUi/XUiGuildWar/Assistant/XUiGuildWarAssistantSelectGrid")
---@class UiGuildWarAssistantSelect:XLuaUi@ 没有新增ui, 用的是UiBattleRoomRoleDetail
local XUiGuildWarAssistantSelect = XLuaUiManager.Register(XLuaUi, "UiGuildWarAssistantSelect")
function XUiGuildWarAssistantSelect:Ctor()
self._Team = false
self._Pos = false
self._CurrentCharacterId = false
self._CurrentCharacterType = XCharacterConfigs.CharacterType.Normal
end
function XUiGuildWarAssistantSelect:OnStart()
self:Init()
end
function XUiGuildWarAssistantSelect:Init()
-- model
local panelModel = self.UiModelGo.transform:FindTransform("PanelRoleModel")
self.UiPanelRoleModel = XUiPanelRoleModel.New(panelModel, self.Name, nil, true)
-- main and back
self:BindExitBtns(self.BtnBack, self.BtnMainUi)
-- PanelAsset
local ItemId = XDataCenter.ItemManager.ItemId
XUiPanelAsset.New(self, self.PanelAsset,
ItemId.FreeGem,
ItemId.ActionPoint,
ItemId.Coin)
-- button click
self:RegisterClickEvent(self.BtnPartner, self.OnBtnPartnerClicked)
self:RegisterClickEvent(self.BtnFashion, self.OnBtnFashionClicked)
self:RegisterClickEvent(self.BtnConsciousness, self.OnBtnConsciousnessClicked)
self:RegisterClickEvent(self.BtnWeapon, self.OnBtnWeaponClicked)
-- 独域机体
if self:IsIsomerLock() then
self.BtnTabShougezhe:SetDisable(true)
end
-- 角色列表
self.DynamicTable = XDynamicTableNormal.New(self.SViewCharacterList)
self.DynamicTable:SetProxy(XUiGuildWarAssistantSelectGrid)
self.DynamicTable:SetDelegate(self)
-- button join
self:RegisterClickEvent(self.BtnJoinTeam, self.OnBtnJoinTeamClicked)
local textBtnJoinTeam = XUiHelper.TryGetComponent(self.BtnJoinTeam.transform, "Text1", "Text")
textBtnJoinTeam.text = XUiHelper.GetText("GuildWarAssistantSet")
-- hide useless ui
self.PanelCharacterLimit.gameObject:SetActiveEx(false)
self.BtnTeaching.gameObject:SetActiveEx(false)
self.BtnFilter.gameObject:SetActiveEx(false)
-- 角色类型按钮组
self.BtnGroupCharacterType:Init(
{
[XCharacterConfigs.CharacterType.Normal] = self.BtnTabGouzaoti,
[XCharacterConfigs.CharacterType.Isomer] = self.BtnTabShougezhe,
},
function(tabIndex)
self:OnBtnGroupCharacterTypeClicked(tabIndex)
end
)
end
function XUiGuildWarAssistantSelect:OnEnable()
self:UpdateDataSource()
self.BtnGroupCharacterType:SelectIndex(self._CurrentCharacterType)
end
function XUiGuildWarAssistantSelect:UpdateDataSource()
local dataSource = self:GetEntities()
self.DynamicTable:SetDataSource(dataSource)
-- select default character
if #dataSource > 0 then
local characterId = XDataCenter.GuildWarManager.GetAssistantCharacterId()
if not characterId then
characterId = dataSource[1]:GetId()
end
local index
for i = 1,#dataSource do
if characterId == dataSource[i]:GetId() then
index = i
break
end
end
if not index then
index = 1
characterId = dataSource[1]:GetId()
end
self._CurrentCharacterId = characterId
self.DynamicTable:ReloadDataSync(index)
self:UpdateCharacter()
end
end
function XUiGuildWarAssistantSelect:IsIsomerLock()
return not XFunctionManager.JudgeOpen(XFunctionManager.FunctionName.Isomer)
end
function XUiGuildWarAssistantSelect:OnBtnPartnerClicked()
XDataCenter.PartnerManager.GoPartnerCarry(self._CurrentCharacterId, false)
end
function XUiGuildWarAssistantSelect:OnBtnFashionClicked()
XLuaUiManager.Open("UiFashion", self._CurrentCharacterId)
end
function XUiGuildWarAssistantSelect:OnBtnConsciousnessClicked()
XMVCA:GetAgency(ModuleId.XEquip):OpenUiEquipAwareness(self._CurrentCharacterId)
end
function XUiGuildWarAssistantSelect:OnBtnWeaponClicked()
XMVCA:GetAgency(ModuleId.XEquip):OpenUiEquipReplace(self._CurrentCharacterId, nil, true)
end
function XUiGuildWarAssistantSelect:OnBtnJoinTeamClicked()
XDataCenter.GuildWarManager.SendAssistant(self._CurrentCharacterId)
self:Close()
end
function XUiGuildWarAssistantSelect:GetEntities()
return XDataCenter.CharacterManager.GetOwnCharacterList(self._CurrentCharacterType)
end
---@param grid XUiGuildWarAssistantSelectGrid
function XUiGuildWarAssistantSelect:OnDynamicTableEvent(event, index, grid)
local character = self.DynamicTable.DataSource[index]
if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
grid:SetData(character)
grid:SetSelectStatus(self._CurrentCharacterId == character:GetId())
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_TOUCHED then
for _, tmpGrid in pairs(self.DynamicTable:GetGrids()) do
tmpGrid:SetSelectStatus(false)
end
grid:SetSelectStatus(true)
self:SetCharacterSelected(character:GetId())
end
end
function XUiGuildWarAssistantSelect:SetCharacterSelected(characterId)
self._CurrentCharacterId = characterId
self:UpdateCharacter()
end
function XUiGuildWarAssistantSelect:UpdateCharacter()
-- model
self.UiPanelRoleModel:UpdateCharacterModel(self._CurrentCharacterId)
end
function XUiGuildWarAssistantSelect:OnBtnGroupCharacterTypeClicked(characterType)
-- 检查功能是否开启
if characterType == XCharacterConfigs.CharacterType.Isomer and
not XFunctionManager.DetectionFunction(XFunctionManager.FunctionName.Isomer)
then
return
end
self._CurrentCharacterType = characterType
self:UpdateDataSource()
end
return XUiGuildWarAssistantSelect