using System; using System.Collections; using AibisDream.Framework; using DG.Tweening; using UnityEngine; namespace AibisDream.FixSystem { public struct BlockPuzzleCue : IFixSceneCue { private const string puzzleName = "Game2"; private const float blockPuzzleScale = 1.6f; private static BlockPuzzleSystem BlockPuzzleSystem => FixSystemCenter.SystemDic.Get(); private static BodyModuleSystem BodyModuleSystem => FixSystemCenter.SystemDic.Get(); public FixSceneMode Mode => FixSceneMode.BlockPuzzle; public IEnumerator Enter(FixTransition transition) { // 基本操作(其实应该早就处理好了) yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule); BubbleSlotKit.Instance.LoadBubbles(BubbleSlotEnum.BodyModule); yield return TimelineCenter.Instance.PlayTimelineAsync(TimelineAssetRef.EngineModuleEnter); // 视角移动 var engineModule = BodyModuleSystem.FindBodyModuleByName("Heart"); Tween tween = RepairSystemManager.Instance.ScaleCurrentSystem(blockPuzzleScale, engineModule.transform.position); if (tween != null) { yield return tween.WaitForCompletion(); } // 初始化拼图 BlockPuzzleSystem.Initialize(puzzleName); // 开启遮罩 yield return FixPanelSystem.Instance.MaskFadeIn(); RepairSystemManager.Instance.SwitchSystem(); yield return new WaitForSeconds(0.5f); yield return FixPanelSystem.Instance.MaskFadeOut(); // 播放进场动画 yield return TimelineCenter.Instance.PlayTimelineAsync(TimelineAssetRef.CablePanelExit); yield return new WaitForSeconds(0.5f); yield return TimelineCenter.Instance.PlayTimelineAsync(TimelineAssetRef.BlockPuzzleEnter); // 解锁 BlockPuzzleSystem.SetLocked(false); } public IEnumerator Exit(FixTransition transition) { yield break; } } }