Files
aibis-dream/Assets/Scripts/FixSystemNew/StateTransition/ClinicTransition.cs
T
2024-12-25 22:21:44 +08:00

97 lines
3.2 KiB
C#

using System.Collections;
using AibisDream.Framework;
using UnityEngine;
namespace AibisDream.FixSystem
{
public struct ClinicToBodyModuleCommand : ITransitionCommand
{
private const float FadeDuration = 1f;
private string _configName;
public IEnumerator Execute()
{
var bodyModuleSystem = FixSystemCenter.SystemDic.Get<BodyModuleSystem>();
var clinicSystem = FixSystemCenter.SystemDic.Get<ClinicSystem>();
// 黑屏
yield return MainUIController.Instance.FadeInSync(FadeDuration);
// 加载BodyModuleSystem
bodyModuleSystem.CurDataKey = _configName;
bodyModuleSystem.Load();
// 隐藏诊所
clinicSystem.gameObject.SetActive(false);
// 黑屏淡出
yield return MainUIController.Instance.FadeOutSync(FadeDuration);
}
public void SetArgs(string arg)
{
// 添加参数
_configName = arg;
}
}
public struct ClinicToEngineCommand : ITransitionCommand
{
private const float FadeDuration = 0.5f;
// 引擎相机设置
private static readonly Vector3 CameraPos = new(-2.5f, 2.13f, -10);
private const float OrthographicSize = 2.5f;
private const float Duration = 2f;
private string _configName;
public IEnumerator Execute()
{
var bodyModuleSystem = FixSystemCenter.SystemDic.Get<BodyModuleSystem>();
var clinicSystem = FixSystemCenter.SystemDic.Get<ClinicSystem>();
var engineSystem = FixSystemCenter.SystemDic.Get<EngineSystem>();
// // 黑屏
yield return MainUIController.Instance.FadeInSync(FadeDuration);
// 隐藏诊所
clinicSystem.gameObject.SetActive(false);
// 激活插线系统
bodyModuleSystem.gameObject.SetActive(true);
// // 黑屏淡出
yield return MainUIController.Instance.FadeOutSync(FadeDuration);
// 移动相机
yield return CameraKit.Instance.TransCameraAsync(CameraPos, OrthographicSize, Duration);
// 开启引擎玩法
engineSystem.CurDataKey = _configName;
engineSystem.Load();
yield return engineSystem.OpenCoverAsync();
}
public void SetArgs(string arg)
{
_configName = arg;
}
}
public struct ClinicToCoolingCommand : ITransitionCommand
{
private static readonly Vector3 CameraPos = new(6.61f, 0, -10);
private const float Duration = 2f;
public IEnumerator Execute()
{
var coolingSystem = FixSystemCenter.SystemDic.Get<CoolingSystem>();
// 移动相机
yield return CameraKit.Instance.TransCameraAsync(CameraPos, Duration);
// 打开泵机
coolingSystem.gameObject.SetActive(true);
yield return coolingSystem.OpenCoolingSystem();
// 播放插线动画
yield return coolingSystem.LinkTube();
}
public void SetArgs(string arg)
{
// 没有需要设置的参数
}
}
}