forked from endernon/PGRData
208 lines
7.1 KiB
Lua
208 lines
7.1 KiB
Lua
|
local XUiCharacterSystemV2P6 = XLuaUiManager.Register(XLuaUi, "UiCharacterSystemV2P6")
|
|||
|
local XUiPanelModelV2P6 = require("XUi/XUiCharacterV2P6/Grid/XUiPanelModelV2P6")
|
|||
|
local XUiPanelRoleModel = require("XUi/XUiCharacter/XUiPanelRoleModel")
|
|||
|
local XSpecialTrainActionRandom = require("XUi/XUiSpecialTrainBreakthrough/XSpecialTrainActionRandom")
|
|||
|
|
|||
|
function XUiCharacterSystemV2P6:OnAwake()
|
|||
|
---@type XCharacterAgency
|
|||
|
local ag = XMVCA:GetAgency(ModuleId.XCharacter)
|
|||
|
self.CharacterAgency = ag
|
|||
|
|
|||
|
self.OpenChildStack = XStack.New()
|
|||
|
self.CurCharacter = nil --所有的子界面都通过该字段同步、获取角色
|
|||
|
self.FilterCurSelectTagBtnName = nil --同步子界面的筛选器标签。子界面切换了标签后,成员界面的标签也要切换
|
|||
|
self:SetPanelAsset(XDataCenter.ItemManager.ItemId.FreeGem, XDataCenter.ItemManager.ItemId.ActionPoint, XDataCenter.ItemManager.ItemId.Coin)
|
|||
|
|
|||
|
self:InitModel()
|
|||
|
self:InitButton()
|
|||
|
|
|||
|
XEventManager.AddEventListener(XEventId.EVENT_CHARACTER_CHANGE_SYNC_SYSTEM, self.SetCurCharacter, self)
|
|||
|
end
|
|||
|
|
|||
|
function XUiCharacterSystemV2P6:InitButton()
|
|||
|
XUiHelper.RegisterClickEvent(self, self.BtnBack, self.OnBtnBackClick)
|
|||
|
XUiHelper.RegisterClickEvent(self, self.BtnMainUi, function() XLuaUiManager.RunMain() end)
|
|||
|
self:BindHelpBtn(self.BtnHelp, "UiCharacterSystemV2P6")
|
|||
|
end
|
|||
|
|
|||
|
function XUiCharacterSystemV2P6:InitModel()
|
|||
|
-- 公用的model
|
|||
|
---@type XUiPanelModelV2P6
|
|||
|
self.PanelModel = XUiPanelModelV2P6.New(self.UiModelGo, self) -- 3d镜头
|
|||
|
self.RoleModelPanel = XUiPanelRoleModel.New(self.PanelModel.PanelRoleModel, self.Name, nil, true, nil, true)
|
|||
|
self.CuteRandomController = XSpecialTrainActionRandom.New()
|
|||
|
end
|
|||
|
|
|||
|
-- 子界面通过该接口同步资源栏物品
|
|||
|
function XUiCharacterSystemV2P6:SetPanelAsset(...)
|
|||
|
self.AssetPanel = XUiPanelAsset.New(self, self.PanelAsset, ...)
|
|||
|
end
|
|||
|
|
|||
|
-- 子界面通过该接口设置相机
|
|||
|
function XUiCharacterSystemV2P6:SetCamera(targetIndex)
|
|||
|
self.PanelModel:SetCamera(targetIndex)
|
|||
|
end
|
|||
|
|
|||
|
-- 子界面通过该接口同步角色
|
|||
|
function XUiCharacterSystemV2P6:SetCurCharacter(char)
|
|||
|
if not char then
|
|||
|
return
|
|||
|
end
|
|||
|
self.CurCharacter = char
|
|||
|
end
|
|||
|
|
|||
|
-- 子界面通过该接口同步3d角色模型
|
|||
|
function XUiCharacterSystemV2P6:RefreshRoleModel(cb)
|
|||
|
if not self.CurCharacter then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if self.CuteRandomController then
|
|||
|
self.CuteRandomController:Stop()
|
|||
|
end
|
|||
|
|
|||
|
self.PanelModel.ImgEffectHuanren.gameObject:SetActiveEx(false)
|
|||
|
self.PanelModel.ImgEffectHuanren1.gameObject:SetActiveEx(false)
|
|||
|
|
|||
|
local subCb = function (model)
|
|||
|
-- 切换特效 只有换人才播放
|
|||
|
if model ~= self.CurModelTransform then
|
|||
|
if self.CharacterAgency:GetIsIsomer(self.CurCharacter.Id) then
|
|||
|
self.PanelModel.ImgEffectHuanren1.gameObject:SetActiveEx(true)
|
|||
|
else
|
|||
|
self.PanelModel.ImgEffectHuanren.gameObject:SetActiveEx(true)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- 适配看特效球text的相机位置
|
|||
|
self.PanelModel:FixUiCameraMainToEffectBall()
|
|||
|
self.CurModelTransform = model
|
|||
|
|
|||
|
if cb then
|
|||
|
cb(model)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
--MODEL_UINAME对应UiModelTransform表,设置模型位置
|
|||
|
if XDataCenter.AprilFoolDayManager.IsInCuteModelTime() and XCharacterCuteConfig.CheckHasCuteModel(self.CurCharacter.Id) then
|
|||
|
self.RoleModelPanel:UpdateCuteModel(nil, self.CurCharacter.Id, nil, nil, nil, nil, true, nil, self.Name)
|
|||
|
|
|||
|
if self.Name == "UiCharacterSystemV2P6" then
|
|||
|
for index, model in pairs(self.RoleModelPanel.RoleModelPool) do
|
|||
|
local collider = model.Model.transform:GetComponentInChildren(typeof(CS.UnityEngine.CapsuleCollider))
|
|||
|
if collider ~= nil then
|
|||
|
collider.enabled = false
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
self.CuteRandomController:SetAnimator(self.RoleModelPanel:GetAnimator(), {}, self.RoleModelPanel)
|
|||
|
self.CuteRandomController:Play()
|
|||
|
else
|
|||
|
self.RoleModelPanel:UpdateCharacterModel(self.CurCharacter.Id, self.PanelRoleModel, self.Name, subCb)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiCharacterSystemV2P6:OnStart(initCharId, skipArgs)
|
|||
|
initCharId = XRobotManager.CheckIdToCharacterId(initCharId)
|
|||
|
self.InitCharId = initCharId
|
|||
|
self.SkipArgs = skipArgs
|
|||
|
end
|
|||
|
|
|||
|
function XUiCharacterSystemV2P6:OnEnable()
|
|||
|
if self.IsUiInit then
|
|||
|
return
|
|||
|
end
|
|||
|
-- 整个生命周期只触发一次
|
|||
|
if not self.IsUiInit then
|
|||
|
if self.SkipArgs then
|
|||
|
self:OpenBySkipArgs()
|
|||
|
else
|
|||
|
self:OpenChildUi("UiCharacterV2P6")
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
self.IsUiInit = true
|
|||
|
end
|
|||
|
|
|||
|
function XUiCharacterSystemV2P6:OnDisable()
|
|||
|
self.PanelModel.ImgEffectHuanren.gameObject:SetActiveEx(false)
|
|||
|
self.PanelModel.ImgEffectHuanren1.gameObject:SetActiveEx(false)
|
|||
|
end
|
|||
|
|
|||
|
function XUiCharacterSystemV2P6:OnDestroy()
|
|||
|
XEventManager.RemoveEventListener(XEventId.EVENT_CHARACTER_CHANGE_SYNC_SYSTEM, self.SetCurCharacter, self)
|
|||
|
if self.CuteRandomController then
|
|||
|
self.CuteRandomController:Stop()
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiCharacterSystemV2P6:OpenBySkipArgs()
|
|||
|
local arg = self.SkipArgs
|
|||
|
if arg == XEnumConst.CHARACTER.SkipEnumV2P6.Character then
|
|||
|
self:OpenChildUi("UiCharacterV2P6")
|
|||
|
elseif arg == XEnumConst.CHARACTER.SkipEnumV2P6.PropertyLvUp then
|
|||
|
self:OpenChildUi("UiCharacterPropertyV2P6")
|
|||
|
elseif arg == XEnumConst.CHARACTER.SkipEnumV2P6.PropertyGrade then
|
|||
|
self:OpenChildUi("UiCharacterPropertyV2P6", 2)
|
|||
|
elseif arg == XEnumConst.CHARACTER.SkipEnumV2P6.PropertySkill then
|
|||
|
self:OpenChildUi("UiCharacterPropertyV2P6", 3)
|
|||
|
else
|
|||
|
self:OpenChildUi("UiCharacterV2P6")
|
|||
|
XLog.Error("SkipArgs传入的枚举错误 查看 XEnumConst.CHARACTER.SkipEnumV2P6,传入", self.SkipArgs)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiCharacterSystemV2P6:OpenChildUi(uiname, ...)
|
|||
|
self:OpenOneChildUi(uiname, ...)
|
|||
|
-- 打开子界面时转正model
|
|||
|
if self.OpenChildStack:Peek() == uiname then
|
|||
|
return
|
|||
|
end
|
|||
|
self.OpenChildStack:Push(uiname)
|
|||
|
|
|||
|
-- 打开子ui时转正角色
|
|||
|
self:ReturnModelToInitRotation()
|
|||
|
end
|
|||
|
|
|||
|
-- 回正角色转向
|
|||
|
function XUiCharacterSystemV2P6:ReturnModelToInitRotation()
|
|||
|
local targetModelTransform = self.RoleModelPanel:GetTransform()
|
|||
|
if targetModelTransform then
|
|||
|
targetModelTransform:DOLocalRotate(Vector3.zero, 0.4)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiCharacterSystemV2P6:OpenLastChildUi()
|
|||
|
if not self.OpenChildStack or self.OpenChildStack:Count() < 2 then
|
|||
|
return
|
|||
|
end
|
|||
|
local uiName = self.OpenChildStack:Peek()
|
|||
|
self.OpenChildStack:Pop()
|
|||
|
uiName = self.OpenChildStack:Peek()
|
|||
|
|
|||
|
self:OpenChildUi(uiName)
|
|||
|
end
|
|||
|
|
|||
|
function XUiCharacterSystemV2P6:OnBtnBackClick()
|
|||
|
-- 给子界面复写backBtn
|
|||
|
if self.BackTrigger then
|
|||
|
self.BackTrigger()
|
|||
|
self.BackTrigger = nil
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
-- 子界面关闭时,打开上一次打开的子界面
|
|||
|
if self.OpenChildStack and self.OpenChildStack:Count() >= 2 then
|
|||
|
self:OpenLastChildUi()
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
self:Close()
|
|||
|
end
|
|||
|
|
|||
|
function XUiCharacterSystemV2P6:SetBackTrigger(cb)
|
|||
|
self.BackTrigger = cb
|
|||
|
end
|
|||
|
|
|||
|
return XUiCharacterSystemV2P6
|