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

151 lines
5.9 KiB
C#

using System;
using System.Collections;
using AibisDream.Framework;
using AibisDream.UI;
using DG.Tweening;
using UnityEngine;
namespace AibisDream.FixSystem
{
public struct UfState : IFixState
{
public FixState GetState => FixState.UF;
public void SetArgs(string args)
{
}
public IEnumerator Enter()
{
var ufSystem = FixSystemCenter.SystemDic.Get<UFSystem>();
var eyeSystem = FixSystemCenter.SystemDic.Get<EyeSystem>();
// 先切BodyModule
if (!CameraKit.Instance.EqualToCameraState(CameraEnum.BodyModule))
{
yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule);
}
// 插头回到初始插孔
FixPanelSystem.GetRepairPanel<CablePanel>().ResetPlug();
// 切换相机
yield return CameraKit.Instance.SwitchCamera(CameraEnum.UF);
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeInAsync(0.5f);
ufSystem.OpenUFView();
yield return CameraKit.Instance.SwitchCamera(CameraEnum.EyeDeep);
eyeSystem.OnEnter();
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeOutAsync(0.5f);
var data = eyeSystem.bubbleSlotGroup.CollectData();
DialogUIManager.Instance.LoadBubbles(data);
}
public IEnumerator Exit()
{
float duration = 0.5f;
var ufSystem = FixSystemCenter.SystemDic.Get<UFSystem>();
var eyeSystem = FixSystemCenter.SystemDic.Get<EyeSystem>();
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeInAsync(duration);
eyeSystem.OnExit();
ufSystem.CloseUFView();
yield return CameraKit.Instance.SwitchCamera(CameraEnum.UF);
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeOutAsync(duration);
}
}
public struct EyeState : IFixState
{
public FixState GetState => FixState.Eye;
public void SetArgs(string args)
{
}
public IEnumerator Enter()
{
var bodyModuleSystem = FixSystemCenter.SystemDic.Get<BodyModuleSystem>();
bodyModuleSystem.SwitchModuleGroup(ModuleState.Head);
var eyeSystem = FixSystemCenter.SystemDic.Get<EyeSystem>();
// 先切BodyModule
if (!CameraKit.Instance.EqualToCameraState(CameraEnum.BodyModule))
{
yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule);
}
//打开盖子
var eyeModule = bodyModuleSystem.FindBodyModuleByType<EyeModule>();
yield return eyeModule.OpenEye();
// 插头回到初始插孔
FixPanelSystem.GetRepairPanel<CablePanel>().ResetPlug();
// 切换相机
yield return CameraKit.Instance.SwitchCamera(CameraEnum.Eye);
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeInAsync(0.5f);
yield return CameraKit.Instance.SwitchCamera(CameraEnum.EyeDeep);
eyeSystem.OnEnter();
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeOutAsync(0.5f);
var data = eyeSystem.bubbleSlotGroup.CollectData();
DialogUIManager.Instance.LoadBubbles(data);
}
public IEnumerator Exit()
{
var bodyModuleSystem = FixSystemCenter.SystemDic.Get<BodyModuleSystem>();
float duration = 0.5f;
var eyeSystem = FixSystemCenter.SystemDic.Get<EyeSystem>();
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeInAsync(duration);
yield return CameraKit.Instance.SwitchCamera(CameraEnum.Eye);
eyeSystem.OnExit();
yield return new WaitForSeconds(0.1f);
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeOutAsync(duration);
//关上
var eyeModule = bodyModuleSystem.FindBodyModuleByType<EyeModule>();
yield return eyeModule.CloseEye();
yield return new WaitForSeconds(0.5f);
}
}
public struct MemoryState : IFixState
{
public FixState GetState => FixState.Memory;
public void SetArgs(string args)
{
}
public IEnumerator Enter()
{
float duration = 0.5f;
var bodyModuleSystem = FixSystemCenter.SystemDic.Get<BodyModuleSystem>();
var memorySystem = FixSystemCenter.SystemDic.Get<MemoryProcess>();
// 先切BodyModule
if (!CameraKit.Instance.EqualToCameraState(CameraEnum.BodyModule))
{
yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule);
}
yield return memorySystem.DropMemoryProjector();
// 插头回到初始插孔
FixPanelSystem.GetRepairPanel<CablePanel>().ResetPlug();
// 相机聚焦到目标位
yield return CameraKit.Instance.SwitchCamera(CameraEnum.Memory);
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeInAsync(duration);
memorySystem.OnEnter();
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeOutAsync(duration);
var data = memorySystem.BubbleSlotGroup.CollectData();
DialogUIManager.Instance.LoadBubbles(data);
}
public IEnumerator Exit()
{
float duration = 0.5f;
var memorySystem = FixSystemCenter.SystemDic.Get<MemoryProcess>();
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeInAsync(duration);
memorySystem.OnExit();
memorySystem.CloseMemoryView();
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeOutAsync(duration);
yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule);
memorySystem.PullMemoryProjector();
}
}
}