forked from endernon/PGRData
172 lines
No EOL
5.3 KiB
Lua
172 lines
No EOL
5.3 KiB
Lua
local XUiMissionTeamSelect = XLuaUiManager.Register(XLuaUi, "UiMissionTeamSelect")
|
|
|
|
function XUiMissionTeamSelect:OnAwake()
|
|
self:InitAutoScript()
|
|
end
|
|
|
|
function XUiMissionTeamSelect:OnStart(characterIds, memberCount, index, callback)
|
|
|
|
self.Index = index
|
|
|
|
self:Init(characterIds)
|
|
self.MemberLimit = memberCount
|
|
self.CallBack = callback
|
|
self.CurSelectGrid = nil
|
|
self:SetupCharacterList()
|
|
|
|
self:PlayAnimation("AniMissionTeamSelectBegin")
|
|
end
|
|
|
|
function XUiMissionTeamSelect:Init(characterIds)
|
|
--self.SelectCount = #characterIds
|
|
self.CharacterIds = {}
|
|
for i,v in pairs(characterIds) do
|
|
self.CharacterIds[i] = v
|
|
end
|
|
|
|
self.SelectedIdMap = {}
|
|
for i, v in pairs(characterIds) do
|
|
if self.Index ~= i then
|
|
self.SelectedIdMap[v] = i
|
|
end
|
|
end
|
|
|
|
self.DynamicTable = XDynamicTableNormal.New(self.PanelScrollView)
|
|
self.DynamicTable:SetProxy(XUiGridMisssionTeam)
|
|
self.DynamicTable:SetDelegate(self)
|
|
end
|
|
|
|
-- 角色信息面板 begin --
|
|
function XUiMissionTeamSelect:SetupCharacterList()
|
|
local charlist = XDataCenter.TaskForceManager.GetOwnCharacterList()
|
|
|
|
if not charlist then
|
|
XLog.Error("XUiMissionTeamSelect:SetupCharacterList error: character list is nil")
|
|
return
|
|
end
|
|
|
|
self.CharList = {}
|
|
for _, v in ipairs(charlist) do
|
|
if self.CharacterIds and self.CharacterIds[self.Index] and self.CharacterIds[self.Index] == v.Id then
|
|
table.insert(self.CharList, 1, v)
|
|
else
|
|
table.insert(self.CharList, v)
|
|
end
|
|
end
|
|
|
|
self.DynamicTable:SetDataSource(self.CharList)
|
|
self.DynamicTable:ReloadDataASync()
|
|
end
|
|
|
|
--动态列表事件
|
|
function XUiMissionTeamSelect:OnDynamicTableEvent(event, index, grid)
|
|
if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_INIT then
|
|
grid:Init(self)
|
|
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
|
|
local data = self.CharList[index]
|
|
grid:Reset()
|
|
grid:UpdateGrid(data)
|
|
if self.CharacterIds[self.Index] and self.CharacterIds[self.Index] == data.Id then
|
|
self.CurSelectGrid = grid
|
|
grid:SetSelect(true)
|
|
else
|
|
grid:SetSelect(false)
|
|
end
|
|
|
|
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_TOUCHED then
|
|
local charData = self.CharList[index]
|
|
|
|
if charData.IsWorking and charData.IsWorking > 0 then
|
|
return
|
|
end
|
|
|
|
if self.CharacterIds[self.Index] and self.CharacterIds[self.Index] == charData.Id then
|
|
self.CurSelectGrid:SetSelect(false)
|
|
self.CharacterIds[self.Index] = nil
|
|
return
|
|
end
|
|
|
|
if self.CurSelectGrid then
|
|
self.CurSelectGrid:SetSelect(false)
|
|
end
|
|
|
|
self.CharacterIds[self.Index] = charData.Id
|
|
self.CurSelectGrid = grid
|
|
self.CurSelectGrid:SetSelect(true)
|
|
end
|
|
end
|
|
-- auto
|
|
-- Automatic generation of code, forbid to edit
|
|
function XUiMissionTeamSelect:InitAutoScript()
|
|
self:AutoInitUi()
|
|
self.SpecialSoundMap = {}
|
|
self:AutoAddListener()
|
|
end
|
|
|
|
function XUiMissionTeamSelect:AutoInitUi()
|
|
-- self.BtnBg = self.Transform:Find("FullScreenBackground/BtnBg"):GetComponent("Button")
|
|
-- self.PanelMissionTeamSelect = self.Transform:Find("SafeAreaContentPane/PanelMissionTeamSelect")
|
|
-- self.PanelScrollView = self.Transform:Find("SafeAreaContentPane/PanelMissionTeamSelect/PanelScrollView")
|
|
-- self.GridMisssionTeam = self.Transform:Find("SafeAreaContentPane/PanelMissionTeamSelect/PanelScrollView/Viewport/GridMisssionTeam")
|
|
-- self.BtnSure = self.Transform:Find("SafeAreaContentPane/PanelMissionTeamSelect/BtnSure"):GetComponent("Button")
|
|
end
|
|
|
|
function XUiMissionTeamSelect:GetAutoKey(uiNode, eventName)
|
|
if not uiNode then return end
|
|
return eventName .. uiNode:GetHashCode()
|
|
end
|
|
|
|
function XUiMissionTeamSelect:RegisterListener(uiNode, eventName, func)
|
|
local key = self:GetAutoKey(uiNode, eventName)
|
|
if not key then return end
|
|
local listener = self.AutoCreateListeners[key]
|
|
if listener ~= nil then
|
|
uiNode[eventName]:RemoveListener(listener)
|
|
end
|
|
|
|
if func ~= nil then
|
|
if type(func) ~= "function" then
|
|
XLog.Error("XUiMissionTeamSelect:RegisterListener函数错误, 参数func需要是function类型, func的类型是" .. type(func))
|
|
end
|
|
|
|
listener = function(...)
|
|
XSoundManager.PlayBtnMusic(self.SpecialSoundMap[key], eventName)
|
|
func(self, ...)
|
|
end
|
|
|
|
uiNode[eventName]:AddListener(listener)
|
|
self.AutoCreateListeners[key] = listener
|
|
end
|
|
end
|
|
|
|
function XUiMissionTeamSelect:AutoAddListener()
|
|
self.AutoCreateListeners = {}
|
|
self:RegisterClickEvent(self.BtnBg, self.OnBtnBgClick)
|
|
self:RegisterClickEvent(self.BtnSure, self.OnBtnSureClick)
|
|
end
|
|
-- auto
|
|
function XUiMissionTeamSelect:OnBtnBgClick()
|
|
self:PlayAnimation("AniMissionTeamSelectEnd", function()
|
|
self:Close()
|
|
end)
|
|
end
|
|
|
|
function XUiMissionTeamSelect:OnBtnSureClick()
|
|
|
|
local id = self.CharacterIds[self.Index]
|
|
if id then
|
|
local index = self.SelectedIdMap[id]
|
|
if index ~= nil then
|
|
self.CharacterIds[index] = nil
|
|
end
|
|
end
|
|
|
|
self:PlayAnimation("AniMissionTeamSelectEnd", function()
|
|
if self.CallBack then
|
|
self.CallBack(self.CharacterIds)
|
|
end
|
|
|
|
self:Close()
|
|
|
|
end)
|
|
end |