151 lines
5.9 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|