Files
aibis-dream/Assets/Scripts/FixSystemNew/States/BlockPuzzleFixCue.cs
T

53 lines
2.1 KiB
C#

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<BlockPuzzleSystem>();
private static BodyModuleSystem BodyModuleSystem => FixSystemCenter.SystemDic.Get<BodyModuleSystem>();
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<BlockPuzzleSystem>();
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;
}
}
}