local XUiFavorabilityNew = XLuaUiManager.Register(XLuaUi, "UiFavorabilityNew") local XUiPanelSignBoard = require("XUi/XUiMain/XUiChildView/XUiPanelSignBoard") local XFavorabilityType = { UILikeMain = 1, UILikeSwitchRole = 2, UILikeFile = 3, UILikePlot = 4, UILikeGift = 5, } local XQualityManager = CS.XQualityManager.Instance local LowPowerValue = CS.XGame.ClientConfig:GetFloat("UiMainLowPowerValue") local BatteryComponent = CS.XUiBattery function XUiFavorabilityNew:OnAwake() local curSceneId = XDataCenter.PhotographManager.GetCurSceneId() local curSceneTemplate = XDataCenter.PhotographManager.GetSceneTemplateById(curSceneId) local curSceneUrl, _ = XSceneModelConfigs.GetSceneAndModelPathById(curSceneTemplate.SceneModelId) local modelUrl = self:GetDefaultUiModelUrl() self:LoadUiScene(curSceneUrl, modelUrl, function() self:OnUiSceneLoaded() end, false) end function XUiFavorabilityNew:OnStart() self.CvType = CS.XAudioManager.CvType self:OpenMainView(true) XDataCenter.FavorabilityManager.BoardMutualRequest() local characterId = self:GetCurrFavorabilityCharacter() self.RedPointSwitchId = XRedPointManager.AddRedPointEvent(self.ImgReddot, nil, self, { XRedPointConditions.Types.CONDITION_FAVORABILITY_RED }, { CharacterId = characterId }) end function XUiFavorabilityNew:OnEnable() if self.SignBoard then self.SignBoard:OnEnable() end self:RefreshSelectedModel() if self.FavorabilityMain then self.FavorabilityMain:UpdateAllInfos() end end function XUiFavorabilityNew:OnDisable() if self.SignBoard then self.SignBoard:OnDisable() end end function XUiFavorabilityNew:OnDestroy() if self.SignBoard then self.SignBoard:OnDestroy() end self.FavorabilityMain:OnClose() self.CurrentCharacterId = nil end function XUiFavorabilityNew:SetCurrFavorabilityCharacter(characterId) self.CurrentCharacterId = characterId end function XUiFavorabilityNew:GetCurrFavorabilityCharacter() return self.CurrentCharacterId end function XUiFavorabilityNew:OnReleaseInst() return self.FavorabilityMain:GetReleaseData() end function XUiFavorabilityNew:OnResume(value) local curselectCharacterId = value.CurrentCharacterId if curselectCharacterId then self:SetCurrFavorabilityCharacter(curselectCharacterId) end self.FavorabilityMain:UpdateResume(value) end function XUiFavorabilityNew:OnGetEvents() return { XEventId.EVENT_FAVORABILITY_MAIN_REFRESH, XEventId.EVENT_FAVORABILITY_RUMORS_PREVIEW, XEventId.EVENT_FAVORABILITY_ON_GIFT_CHANGED } end function XUiFavorabilityNew:OnNotify(evt, ...) local args = { ... } if evt == XEventId.EVENT_FAVORABILITY_MAIN_REFRESH then self.FavorabilityMain:UpdateAllInfos(true) self:OnCurrentCharacterFavorabilityLevelChanged(args[1]) elseif evt == XEventId.EVENT_FAVORABILITY_RUMORS_PREVIEW then self:OnPreView(args) elseif evt == XEventId.EVENT_FAVORABILITY_ON_GIFT_CHANGED then self.FavorabilityMain:UpdatePreviewExp(args) end end function XUiFavorabilityNew:OnBtnMainUIClick() self:SetCurrFavorabilityCharacter(nil) XLuaUiManager.RunMain() end function XUiFavorabilityNew:OnBtnMaskClick() self.PanelPreView.gameObject:SetActiveEx(false) end function XUiFavorabilityNew:InitUiAfterAuto() local characterId = self:GetCurrFavorabilityCharacter() characterId = (characterId == nil) and XDataCenter.DisplayManager.GetDisplayChar().Id or characterId self:SetCurrFavorabilityCharacter(characterId) self.FavorabilityChangeRole = XUiPanelFavorabilityExchangeRole.New(self.PanelFavorabilityExchangeRole, self) self.SignBoard = XUiPanelSignBoard.New(self.PanelFavorabilityBoard, self, XUiPanelSignBoard.SignBoardOpenType.FAVOR) self.SignBoard.OperateTrigger = false self.SignBoard:SetAutoPlay(true) self.FavorabilityMain = XUiPanelFavorabilityMain.New(self.PanelFavorabilityMain, self) self.BtnMask.CallBack = function() self:OnBtnMaskClick() end self.BtnSwitch.CallBack = function() self:OnBtnSwitchClick() end end function XUiFavorabilityNew:PlayChangeActionEffect() if self.ChangeActionEffect and self.WhetherPlayChangeActionEffect then self.ChangeActionEffect.gameObject:SetActiveEx(false) self.ChangeActionEffect.gameObject:SetActiveEx(true) end self.WhetherPlayChangeActionEffect = false end function XUiFavorabilityNew:SetWhetherPlayChangeActionEffect(value) self.WhetherPlayChangeActionEffect = value end -- [更换模型] function XUiFavorabilityNew:ChangeCharacterModel(templateId) self.SignBoard:SetDisplayCharacterId(templateId) self.SignBoard:RefreshCharacterModelById(templateId) self.SignBoard:ResetPlayList(templateId) end function XUiFavorabilityNew:RefreshSelectedModel() local characterId = self:GetCurrFavorabilityCharacter() characterId = (characterId == nil) and XDataCenter.DisplayManager.GetDisplayChar().Id or characterId self:SetCurrFavorabilityCharacter(characterId) self:ChangeCharacterModel(characterId) end -- [预览] function XUiFavorabilityNew:OnPreView(previewArgs) if previewArgs and previewArgs[1] then self.PanelPreView.gameObject:SetActiveEx(true) self:SetUiSprite(self.ImgPreview, previewArgs[1]) end end -- [标记显示的界面] function XUiFavorabilityNew:ChangeViewType(currViewType) self.LastViewType = self.CurrViewType self.CurrViewType = currViewType end -- [打开main:isAnim是否伴随动画] function XUiFavorabilityNew:OpenMainView(isAnim) self:RefreshSelectedModel() self.FavorabilityMain.GameObject:SetActiveEx(true) if isAnim then self.FavorabilityMain:RefreshDatas() else self.FavorabilityMain:UpdateDatas() end self.LastViewType = self.CurrViewType or XFavorabilityType.UILikeMain local characterId = self:GetCurrFavorabilityCharacter() XRedPointManager.Check(self.RedPointSwitchId, { CharacterId = characterId }) end function XUiFavorabilityNew:UpdateCamera(isChangeRoleOpen) self.PanelCamFarMain.gameObject:SetActiveEx(true) self.PanelCamFarrExchange.gameObject:SetActiveEx(not isChangeRoleOpen) self.PanelCamNearrExchange.gameObject:SetActiveEx(isChangeRoleOpen) end function XUiFavorabilityNew:UpdateBeginCamera(isOpen) self.PanelCamFarrBegin.gameObject:SetActiveEx(isOpen) self.PanelCamNearBegin.gameObject:SetActiveEx(not isOpen) end -- [打开切换角色] function XUiFavorabilityNew:OpenChangeRoleView() self:CloseOtherViewWhenExchagneRoleOpen(self.CurrViewType) self.FavorabilityChangeRole.GameObject:SetActiveEx(true) self.FavorabilityChangeRole:RefreshDatas() self:ChangeViewType(XFavorabilityType.UILikeSwitchRole) self:UpdateCamera(true) self.FavorabilityMain:SetTopControlActive(false) self:PlaySaftyAnimation("CharacterExchangeEnable") end -- [关闭切换角色,回到上一个界面] function XUiFavorabilityNew:CloseChangeRoleView() self:SetWhetherPlayChangeActionEffect(false) self:PlaySaftyAnimation("CharacterExchangeDisable", function() self.FavorabilityChangeRole.GameObject:SetActiveEx(false) self:OpenOtherViewWhenExchangeRoleClose(self.LastViewType) -- self.FavorabilityMain:UpdateAllInfos() self.FavorabilityMain:SetTopControlActive(true) end) end -- [打开档案界面] function XUiFavorabilityNew:OpenInformationView() self:ChangeViewType(XFavorabilityType.UILikeFile) end -- [打开剧情界面] function XUiFavorabilityNew:OpenPlotView() self:ChangeViewType(XFavorabilityType.UILikePlot) end -- [打开礼物界面] function XUiFavorabilityNew:OpenGiftView() self:ChangeViewType(XFavorabilityType.UILikeGift) end -- [关闭换人界面时打开上一个界面] function XUiFavorabilityNew:OpenOtherViewWhenExchangeRoleClose() self.FavorabilityMain:OpenFuncBtns() self:OpenMainView() end -- [打开换人界面时关闭其他界面]CloseOtherViewWhenExchagneRoleOpen function XUiFavorabilityNew:CloseOtherViewWhenExchagneRoleOpen() self.FavorabilityMain:CloseFuncBtns() end -- [切换角色] function XUiFavorabilityNew:OnBtnSwitchClick() self:SetWhetherPlayChangeActionEffect(false) self:StopCvContent() self:OpenChangeRoleView() end function XUiFavorabilityNew:PlayCvContent(cvId, cvType) if not self.SignBoard then return end self.SignBoard:Stop() self.SignBoard:Freeze() self.SignBoard:ShowContent(cvId, cvType) end function XUiFavorabilityNew:StopCvContent() if not self.SignBoard then return end self.SignBoard:CvStop() end function XUiFavorabilityNew:PauseCvContent() if not self.SignBoard then return end self.SignBoard:Freeze() end function XUiFavorabilityNew:ResumeCvContent() if not self.SignBoard then return end self.SignBoard:Resume() end function XUiFavorabilityNew:OnCurrentCharacterFavorabilityLevelChanged() local characterId = self:GetCurrFavorabilityCharacter() local favorUp = XSignBoardConfigs.GetSignBoardConfigByRoldIdAndCondition(characterId, XSignBoardEventType.FAVOR_UP) if favorUp and favorUp[1] and (not self.SignBoard:IsPlaying()) then self.SignBoard:ForcePlay(favorUp[1].Id) end end function XUiFavorabilityNew:PlaySubTabAnim() --self:PlaySaftyAnimation("YeMianTwo") end function XUiFavorabilityNew:PlayBaseTabAnim() --self:PlaySaftyAnimation("YeMianOne") end function XUiFavorabilityNew:PlaySaftyAnimation(animName, endCb, startCb) self:PlayAnimation(animName, function() if endCb then endCb() end XLuaUiManager.SetMask(false) end, function() if startCb then startCb() end XLuaUiManager.SetMask(true) end) end function XUiFavorabilityNew:OnUiSceneLoaded() self:SetGameObject() local root = self.UiModelGo self.PanelCamFarrExchange = self:FindVirtualCamera("PanelCamFarrExchange") self.PanelCamNearrExchange = self:FindVirtualCamera("PanelCamNearrExchange") self.PanelCamFarMain = self:FindVirtualCamera("CamFarMain") self.PanelCamFarrBegin = self:FindVirtualCamera("PanelCamFarrBegin") self.PanelCamNearBegin = self:FindVirtualCamera("PanelCamNearrBegin") self.ChangeActionEffect = self:FindVirtualCamera("ChangeActionEffect") self:InitUiAfterAuto() self:UpdateCamera(false) self:UpdateBatteryMode() end function XUiFavorabilityNew:UpdateBatteryMode() -- editor模式下 BatteryComponent.BatteryLevel 默认值为-1 if XQualityManager.IsSimulator and not BatteryComponent.DebugMode then return end local animationRoot = self.UiSceneInfo.Transform:Find("Animations") local toChargeTimeLine = animationRoot:Find("ToChargeTimeLine") local toFullTimeLine = animationRoot:Find("ToFullTimeLine") local fullTimeLine = animationRoot:Find("FullTimeLine") local chargeTimeLine = animationRoot:Find("ChargeTimeLine") toChargeTimeLine.gameObject:SetActiveEx(false) toFullTimeLine.gameObject:SetActiveEx(false) fullTimeLine.gameObject:SetActiveEx(false) chargeTimeLine.gameObject:SetActiveEx(false) local curSelectSceneId = XDataCenter.PhotographManager.GetCurSceneId() local particleGroupName = XDataCenter.PhotographManager.GetSceneTemplateById(curSelectSceneId).ParticleGroupName local chargeAnimator = nil if particleGroupName and particleGroupName ~= "" then local chargeAnimatorTrans = self.UiSceneInfo.Transform:FindTransform(particleGroupName) if chargeAnimatorTrans then chargeAnimator = chargeAnimatorTrans:GetComponent("Animator") else XLog.Error("Can't Find \"" .. particleGroupName .. "\", Plase Check \"ParticleGroupName\" In Share/PhotoMode/Background.tab") end end if BatteryComponent.IsCharging then --充电状态 if chargeAnimator then chargeAnimator:Play("Full") end fullTimeLine.gameObject:SetActiveEx(true) else if BatteryComponent.BatteryLevel > LowPowerValue then -- 比较电量 if chargeAnimator then chargeAnimator:Play("Full") end fullTimeLine.gameObject:SetActiveEx(true) else if chargeAnimator then chargeAnimator:Play("Low") end chargeTimeLine.gameObject:SetActiveEx(true) end end end