using System; using System.Collections; using AibisDream.Framework; using AibisDream.UI; using DG.Tweening; using UnityEngine; namespace AibisDream.FixSystem { public struct BlockPuzzleState : IFixState { 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 FixState GetState => FixState.BlockPuzzle; public void SetArgs(string args) { } public IEnumerator Enter() { // 基本操作(其实应该早就处理好了) yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule); var bubbleData = FixPanelSystem.Instance.BubbleSlotGroup.CollectData(); DialogUIManager.Instance.LoadBubbles(bubbleData); 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() { yield break; } } }