221 lines
No EOL
7.3 KiB
Lua
221 lines
No EOL
7.3 KiB
Lua
---@class XUiBattleRoleRoomDefaultProxy
|
||
local XUiBattleRoleRoomDefaultProxy = XClass(nil, "XUiBattleRoleRoomDefaultProxy")
|
||
|
||
-- PS : 加上这个主要为了兼容旧编队界面逻辑带来的写法
|
||
-- 这里负责处自身玩法的事件,一般不建议使用,可通过切OnEnable注册和Disable关闭事件监听即可
|
||
function XUiBattleRoleRoomDefaultProxy:OnNotify(evt, ...)
|
||
|
||
end
|
||
|
||
-- 根据实体id获取角色视图数据
|
||
-- return : XCharacterViewModel
|
||
function XUiBattleRoleRoomDefaultProxy:GetCharacterViewModelByEntityId(id)
|
||
if id > 0 then
|
||
local entity = nil
|
||
if XEntityHelper.GetIsRobot(id) then
|
||
entity = XRobotManager.GetRobotById(id)
|
||
else
|
||
entity = XDataCenter.CharacterManager.GetCharacter(id)
|
||
end
|
||
if entity == nil then
|
||
XLog.Warning(string.format("找不到id%s的角色", id))
|
||
return
|
||
end
|
||
return entity:GetCharacterViewModel()
|
||
end
|
||
return nil
|
||
end
|
||
|
||
-- 通过实体Id获取角色Id,基本上只要实现好GetCharacterViewModelByEntityId接口可不必处理该接口
|
||
-- return : number 角色id
|
||
function XUiBattleRoleRoomDefaultProxy:GetCharacterIdByEntityId(id)
|
||
local viewModel = self:GetCharacterViewModelByEntityId(id)
|
||
if viewModel == nil then return end
|
||
return viewModel:GetId()
|
||
end
|
||
|
||
-- 获取实体战力,如有特殊战力计算公式,可重写
|
||
-- return : number 战力
|
||
function XUiBattleRoleRoomDefaultProxy:GetRoleAbility(entityId)
|
||
-- local viewModel = self:GetCharacterViewModelByEntityId(entityId)
|
||
-- if viewModel then
|
||
-- return viewModel:GetAbility()
|
||
-- end
|
||
-- return 0
|
||
---@type XCharacterAgency
|
||
local ag = XMVCA:GetAgency(ModuleId.XCharacter)
|
||
return ag:GetCharacterHaveRobotAbilityById(entityId)
|
||
end
|
||
|
||
-- 根据实体Id获取伙伴实体
|
||
-- return : XPartner
|
||
function XUiBattleRoleRoomDefaultProxy:GetPartnerByEntityId(id)
|
||
if id <= 0 then return nil end
|
||
local result = nil
|
||
if XEntityHelper.GetIsRobot(id) then
|
||
result = XRobotManager.GetRobotPartner(id)
|
||
else
|
||
result = XDataCenter.PartnerManager.GetCarryPartnerEntityByCarrierId(id)
|
||
end
|
||
return result
|
||
end
|
||
|
||
function XUiBattleRoleRoomDefaultProxy:GetIsShowRoleBGEffect()
|
||
return true
|
||
end
|
||
|
||
-- 获取子面板数据,主要用来增加编队界面自身玩法信息,就不用污染通用的预制体
|
||
--[[
|
||
return : {
|
||
assetPath : 资源路径
|
||
proxy : 子面板代理
|
||
proxyArgs : 子面板SetData传入的参数列表
|
||
}
|
||
]]
|
||
function XUiBattleRoleRoomDefaultProxy:GetChildPanelData()
|
||
return nil
|
||
end
|
||
|
||
-- 获取XUiBattleRoomRoleDetail代理,默认XUiBattleRoomRoleDetailDefaultProxy
|
||
-- return : 继承自XUiBattleRoomRoleDetailDefaultProxy类或匿名类
|
||
function XUiBattleRoleRoomDefaultProxy:GetRoleDetailProxy()
|
||
return nil
|
||
end
|
||
|
||
-- 获取是否能够进入战斗,主要检查队伍设置是否正确,是否满足关卡配置的强制性条件
|
||
-- team : XTeam
|
||
-- return : bool
|
||
function XUiBattleRoleRoomDefaultProxy:GetIsCanEnterFight(team, stageId)
|
||
-- 检查队长是否为空
|
||
if team:GetCaptainPosEntityId() == 0 then
|
||
return false, CS.XTextManager.GetText("TeamManagerCheckCaptainNil")
|
||
end
|
||
-- 检查首发位置是否为空
|
||
if team:GetFirstFightPosEntityId() == 0 then
|
||
return false, CS.XTextManager.GetText("TeamManagerCheckFirstFightNil")
|
||
end
|
||
-- 检查关卡开启条件
|
||
return self:CheckStageForceConditionWithTeamEntityId(team, stageId)
|
||
end
|
||
|
||
-- 检查是否满足关卡配置的强制性条件
|
||
-- return : bool
|
||
function XUiBattleRoleRoomDefaultProxy:CheckStageForceConditionWithTeamEntityId(team, stageId, showTip)
|
||
local fubenManager = XDataCenter.FubenManager
|
||
local _, forceConditionIds = fubenManager.GetConditonByMapId(stageId)
|
||
return fubenManager.CheckFightConditionByTeamData(forceConditionIds, team:GetEntityIds(), showTip)
|
||
end
|
||
|
||
-- 进入战斗
|
||
-- team : XTeam
|
||
-- stageId : number
|
||
function XUiBattleRoleRoomDefaultProxy:EnterFight(team, stageId, challengeCount, isAssist)
|
||
local stageConfig = XDataCenter.FubenManager.GetStageCfg(stageId)
|
||
local teamId = team:GetId()
|
||
local isAssist = isAssist
|
||
local challengeCount = challengeCount
|
||
XDataCenter.FubenManager.EnterFight(stageConfig, teamId, isAssist, challengeCount)
|
||
end
|
||
|
||
-- 检查是否能够编辑队伍,关卡若是配置了固定机器人为不可编辑
|
||
function XUiBattleRoleRoomDefaultProxy:CheckIsCanEditorTeam(stageId, showTip)
|
||
if showTip == nil then showTip = true end
|
||
if #XDataCenter.FubenManager.GetStageCfg(stageId).RobotId > 0 then
|
||
if showTip then
|
||
XUiManager.TipError(XUiHelper.GetText("NewRoomSingleCannotSetRobot"))
|
||
end
|
||
return false
|
||
end
|
||
return true
|
||
end
|
||
|
||
-- 获取编队界面左下角提示信息,可追加自身玩法的信息
|
||
-- return : { "提示1", ... }
|
||
function XUiBattleRoleRoomDefaultProxy:GetTipDescs()
|
||
return {}
|
||
end
|
||
|
||
-- 获取编队能获取到所有实体,只有在关卡配置AISuggestType为XFubenConfigs.AISuggestType并拥有机器人时要实现
|
||
-- 目前只用来对比队伍内角色和已拥有相同试玩角色战力高低提示,可参考XUiBattleRoomRoleDetailDefaultProxy.GetEntities
|
||
-- return : { ... }
|
||
function XUiBattleRoleRoomDefaultProxy:GetEntities()
|
||
return {}
|
||
end
|
||
|
||
-- return : bool 是否开启自动关闭检查, number 自动关闭的时间戳(秒), function 每秒更新的回调 function(isClose) isClose标志是否到达结束时间
|
||
function XUiBattleRoleRoomDefaultProxy:GetAutoCloseInfo()
|
||
return false
|
||
end
|
||
|
||
-- 检查关卡机器人是否使用自定义代理,默认不使用传入的代理,使用回默认代理,可以走回统一界面,避免多系统代理冲突
|
||
-- return : bool
|
||
function XUiBattleRoleRoomDefaultProxy:CheckStageRobotIsUseCustomProxy(robotIds)
|
||
return #robotIds <= 0
|
||
end
|
||
|
||
-- 创建编队自定义提示的gameObject,默认放在所有提示的最下面
|
||
function XUiBattleRoleRoomDefaultProxy:CreateCustomTipGo(panel)
|
||
end
|
||
|
||
-- 过滤预设队伍实体Id
|
||
-- teamData : 旧系统的队伍数据
|
||
function XUiBattleRoleRoomDefaultProxy:FilterPresetTeamEntitiyIds(teamData)
|
||
return teamData
|
||
end
|
||
|
||
--######################## AOP ########################
|
||
|
||
function XUiBattleRoleRoomDefaultProxy:AOPOnStartBefore(rootUi)
|
||
|
||
end
|
||
|
||
function XUiBattleRoleRoomDefaultProxy:AOPOnStartAfter(rootUi)
|
||
|
||
end
|
||
|
||
function XUiBattleRoleRoomDefaultProxy:AOPOnEnableAfter(rootUi)
|
||
|
||
end
|
||
|
||
function XUiBattleRoleRoomDefaultProxy:AOPRefreshRoleInfosAfter(rootUi)
|
||
|
||
end
|
||
|
||
function XUiBattleRoleRoomDefaultProxy:AOPRefreshFightControlStateBefore(rootUi)
|
||
|
||
end
|
||
|
||
function XUiBattleRoleRoomDefaultProxy:AOPOnCharacterClickBefore(rootUi, index)
|
||
|
||
end
|
||
|
||
function XUiBattleRoleRoomDefaultProxy:AOPOnRefreshPartnersBefore(self)
|
||
|
||
end
|
||
|
||
function XUiBattleRoleRoomDefaultProxy:CheckIsCanDrag()
|
||
return true
|
||
end
|
||
|
||
function XUiBattleRoleRoomDefaultProxy:AOPHideCharacterLimits()
|
||
return false
|
||
end
|
||
|
||
function XUiBattleRoleRoomDefaultProxy:ClearErrorTeamEntityId(...)
|
||
XEntityHelper.ClearErrorTeamEntityId(...)
|
||
end
|
||
|
||
function XUiBattleRoleRoomDefaultProxy:AOPGoPartnerCarry()
|
||
return false
|
||
end
|
||
|
||
-- 该界面是否启用q版模型 默认用愚人节检测
|
||
function XUiBattleRoleRoomDefaultProxy:CheckUseCuteModel()
|
||
return XDataCenter.AprilFoolDayManager.IsInCuteModelTime()
|
||
end
|
||
|
||
function XUiBattleRoleRoomDefaultProxy:AOPOnClickFight()
|
||
return false
|
||
end
|
||
|
||
return XUiBattleRoleRoomDefaultProxy |