163 lines
4.6 KiB
C#
163 lines
4.6 KiB
C#
using System;
|
|
using System.Collections;
|
|
using AibisDream.Framework;
|
|
using AibisDream.UI;
|
|
using DG.Tweening;
|
|
using UnityEngine;
|
|
|
|
namespace AibisDream.FixSystem
|
|
{
|
|
public struct DefaultState : IFixState
|
|
{
|
|
public FixState GetState => FixState.Default;
|
|
|
|
public IEnumerator Enter()
|
|
{
|
|
CameraKit.Instance.SwitchCamera(CameraEnum.Clinic, true);
|
|
var clinicSystem = FixSystemCenter.SystemDic.Get<ClinicSystem>();
|
|
var data = clinicSystem.bubbleSlotGroup.CollectData();
|
|
DialogUIManager.Instance.LoadBubbles(data);
|
|
yield break;
|
|
}
|
|
|
|
public IEnumerator Exit()
|
|
{
|
|
yield break;
|
|
}
|
|
}
|
|
|
|
public struct ClinicState : IFixState
|
|
{
|
|
public FixState GetState => FixState.Clinic;
|
|
|
|
public void SetArgs(string args)
|
|
{
|
|
// 无
|
|
}
|
|
|
|
public IEnumerator Enter()
|
|
{
|
|
// 先加载对话气泡,避免 Yarn 对话(如 测试 节点 me: 释放log)在相机切换完成前执行时找不到 Player 槽位
|
|
var clinicSystem = FixSystemCenter.SystemDic.Get<ClinicSystem>();
|
|
// 切换相机
|
|
yield return CameraKit.Instance.SwitchCamera(CameraEnum.Clinic);
|
|
var data = clinicSystem.bubbleSlotGroup.CollectData();
|
|
DialogUIManager.Instance.LoadBubbles(data);
|
|
}
|
|
|
|
public IEnumerator Exit()
|
|
{
|
|
// 无
|
|
yield break;
|
|
}
|
|
}
|
|
|
|
public struct BodyModuleState : IFixState
|
|
{
|
|
private string _args;
|
|
|
|
public FixState GetState => FixState.BodyModule;
|
|
|
|
public void SetArgs(string args)
|
|
{
|
|
// 设置参数
|
|
_args = args;
|
|
}
|
|
|
|
public IEnumerator Enter()
|
|
{
|
|
var bodyModuleSystem = FixSystemCenter.SystemDic.Get<BodyModuleSystem>();
|
|
var cablePanel = FixPanelSystem.GetRepairPanel<CablePanel>();
|
|
// 拔出插头
|
|
// 切换Body或Head
|
|
if (Enum.TryParse<ModuleState>(_args, out var moduleState))
|
|
{
|
|
bodyModuleSystem.SwitchModuleGroup(moduleState);
|
|
}
|
|
|
|
if (cablePanel != null && !FixPanelSystem.Instance.IsSystemOn)
|
|
{
|
|
// 切换相机
|
|
yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModuleCenter);
|
|
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeOutAsync(0.5f);
|
|
yield return new WaitForSeconds(0.5f);
|
|
yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule);
|
|
yield return FixPanelSystem.Instance.StartAllSystems();
|
|
}
|
|
else
|
|
{
|
|
FixPanelSystem.GetRepairPanel<CablePanel>().ResetPlug();
|
|
yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule);
|
|
}
|
|
|
|
// 加载气泡
|
|
var data = FixPanelSystem.Instance.BubbleSlotGroup.CollectData();
|
|
DialogUIManager.Instance.LoadBubbles(data);
|
|
|
|
// 开启交互
|
|
bodyModuleSystem.EnableSystem();
|
|
}
|
|
|
|
public IEnumerator Exit()
|
|
{
|
|
var bodyModuleSystem = FixSystemCenter.SystemDic.Get<BodyModuleSystem>();
|
|
// 拔出插头
|
|
FixPanelSystem.GetRepairPanel<CablePanel>().ResetPlug();
|
|
// 关闭交互
|
|
bodyModuleSystem.DisableSystem();
|
|
yield break;
|
|
}
|
|
}
|
|
|
|
public struct OpState : IFixState
|
|
{
|
|
public FixState GetState => FixState.Op;
|
|
|
|
public void SetArgs(string args)
|
|
{
|
|
// 无
|
|
}
|
|
|
|
public IEnumerator Enter()
|
|
{
|
|
if (!CameraKit.Instance.EqualToCameraState(CameraEnum.Op))
|
|
{
|
|
yield return CameraKit.Instance.SwitchCamera(CameraEnum.Op);
|
|
}
|
|
}
|
|
|
|
public IEnumerator Exit()
|
|
{
|
|
// 无
|
|
yield break;
|
|
}
|
|
}
|
|
|
|
public struct DreamState : IFixState
|
|
{
|
|
public FixState GetState => FixState.Dream;
|
|
|
|
public void SetArgs(string args)
|
|
{
|
|
// 无
|
|
}
|
|
|
|
public IEnumerator Enter()
|
|
{
|
|
if (!CameraKit.Instance.EqualToCameraState(CameraEnum.DreamCamera))
|
|
{
|
|
yield return CameraKit.Instance.SwitchCamera(CameraEnum.DreamCamera);
|
|
|
|
var openSystem = FixSystemCenter.SystemDic.Get<OpenSystem>();
|
|
DialogUIManager.Instance.LoadBubbles(openSystem.bubbleSlotGroup.CollectData());
|
|
}
|
|
}
|
|
|
|
public IEnumerator Exit()
|
|
{
|
|
// 无
|
|
yield break;
|
|
}
|
|
}
|
|
}
|