using System; using System.Collections; using AibisDream.Framework; using AibisDream.UI; using DG.Tweening; using UnityEngine; namespace AibisDream.FixSystem { public struct UfCue : IFixSceneCue { public FixSceneMode Mode => FixSceneMode.UF; public IEnumerator Enter(FixTransition transition) { var ufSystem = FixSystemCenter.SystemDic.Get(); var eyeSystem = FixSystemCenter.SystemDic.Get(); // 先切BodyModule if (!CameraKit.Instance.EqualToCameraState(CameraEnum.BodyModule)) { yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule); } FixPanelSystem.GetRepairPanel()?.PullUpCable(); yield return CameraKit.Instance.SwitchCamera(CameraEnum.UF); yield return UIManager.Instance.GetPanel().FadeInAsync(0.5f); ufSystem.OpenUFView(); yield return CameraKit.Instance.SwitchCamera(CameraEnum.EyeDeep); eyeSystem.OnEnter(); BubbleSlotKit.Instance.LoadBubbles(BubbleSlotEnum.Eye); yield return UIManager.Instance.GetPanel().FadeOutAsync(0.5f); } public IEnumerator Exit(FixTransition transition) { float duration = 0.5f; var ufSystem = FixSystemCenter.SystemDic.Get(); var eyeSystem = FixSystemCenter.SystemDic.Get(); yield return UIManager.Instance.GetPanel().FadeInAsync(duration); eyeSystem.OnExit(); ufSystem.CloseUFView(); yield return CameraKit.Instance.SwitchCamera(CameraEnum.UF); yield return UIManager.Instance.GetPanel().FadeOutAsync(duration); } } public struct EyeCue : IFixSceneCue { public FixSceneMode Mode => FixSceneMode.Eye; public IEnumerator Enter(FixTransition transition) { var bodyModuleSystem = FixSystemCenter.SystemDic.Get(); bodyModuleSystem.SwitchModuleGroup(ModuleState.Head); var eyeSystem = FixSystemCenter.SystemDic.Get(); // 先切BodyModule if (!CameraKit.Instance.EqualToCameraState(CameraEnum.BodyModule)) { yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule); } //打开盖子 var eyeModule = bodyModuleSystem.FindBodyModuleByType(); yield return eyeModule.OpenEye(); FixPanelSystem.GetRepairPanel()?.PullUpCable(); yield return CameraKit.Instance.SwitchCamera(CameraEnum.Eye); yield return UIManager.Instance.GetPanel().FadeInAsync(0.5f); yield return CameraKit.Instance.SwitchCamera(CameraEnum.EyeDeep); eyeSystem.OnEnter(); BubbleSlotKit.Instance.LoadBubbles(BubbleSlotEnum.Eye); yield return UIManager.Instance.GetPanel().FadeOutAsync(0.5f); } public IEnumerator EnterImmediate(FixTransition transition) { var eyeSystem = FixSystemCenter.SystemDic.Get(); yield return CameraKit.Instance.SwitchCamera(CameraEnum.EyeDeep, true); eyeSystem.OnEnter(); BubbleSlotKit.Instance.LoadBubbles(BubbleSlotEnum.Eye); } public IEnumerator Exit(FixTransition transition) { var bodyModuleSystem = FixSystemCenter.SystemDic.Get(); float duration = 0.5f; var eyeSystem = FixSystemCenter.SystemDic.Get(); yield return UIManager.Instance.GetPanel().FadeInAsync(duration); yield return CameraKit.Instance.SwitchCamera(CameraEnum.Eye); eyeSystem.OnExit(); yield return new WaitForSeconds(0.1f); yield return UIManager.Instance.GetPanel().FadeOutAsync(duration); //关上 var eyeModule = bodyModuleSystem.FindBodyModuleByType(); yield return eyeModule.CloseEye(); yield return new WaitForSeconds(0.5f); } } public struct MemoryCue : IFixSceneCue { public FixSceneMode Mode => FixSceneMode.Memory; public IEnumerator Enter(FixTransition transition) { float duration = 0.5f; var memorySystem = FixSystemCenter.SystemDic.Get(); // 进入Memory前收起Task面板 FixPanelSystem.Instance.TaskPanel?.SetTemporarilyHidden(true); // 先切BodyModule if (!CameraKit.Instance.EqualToCameraState(CameraEnum.BodyModule)) { yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule); } yield return memorySystem.DropMemoryProjector(); FixPanelSystem.GetRepairPanel()?.PullUpCable(); yield return CameraKit.Instance.SwitchCamera(CameraEnum.Memory); yield return UIManager.Instance.GetPanel().FadeInAsync(duration); memorySystem.OnEnter(); yield return UIManager.Instance.GetPanel().FadeOutAsync(duration); BubbleSlotKit.Instance.LoadBubbles(BubbleSlotEnum.Memory); } public IEnumerator EnterImmediate(FixTransition transition) { var memorySystem = FixSystemCenter.SystemDic.Get(); FixPanelSystem.Instance.TaskPanel?.SetTemporarilyHidden(true, immediate: true); yield return memorySystem.DropMemoryProjector(); FixPanelSystem.GetRepairPanel()?.PullUpCable(); yield return CameraKit.Instance.SwitchCamera(CameraEnum.Memory, true); memorySystem.OnEnter(); BubbleSlotKit.Instance.LoadBubbles(BubbleSlotEnum.Memory); } public IEnumerator Exit(FixTransition transition) { float duration = 0.5f; var memorySystem = FixSystemCenter.SystemDic.Get(); yield return UIManager.Instance.GetPanel().FadeInAsync(duration); memorySystem.OnExit(); memorySystem.CloseMemoryView(); yield return UIManager.Instance.GetPanel().FadeOutAsync(duration); yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule); memorySystem.PullMemoryProjector(); // 退出Memory后恢复Task面板 FixPanelSystem.Instance.TaskPanel?.SetTemporarilyHidden(false); } } }