97 lines
No EOL
3.9 KiB
Lua
97 lines
No EOL
3.9 KiB
Lua
local XUiBattleRoleRoomDefaultProxy = require("XUi/XUiNewRoomSingle/XUiBattleRoleRoomDefaultProxy")
|
||
local XUiBiancaTheatreBattleRoleRoom = XClass(XUiBattleRoleRoomDefaultProxy, "XUiBiancaTheatreBattleRoleRoom")
|
||
|
||
function XUiBiancaTheatreBattleRoleRoom:Ctor(team, stageId)
|
||
self.TheatreManager = XDataCenter.BiancaTheatreManager
|
||
self.AdventureManager = self.TheatreManager.GetCurrentAdventureManager()
|
||
self.Chapter = self.AdventureManager:GetCurrentChapter()
|
||
self.StageId = stageId
|
||
self:CheckTeam(team)
|
||
end
|
||
|
||
--检查队伍里试玩角色是否在已招募列表里,存在时更新当前星级的试玩角色Id
|
||
function XUiBiancaTheatreBattleRoleRoom:CheckTeam(team)
|
||
local characterId
|
||
local adventureRole, adventureRobotRole
|
||
for teamPos, entityId in ipairs(team:GetEntityIds()) do
|
||
if XEntityHelper.GetIsRobot(entityId) then
|
||
characterId = XEntityHelper.GetCharacterIdByEntityId(entityId)
|
||
adventureRole = self.AdventureManager:GetRoleByCharacterId(characterId)
|
||
adventureRobotRole = adventureRole and adventureRole:GetRobotRole()
|
||
if adventureRobotRole then
|
||
team:UpdateEntityTeamPos(adventureRobotRole:GetId(), teamPos, true)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
function XUiBiancaTheatreBattleRoleRoom:AOPOnStartAfter(rootUi)
|
||
rootUi.BtnTeamPrefab.gameObject:SetActiveEx(false)
|
||
rootUi.BtnMainUi.CallBack = function() XDataCenter.BiancaTheatreManager.RunMain() end
|
||
-- 进入辅助机关闭音效滤镜
|
||
for i = 1, 3, 1 do
|
||
if rootUi["UiObjPartner"..i] then
|
||
XUiHelper.RegisterClickEvent(rootUi, rootUi["UiObjPartner"..i]:GetObject("BtnClick"), function ()
|
||
XDataCenter.BiancaTheatreManager.ResetAudioFilter()
|
||
end)
|
||
end
|
||
end
|
||
end
|
||
|
||
function XUiBiancaTheatreBattleRoleRoom:AOPOnEnableAfter(rootUi)
|
||
-- 音效滤镜界限恢复
|
||
XDataCenter.BiancaTheatreManager.StartAudioFilter()
|
||
end
|
||
|
||
-- 根据实体id获取角色视图数据
|
||
-- return : XCharacterViewModel
|
||
function XUiBiancaTheatreBattleRoleRoom:GetCharacterViewModelByEntityId(id)
|
||
local role = self.AdventureManager:GetRole(id)
|
||
if role == nil then return nil end
|
||
return role:GetCharacterViewModel()
|
||
end
|
||
|
||
-- 根据实体Id获取伙伴实体
|
||
-- return : XPartner
|
||
function XUiBiancaTheatreBattleRoleRoom:GetPartnerByEntityId(id)
|
||
local role = self.AdventureManager:GetRole(id)
|
||
if role == nil then return nil end
|
||
local result = nil
|
||
if role:GetIsLocalRole() then
|
||
return XDataCenter.PartnerManager.GetCarryPartnerEntityByCarrierId(role:GetId())
|
||
else
|
||
return role:GetRawData():GetPartner()
|
||
end
|
||
end
|
||
|
||
function XUiBiancaTheatreBattleRoleRoom:GetRoleDetailProxy()
|
||
return require("XUi/XUiBiancaTheatre/XUiBiancaTheatreBattleRoomRoleDetail")
|
||
end
|
||
|
||
function XUiBiancaTheatreBattleRoleRoom:EnterFight()
|
||
self.AdventureManager:RequestSetSingleTeam(function()
|
||
self.AdventureManager:EnterFight(self.StageId, nil, function(res)
|
||
if res.Code ~= XCode.Success then
|
||
return
|
||
end
|
||
-- hack : 假如当前节点是事件战斗并没有下一个触发节点,直接移除事件选择界面防止战斗回来闪一下
|
||
local currentNode = self.AdventureManager:GetCurrentChapter():GetCurrentNode()
|
||
if not currentNode then return end
|
||
if currentNode:GetNodeType() == XBiancaTheatreConfigs.NodeType.Event
|
||
and currentNode:GetEventType() == XBiancaTheatreConfigs.EventNodeType.Battle
|
||
and (currentNode:GetNextStepId() == nil or currentNode:GetNextStepId() == 0) then
|
||
XLuaUiManager.Remove("UiBiancaTheatreOutpost")
|
||
end
|
||
end)
|
||
end)
|
||
end
|
||
|
||
function XUiBiancaTheatreBattleRoleRoom:GetRoleAbility(entityId)
|
||
local role = self.AdventureManager:GetRole(entityId)
|
||
if role then
|
||
return role:GetAbility()
|
||
end
|
||
return 0
|
||
end
|
||
|
||
return XUiBiancaTheatreBattleRoleRoom |