forked from endernon/PGRData
207 lines
No EOL
6.8 KiB
Lua
207 lines
No EOL
6.8 KiB
Lua
--角色选择界面
|
|
local XUiSimulatedCombatRoomCharacter = XLuaUiManager.Register(XLuaUi, "UiSimulatedCombatRoomCharacter")
|
|
local XUiSimulatedCombatRoomCharListGrid = require("XUi/XUiFubenSimulatedCombat/ChildItem/XUiRoomCharListGrid")
|
|
local XUiPanelRoleModel = require("XUi/XUiCharacter/XUiPanelRoleModel")
|
|
|
|
local CSXTextManagerGetText = CS.XTextManager.GetText
|
|
|
|
function XUiSimulatedCombatRoomCharacter:OnAwake()
|
|
XTool.InitUiObject(self)
|
|
self.AssetActivityPanel = XUiPanelActivityAsset.New(self.PanelSpecialTool, true)
|
|
self.AssetActivityPanel:SetQueryFunc(XDataCenter.FubenSimulatedCombatManager.GetCurrencyByItem)
|
|
local root = self.UiModelGo.transform
|
|
self.PanelRoleModel = root:FindTransform("PanelRoleModel")
|
|
self.ImgEffectHuanren = root:FindTransform("ImgEffectHuanren")
|
|
self.GridCharacter.gameObject:SetActiveEx(false)
|
|
self.RoleModelPanel = XUiPanelRoleModel.New(self.PanelRoleModel, self.Name, nil, true, nil, true)
|
|
self.DynamicTable = XDynamicTableNormal.New(self.SViewCharacterList)
|
|
self.DynamicTable:SetProxy(XUiSimulatedCombatRoomCharListGrid)
|
|
self.DynamicTable:SetDelegate(self)
|
|
|
|
self:AddListener()
|
|
end
|
|
|
|
function XUiSimulatedCombatRoomCharacter:OnStart(teamData, changePos, cb)
|
|
self.TeamData = teamData
|
|
self.ChangePos = changePos
|
|
self.ActTemplate = XDataCenter.FubenSimulatedCombatManager.GetCurrentActTemplate()
|
|
self.MemberList = XDataCenter.FubenSimulatedCombatManager.GetRoomMemberList()
|
|
-- XLog.Warning("RoomCharacter", teamData, "- split - ", self.MemberList)
|
|
local charId = teamData[changePos]
|
|
if charId ~= 0 then
|
|
for i, v in pairs(self.MemberList) do
|
|
if v == charId then
|
|
self.CurrentSelect = i
|
|
end
|
|
end
|
|
self.CurrentSelect = self.CurrentSelect or 1
|
|
else
|
|
self.CurrentSelect = 1
|
|
end
|
|
self:UpdateList()
|
|
self.CallBack = cb
|
|
end
|
|
|
|
function XUiSimulatedCombatRoomCharacter:OnEnable()
|
|
CS.XGraphicManager.UseUiLightDir = true
|
|
self:UpdateList()
|
|
end
|
|
|
|
function XUiSimulatedCombatRoomCharacter:Refresh(charId, robotId)
|
|
if not self.ActTemplate then return end
|
|
self.RobotId = robotId
|
|
self:UpdateModel(charId, robotId)
|
|
self:SetTeamBtns(charId)
|
|
|
|
self.AssetActivityPanel:Refresh(self.ActTemplate.ConsumeIds)
|
|
end
|
|
|
|
function XUiSimulatedCombatRoomCharacter:UpdateModel(characterId, robotId)
|
|
if not characterId then return end
|
|
self.ImgEffectHuanren.gameObject:SetActiveEx(false)
|
|
self.ImgEffectHuanren.gameObject:SetActiveEx(true)
|
|
local callback = function()
|
|
self.ModelReady = true
|
|
end
|
|
self.ModelReady = false
|
|
local robotCfg = XRobotManager.GetRobotTemplate(robotId)
|
|
if not robotCfg then return end
|
|
self.RoleModelPanel:UpdateRobotModel(robotId, characterId, callback, robotCfg and robotCfg.FashionId, robotCfg and robotCfg.WeaponId)
|
|
end
|
|
|
|
function XUiSimulatedCombatRoomCharacter:OnDisable()
|
|
CS.XGraphicManager.UseUiLightDir = false
|
|
end
|
|
|
|
function XUiSimulatedCombatRoomCharacter:OnDestroy()
|
|
if self.CallBack then
|
|
self.CallBack(self.TeamData)
|
|
self.CallBack = nil
|
|
end
|
|
end
|
|
function XUiSimulatedCombatRoomCharacter:SetTeamBtns(charId)
|
|
local isInTeam = self:IsInTeam(charId)
|
|
self.BtnJoinTeam.gameObject:SetActiveEx(not isInTeam)
|
|
self.BtnQuitTeam.gameObject:SetActiveEx(isInTeam)
|
|
end
|
|
|
|
function XUiSimulatedCombatRoomCharacter:OnGetEvents()
|
|
return { XEventId.EVENT_ACTIVITY_ON_RESET }
|
|
end
|
|
|
|
function XUiSimulatedCombatRoomCharacter:OnNotify(evt, ...)
|
|
local args = { ... }
|
|
if evt == XEventId.EVENT_ACTIVITY_ON_RESET then
|
|
if args[1] ~= XDataCenter.FubenManager.StageType.SimulatedCombat then return end
|
|
XDataCenter.FubenSimulatedCombatManager.OnActivityEnd()
|
|
end
|
|
end
|
|
function XUiSimulatedCombatRoomCharacter:AddListener()
|
|
self:RegisterClickEvent(self.BtnBack, self.OnBtnBackClick)
|
|
self:RegisterClickEvent(self.BtnMainUi, self.OnBtnMainUiClick)
|
|
self:RegisterClickEvent(self.BtnJoinTeam, self.OnBtnJoinClick)
|
|
self:RegisterClickEvent(self.BtnQuitTeam, self.OnBtnQuitClick)
|
|
end
|
|
|
|
function XUiSimulatedCombatRoomCharacter:OnBtnBackClick()
|
|
self:Close()
|
|
end
|
|
|
|
function XUiSimulatedCombatRoomCharacter:OnBtnMainUiClick()
|
|
local title = CSXTextManagerGetText("TipTitle")
|
|
local content = CSXTextManagerGetText("SimulatedCombatBackConfirm")
|
|
XUiManager.DialogTip(title, content, XUiManager.DialogType.Normal, nil, function()
|
|
XLuaUiManager.RunMain()
|
|
end)
|
|
end
|
|
|
|
function XUiSimulatedCombatRoomCharacter:OnBtnJoinClick()
|
|
local id = self.MemberList[self.CurrentSelect]
|
|
for k, v in pairs(self.TeamData) do
|
|
if v == id then
|
|
self.TeamData[k] = 0
|
|
break
|
|
end
|
|
end
|
|
|
|
self.TeamData[self.ChangePos] = id
|
|
if self.CallBack then
|
|
self.CallBack(self.TeamData)
|
|
self.CallBack = nil
|
|
end
|
|
self:Close()
|
|
end
|
|
|
|
function XUiSimulatedCombatRoomCharacter:OnBtnQuitClick()
|
|
local count = 0
|
|
for _, v in pairs(self.TeamData) do
|
|
if v > 0 then
|
|
count = count + 1
|
|
end
|
|
end
|
|
|
|
local id = self.MemberList[self.CurrentSelect]
|
|
for k, v in pairs(self.TeamData) do
|
|
if v == id then
|
|
self.TeamData[k] = 0
|
|
break
|
|
end
|
|
end
|
|
|
|
if self.CallBack then
|
|
self.CallBack(self.TeamData)
|
|
self.CallBack = nil
|
|
end
|
|
self:Close()
|
|
end
|
|
|
|
function XUiSimulatedCombatRoomCharacter:OnDynamicTableEvent(event, index, grid)
|
|
if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_INIT then
|
|
grid:Init(grid.DynamicGrid.gameObject, self)
|
|
if self.CurrentSelect == index then
|
|
self:SetSelectCharacter(grid)
|
|
end
|
|
local charId = self.MemberList[index]
|
|
grid:SetInTeam(self:IsInTeam(charId))
|
|
grid:Refresh(charId)
|
|
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
|
|
grid:SetSelect(false)
|
|
grid:SetInTeam(false)
|
|
if self.CurrentSelect == index then
|
|
self:SetSelectCharacter(grid)
|
|
end
|
|
local charId = self.MemberList[index]
|
|
grid:SetInTeam(self:IsInTeam(charId))
|
|
grid:Refresh(charId)
|
|
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_TOUCHED then
|
|
self.CurrentSelect = index
|
|
self:SetSelectCharacter(grid)
|
|
end
|
|
end
|
|
|
|
function XUiSimulatedCombatRoomCharacter:UpdateList()
|
|
self.DynamicTable:SetDataSource(self.MemberList)
|
|
if #self.MemberList > 0 then
|
|
self.DynamicTable:ReloadDataSync(self.CurrentSelect)
|
|
end
|
|
end
|
|
|
|
--选中
|
|
function XUiSimulatedCombatRoomCharacter:SetSelectCharacter(grid)
|
|
if self.CurCharacterGrid then
|
|
self.CurCharacterGrid:SetSelect(false)
|
|
end
|
|
self.CurCharacterGrid = grid
|
|
self.CurCharacterGrid:SetSelect(true)
|
|
end
|
|
|
|
function XUiSimulatedCombatRoomCharacter:IsInTeam(id)
|
|
for _, v in pairs(self.TeamData) do
|
|
if v == id then
|
|
return true
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
return XUiSimulatedCombatRoomCharacter |