using System; using System.Collections; using AibisDream.Framework; using AibisDream.UI; using DG.Tweening; using UnityEngine; namespace AibisDream.FixSystem { public struct EmoCutCue : IFixSceneCue { public FixSceneMode Mode => FixSceneMode.EmoCut; public IEnumerator Enter(FixTransition transition) { var bodyModuleSystem = FixSystemCenter.SystemDic.Get(); var cuttingManager = FixSystemCenter.SystemDic.Get(); if (!CameraKit.Instance.EqualToCameraState(CameraEnum.BodyModule)) { bodyModuleSystem.SwitchModuleGroup(ModuleState.Head); yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule); } // Cut的气泡统一放在BodyModule下 BubbleSlotKit.Instance.LoadBubbles(BubbleSlotEnum.Cut); FixPanelSystem.GetRepairPanel()?.PullUpCable(); var bodyModule = bodyModuleSystem.FindBodyModuleByName("Emo"); if (bodyModule != null) { bodyModule.GetCutSpriteRenderer().sortingOrder = 100; bodyModule.GetCutTextSpriteRenderer().sortingOrder = 101; bodyModule.GetCutSpriteRenderer().color = new Color(1f, 1f, 1f, 1f); bodyModule.GetCutSpriteRenderer().GetComponentInChildren().color = new Color(1f, 1f, 1f, 1f); } // 相机切入前对齐所有模块的 CutText(不只是目标模块),避免特写里其它模块文字亮灭与舱外不一致 bodyModuleSystem.SyncAllCutTextsFromCondition(); yield return CameraKit.Instance.SwitchCamera(CameraEnum.CutEmo); yield return UIManager.Instance.GetPanel().FadeInAsync(0.1f); yield return CameraKit.Instance.SwitchCamera(CameraEnum.CutEmoDeep); yield return UIManager.Instance.GetPanel().FadeOutAsync(0.1f); yield return cuttingManager.StartCutting(bodyModule); } public IEnumerator Exit(FixTransition transition) { // 无 yield return UIManager.Instance.GetPanel().FadeInAsync(0.1f); var cuttingManager = FixSystemCenter.SystemDic.Get(); cuttingManager.ClearCutLine(); yield return CameraKit.Instance.SwitchCamera(CameraEnum.CutEmo); yield return UIManager.Instance.GetPanel().FadeOutAsync(0.1f); } } public struct MemoryCutCue : IFixSceneCue { public FixSceneMode Mode => FixSceneMode.MemoryCut; public IEnumerator Enter(FixTransition transition) { var bodyModuleSystem = FixSystemCenter.SystemDic.Get(); var cuttingManager = FixSystemCenter.SystemDic.Get(); if (!CameraKit.Instance.EqualToCameraState(CameraEnum.BodyModule)) { bodyModuleSystem.SwitchModuleGroup(ModuleState.Head); yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule); } // Cut的气泡统一放在BodyModule下 BubbleSlotKit.Instance.LoadBubbles(BubbleSlotEnum.Cut); FixPanelSystem.GetRepairPanel()?.PullUpCable(); var bodyModule = bodyModuleSystem.FindBodyModuleByName("Memory"); if (bodyModule != null) { bodyModule.GetCutSpriteRenderer().sortingOrder = 100; bodyModule.GetCutTextSpriteRenderer().sortingOrder = 101; bodyModule.GetCutSpriteRenderer().color = new Color(1f, 1f, 1f, 1f); bodyModule.GetCutSpriteRenderer().GetComponentInChildren().color = new Color(1f, 1f, 1f, 1f); } // 相机切入前对齐所有模块的 CutText(不只是目标模块),避免特写里其它模块文字亮灭与舱外不一致 bodyModuleSystem.SyncAllCutTextsFromCondition(); yield return CameraKit.Instance.SwitchCamera(CameraEnum.CutMemory); yield return UIManager.Instance.GetPanel().FadeInAsync(0.1f); yield return CameraKit.Instance.SwitchCamera(CameraEnum.CutMemoryDeep); yield return UIManager.Instance.GetPanel().FadeOutAsync(0.1f); yield return cuttingManager.StartCutting(bodyModule); } public IEnumerator Exit(FixTransition transition) { yield return UIManager.Instance.GetPanel().FadeInAsync(0.1f); var cuttingManager = FixSystemCenter.SystemDic.Get(); cuttingManager.ClearCutLine(); yield return CameraKit.Instance.SwitchCamera(CameraEnum.CutMemory); yield return UIManager.Instance.GetPanel().FadeOutAsync(0.1f); } } public struct LogicCutCue : IFixSceneCue { public FixSceneMode Mode => FixSceneMode.LogicCut; public IEnumerator Enter(FixTransition transition) { var cuttingManager = FixSystemCenter.SystemDic.Get(); var bodyModuleSystem = FixSystemCenter.SystemDic.Get(); if (!CameraKit.Instance.EqualToCameraState(CameraEnum.BodyModule)) { bodyModuleSystem.SwitchModuleGroup(ModuleState.Head); yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule); } // Cut的气泡统一放在BodyModule下 BubbleSlotKit.Instance.LoadBubbles(BubbleSlotEnum.Cut); FixPanelSystem.GetRepairPanel()?.PullUpCable(); var bodyModule = bodyModuleSystem.FindBodyModuleByName("Logic"); if (bodyModule != null) { bodyModule.GetCutSpriteRenderer().sortingOrder = 100; bodyModule.GetCutTextSpriteRenderer().sortingOrder = 101; bodyModule.GetCutSpriteRenderer().color = new Color(1f, 1f, 1f, 1f); bodyModule.GetCutSpriteRenderer().GetComponentInChildren().color = new Color(1f, 1f, 1f, 1f); } // 相机切入前对齐所有模块的 CutText(不只是目标模块),避免特写里其它模块文字亮灭与舱外不一致 bodyModuleSystem.SyncAllCutTextsFromCondition(); yield return CameraKit.Instance.SwitchCamera(CameraEnum.CutLogic); yield return UIManager.Instance.GetPanel().FadeInAsync(0.1f); yield return CameraKit.Instance.SwitchCamera(CameraEnum.CutLogicDeep); yield return UIManager.Instance.GetPanel().FadeOutAsync(0.1f); yield return cuttingManager.StartCutting(bodyModule); } public IEnumerator Exit(FixTransition transition) { yield return UIManager.Instance.GetPanel().FadeInAsync(0.1f); var cuttingManager = FixSystemCenter.SystemDic.Get(); cuttingManager.ClearCutLine(); yield return CameraKit.Instance.SwitchCamera(CameraEnum.CutLogic); yield return UIManager.Instance.GetPanel().FadeOutAsync(0.1f); } } }