168 lines
5.4 KiB
C#
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.Load();
|
|
}
|
|
|
|
// 隐藏诊所
|
|
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.Load();
|
|
}
|
|
|
|
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.Load();
|
|
}
|
|
}
|
|
|
|
public void SetArgs(string arg)
|
|
{
|
|
_configName = arg.Trim();
|
|
}
|
|
}
|
|
} |