Files
aibis-dream/Assets/Scripts/FixSystemNew/StateTransition/ClinicTransition.cs
T
2025-01-08 11:41:20 +08:00

168 lines
5.4 KiB
C#

using System.Collections;
using AibisDream.Framework;
using DG.Tweening;
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);
// 激活
ITransitionCommand.SetBodyModuleSystemActive(true);
// 加载BodyModuleSystem
if (!string.IsNullOrEmpty(_configName))
{
bodyModuleSystem.CurDataKey = _configName;
bodyModuleSystem.LoadLevel();
}
// 隐藏诊所
clinicSystem.gameObject.SetActive(false);
// 播下音频
AudioManager.PlayAmb1Audio("amb_main");
// 黑屏淡出
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 clinicSystem = FixSystemCenter.SystemDic.Get<ClinicSystem>();
var engineSystem = FixSystemCenter.SystemDic.Get<EngineSystem>();
// 黑屏
yield return MainUIController.Instance?.FadeInSync(FadeDuration);
// 激活
ITransitionCommand.SetBodyModuleSystemActive(true);
// 隐藏诊所
clinicSystem.gameObject.SetActive(false);
AudioManager.PlayAmb1Audio("amb_main");
// 黑屏淡出
yield return MainUIController.Instance?.FadeOutSync(FadeDuration);
// 移动相机
yield return CameraKit.Instance.TransCameraAsync(CameraPos, OrthographicSize, Duration);
// 开启引擎玩法
if (!string.IsNullOrEmpty(_configName))
{
engineSystem.CurDataKey = _configName;
engineSystem.LoadLevel();
}
yield return engineSystem.OpenCover().WaitForCompletion();
}
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;
private bool _playLink;
public IEnumerator Execute()
{
var coolingSystem = FixSystemCenter.SystemDic.Get<CoolingSystem>();
// 移动相机
yield return CameraKit.Instance.TransCameraAsync(CameraPos, Duration);
// 打开泵机
coolingSystem.gameObject.SetActive(true);
yield return coolingSystem.OpenCoolingSystem();
// 播放插线动画
if (_playLink)
{
yield return coolingSystem.LinkTube();
}
}
public void SetArgs(string arg)
{
_playLink = !string.IsNullOrEmpty(arg);
}
}
public struct CoolingToClinicCommand : ITransitionCommand
{
public IEnumerator Execute()
{
var cooling = FixSystemCenter.SystemDic.Get<CoolingSystem>();
yield return cooling.CloseBottleUI();
yield return cooling.CloseCoolingSystem();
yield return new WaitForSeconds(1f);
yield return CameraKit.Instance.ReturnInitCamera(2f);
}
public void SetArgs(string arg)
{
// 没有需要设置的
}
}
public struct ClinicToGearCommand : ITransitionCommand
{
// 引擎相机设置
private static readonly Vector3 CameraPos = new(-1.09f, -0.07f, -10);
private const float OrthographicSize = 1.6f;
private const float Duration = 2f;
private string _configName;
public IEnumerator Execute()
{
var clinicSystem = FixSystemCenter.SystemDic.Get<ClinicSystem>();
var gearSystem = FixSystemCenter.SystemDic.Get<GearSystem>();
// 激活
ITransitionCommand.SetBodyModuleSystemActive(true);
// 隐藏诊所
clinicSystem.gameObject.SetActive(false);
AudioManager.PlayAmb1Audio("amb_main");
// 移动相机
yield return CameraKit.Instance.TransCameraAsync(CameraPos, OrthographicSize, Duration);
// 开启引擎玩法
if (!string.IsNullOrEmpty(_configName))
{
gearSystem.CurDataKey = _configName;
gearSystem.LoadLevel();
}
}
public void SetArgs(string arg)
{
_configName = arg.Trim();
}
}
}