Ver.0.3.0.33
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using AibisDream.Framework;
|
||||
using AibisDream.Kit;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AibisDream.FixSystem
|
||||
@@ -8,61 +10,58 @@ namespace AibisDream.FixSystem
|
||||
{
|
||||
public FixState CurState => _curState.GetState;
|
||||
|
||||
private IState _curState;
|
||||
private string _curArgs;
|
||||
private IState<FixState> _curState;
|
||||
|
||||
public FixStateMachine()
|
||||
private StateMachine<FixState> _stateMachine;
|
||||
|
||||
private FixSystemData _data;
|
||||
|
||||
public FixStateMachine(FixSystemData data)
|
||||
{
|
||||
// 初始化为一个默认状态
|
||||
_curState = CreateState(FixState.Default, "");
|
||||
_data = data;
|
||||
_stateMachine = new StateMachine<FixState>(CreateState);
|
||||
_stateMachine.OnStateSwitch += state => EnumEventSystem.Global.Send(EventEnum.FixStateSwitch, state);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 播放诊所到场景的timeline
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public IEnumerator PlayClinicCut()
|
||||
public IEnumerator Init(FixState initState)
|
||||
{
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.CoolingMachine);
|
||||
yield return TimelineManager.Instance.PlayTimeline("ToBodyModule");
|
||||
_data.curState = initState;
|
||||
_data.args = "";
|
||||
yield return _stateMachine.Init(initState);
|
||||
}
|
||||
|
||||
public IEnumerator SwitchState(FixState nextState, string args = "")
|
||||
{
|
||||
if (CurState == nextState) yield break;
|
||||
|
||||
_curArgs = args;
|
||||
|
||||
yield return _curState?.Exit();
|
||||
|
||||
GameLoopManager.Instance?.UpdateFixState(nextState, _curArgs);
|
||||
_curState = CreateState(nextState, _curArgs);
|
||||
|
||||
EnumEventSystem.Global.Send(EventEnum.FixStateSwitch, nextState);
|
||||
yield return _curState.Enter();
|
||||
_data.curState = nextState;
|
||||
_data.args = args;
|
||||
yield return _stateMachine.SwitchState(nextState, args);
|
||||
}
|
||||
|
||||
public IEnumerator QuitState()
|
||||
{
|
||||
_curArgs = null;
|
||||
yield return _curState?.Exit();
|
||||
GameLoopManager.Instance?.UpdateFixState(FixState.Default, _curArgs);
|
||||
_curState = null;
|
||||
_data.curState = FixState.Default;
|
||||
yield return _stateMachine.QuitState();
|
||||
}
|
||||
|
||||
private static IState CreateState(FixState nextState, string args)
|
||||
private static IState<FixState> CreateState(FixState nextState, string args)
|
||||
{
|
||||
IState res = nextState switch
|
||||
IState<FixState> res = nextState switch
|
||||
{
|
||||
FixState.Clinic => new ClinicState(),
|
||||
FixState.Engine => new EngineState(),
|
||||
FixState.CoolingMachine => new CoolingMachineState(),
|
||||
FixState.BodyModule => new BodyModuleState(),
|
||||
FixState.Memory => new MemoryState(),
|
||||
FixState.Eye => new EyeState(),
|
||||
FixState.UF => new UfState(),
|
||||
FixState.Gear => new GearState(),
|
||||
_ => new ClinicState()
|
||||
FixState.Expression => new ExpressionState(),
|
||||
FixState.Emo => new EmoState(),
|
||||
FixState.Op => new OpState(),
|
||||
FixState.EmoCut => new EmoCutState(),
|
||||
FixState.MemoryCut => new MemoryCutState(),
|
||||
FixState.LogicCut => new LogicCutState(),
|
||||
FixState.Dream => new DreamState(),
|
||||
_ => new DefaultState()
|
||||
};
|
||||
|
||||
res.SetArgs(args);
|
||||
@@ -74,24 +73,37 @@ namespace AibisDream.FixSystem
|
||||
{
|
||||
Default,
|
||||
Clinic,
|
||||
CoolingMachine,
|
||||
BodyModule,
|
||||
Memory,
|
||||
Eye,
|
||||
UF,
|
||||
Expression,
|
||||
Engine,
|
||||
Gear
|
||||
Gear,
|
||||
Emo,
|
||||
Op,
|
||||
EmoCut,
|
||||
MemoryCut,
|
||||
LogicCut,
|
||||
Dream,
|
||||
}
|
||||
|
||||
public interface IState
|
||||
public struct DefaultState : IState<FixState>
|
||||
{
|
||||
public FixState GetState { get; }
|
||||
public void SetArgs(string args);
|
||||
public IEnumerator Enter();
|
||||
public IEnumerator Exit();
|
||||
public FixState GetState => FixState.Default;
|
||||
|
||||
public IEnumerator Enter()
|
||||
{
|
||||
yield break;
|
||||
}
|
||||
|
||||
public IEnumerator Exit()
|
||||
{
|
||||
yield break;
|
||||
}
|
||||
}
|
||||
|
||||
public struct ClinicState : IState
|
||||
public struct ClinicState : IState<FixState>
|
||||
{
|
||||
public FixState GetState => FixState.Clinic;
|
||||
|
||||
@@ -103,8 +115,12 @@ namespace AibisDream.FixSystem
|
||||
public IEnumerator Enter()
|
||||
{
|
||||
// 切换相机
|
||||
// yield return CameraKit.Instance.SwitchCamera(CameraEnum.CoolingMachine);
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.Clinic);
|
||||
// 注册对话气泡
|
||||
var clinicSystem = FixSystemCenter.SystemDic.Get<ClinicSystem>();
|
||||
var data = clinicSystem.bubbleSlotGroup.CollectData();
|
||||
BubbleGroup.Instance.LoadBubbles(data);
|
||||
DialogCanvasManager.Instance.SwitchDialogView(DialogViewType.StandardBubble);
|
||||
}
|
||||
|
||||
public IEnumerator Exit()
|
||||
@@ -114,23 +130,49 @@ namespace AibisDream.FixSystem
|
||||
}
|
||||
}
|
||||
|
||||
public struct BodyModuleState : IState
|
||||
public struct BodyModuleState : IState<FixState>
|
||||
{
|
||||
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 lightSystem = FixSystemCenter.SystemDic.Get<FixLightSystem>();
|
||||
// 拔出插头
|
||||
bodyModuleSystem.ResetPlug();
|
||||
// 切换相机
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule);
|
||||
// 切换Body或Head
|
||||
if (Enum.TryParse<ModuleState>(_args, out var moduleState))
|
||||
{
|
||||
bodyModuleSystem.SwitchModuleGroup(moduleState);
|
||||
}
|
||||
|
||||
if (lightSystem && !lightSystem.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 lightSystem.StartSystem();
|
||||
}
|
||||
else
|
||||
{
|
||||
bodyModuleSystem.ResetPlug();
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule);
|
||||
}
|
||||
|
||||
// 加载气泡
|
||||
var data = FixSystemCenter.SystemDic.Get<ScreenSystem>().BubbleSlotGroup.CollectData();
|
||||
BubbleGroup.Instance.LoadBubbles(data);
|
||||
DialogCanvasManager.Instance.SwitchDialogView(DialogViewType.StandardBubble);
|
||||
|
||||
// 开启交互
|
||||
bodyModuleSystem.EnableSystem();
|
||||
}
|
||||
@@ -147,7 +189,7 @@ namespace AibisDream.FixSystem
|
||||
}
|
||||
|
||||
|
||||
public struct GearState : IState
|
||||
public struct GearState : IState<FixState>
|
||||
{
|
||||
public FixState GetState => FixState.Gear;
|
||||
|
||||
@@ -163,9 +205,13 @@ namespace AibisDream.FixSystem
|
||||
// 先切BodyModule
|
||||
if (!CameraKit.Instance.EqualToCameraState(CameraEnum.BodyModule))
|
||||
{
|
||||
yield return MainUIController.Instance?.FadeInSync(0.5f);
|
||||
// 先切BodyModule
|
||||
var bodyModule = FixSystemCenter.SystemDic.Get<BodyModuleSystem>();
|
||||
bodyModule.SwitchModuleGroup(ModuleState.Body);
|
||||
|
||||
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeInAsync(0.5f);
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule);
|
||||
yield return MainUIController.Instance?.FadeOutSync(0.5f);
|
||||
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeOutAsync(0.5f);
|
||||
}
|
||||
|
||||
// 切换相机
|
||||
@@ -185,7 +231,7 @@ namespace AibisDream.FixSystem
|
||||
}
|
||||
}
|
||||
|
||||
public struct EngineState : IState
|
||||
public struct EngineState : IState<FixState>
|
||||
{
|
||||
public FixState GetState => FixState.Engine;
|
||||
|
||||
@@ -196,10 +242,12 @@ namespace AibisDream.FixSystem
|
||||
|
||||
public IEnumerator Enter()
|
||||
{
|
||||
var engineSystem = FixSystemCenter.SystemDic.Get<EngineSystem>();
|
||||
// 先切BodyModule
|
||||
if (!CameraKit.Instance.EqualToCameraState(CameraEnum.BodyModule))
|
||||
{
|
||||
var bodyModule = FixSystemCenter.SystemDic.Get<BodyModuleSystem>();
|
||||
bodyModule.SwitchModuleGroup(ModuleState.Body);
|
||||
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule);
|
||||
}
|
||||
|
||||
@@ -215,44 +263,7 @@ namespace AibisDream.FixSystem
|
||||
}
|
||||
}
|
||||
|
||||
public struct CoolingMachineState : IState
|
||||
{
|
||||
private bool _playLink;
|
||||
|
||||
public FixState GetState => FixState.CoolingMachine;
|
||||
|
||||
public void SetArgs(string args)
|
||||
{
|
||||
_playLink = !string.IsNullOrEmpty(args);
|
||||
}
|
||||
|
||||
public IEnumerator Enter()
|
||||
{
|
||||
var coolingSystem = FixSystemCenter.SystemDic.Get<CoolingSystem>();
|
||||
// 切相机
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.CoolingMachine);
|
||||
|
||||
// 打开泵机
|
||||
coolingSystem.gameObject.SetActive(true);
|
||||
yield return coolingSystem.OpenCoolingSystem();
|
||||
// 播放插线动画
|
||||
if (_playLink)
|
||||
{
|
||||
yield return coolingSystem.LinkTube();
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerator Exit()
|
||||
{
|
||||
var cooling = FixSystemCenter.SystemDic.Get<CoolingSystem>();
|
||||
|
||||
yield return cooling.CloseBottleUI();
|
||||
yield return cooling.CloseCoolingSystem();
|
||||
yield return new WaitForSeconds(1f);
|
||||
}
|
||||
}
|
||||
|
||||
public struct UfState : IState
|
||||
public struct UfState : IState<FixState>
|
||||
{
|
||||
public FixState GetState => FixState.UF;
|
||||
|
||||
@@ -263,8 +274,8 @@ namespace AibisDream.FixSystem
|
||||
public IEnumerator Enter()
|
||||
{
|
||||
var bodyModuleSystem = FixSystemCenter.SystemDic.Get<BodyModuleSystem>();
|
||||
var UFSystem = FixSystemCenter.SystemDic.Get<UFSystem>();
|
||||
var EyeSystem = FixSystemCenter.SystemDic.Get<EyeSystem>();
|
||||
var ufSystem = FixSystemCenter.SystemDic.Get<UFSystem>();
|
||||
var eyeSystem = FixSystemCenter.SystemDic.Get<EyeSystem>();
|
||||
// 先切BodyModule
|
||||
if (!CameraKit.Instance.EqualToCameraState(CameraEnum.BodyModule))
|
||||
{
|
||||
@@ -275,28 +286,30 @@ namespace AibisDream.FixSystem
|
||||
bodyModuleSystem.ResetPlug();
|
||||
// 切换相机
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.UF);
|
||||
yield return MainUIController.Instance?.FadeInSync(0.5f);
|
||||
UFSystem.OpenUFView();
|
||||
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeInAsync(0.5f);
|
||||
ufSystem.OpenUFView();
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.EyeDeep);
|
||||
EyeSystem.OnEnter();
|
||||
yield return MainUIController.Instance?.FadeOutSync(0.5f);
|
||||
eyeSystem.OnEnter();
|
||||
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeOutAsync(0.5f);
|
||||
var data = eyeSystem.bubbleSlotGroup.CollectData();
|
||||
BubbleGroup.Instance.LoadBubbles(data);
|
||||
}
|
||||
|
||||
public IEnumerator Exit()
|
||||
{
|
||||
float duration = 0.5f;
|
||||
var UFSystem = FixSystemCenter.SystemDic.Get<UFSystem>();
|
||||
float duration = 0.5f;
|
||||
var ufSystem = FixSystemCenter.SystemDic.Get<UFSystem>();
|
||||
var eyeSystem = FixSystemCenter.SystemDic.Get<EyeSystem>();
|
||||
yield return MainUIController.Instance?.FadeInSync(duration);
|
||||
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeInAsync(duration);
|
||||
eyeSystem.OnExit();
|
||||
UFSystem.CloseUFView();
|
||||
ufSystem.CloseUFView();
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.UF);
|
||||
yield return MainUIController.Instance?.FadeOutSync(duration);
|
||||
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeOutAsync(duration);
|
||||
yield return null;
|
||||
}
|
||||
}
|
||||
|
||||
public struct EyeState : IState
|
||||
public struct EyeState : IState<FixState>
|
||||
{
|
||||
public FixState GetState => FixState.Eye;
|
||||
|
||||
@@ -304,10 +317,8 @@ namespace AibisDream.FixSystem
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
public IEnumerator Enter()
|
||||
{
|
||||
//float duration = 0.5f;
|
||||
var bodyModuleSystem = FixSystemCenter.SystemDic.Get<BodyModuleSystem>();
|
||||
var eyeSystem = FixSystemCenter.SystemDic.Get<EyeSystem>();
|
||||
// 先切BodyModule
|
||||
@@ -317,18 +328,23 @@ namespace AibisDream.FixSystem
|
||||
}
|
||||
|
||||
//打开盖子
|
||||
SpriteRenderer sp= bodyModuleSystem.FindBodyModuleByName("Eye").transform.Find("Cover").GetComponent<SpriteRenderer>();
|
||||
sp.sprite=Resources.Load<Sprite>("Art/Fix/Peipei/Eye/视觉模块盖子打开A");
|
||||
SpriteRenderer sp = bodyModuleSystem.FindBodyModuleByName("Eye").transform.Find("Cover")
|
||||
.GetComponent<SpriteRenderer>();
|
||||
sp.sprite = Resources.Load<Sprite>("Art/Fix/Peipei/Eye/视觉模块盖子打开A");
|
||||
AudioManager.Instance.PlaySfx("event:/ActionFB/eye_open");
|
||||
yield return new WaitForSeconds(0.1f);
|
||||
sp.sprite=Resources.Load<Sprite>("Art/Fix/Peipei/Eye/视觉模块盖子打开B");
|
||||
sp.sprite = Resources.Load<Sprite>("Art/Fix/Peipei/Eye/视觉模块盖子打开B");
|
||||
// 插头回到初始插孔
|
||||
bodyModuleSystem.ResetPlug();
|
||||
// 切换相机
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.Eye);
|
||||
yield return MainUIController.Instance?.FadeInSync(0.5f);
|
||||
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeInAsync(0.5f);
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.EyeDeep);
|
||||
eyeSystem.OnEnter();
|
||||
yield return MainUIController.Instance?.FadeOutSync(0.5f);
|
||||
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeOutAsync(0.5f);
|
||||
|
||||
var data = eyeSystem.bubbleSlotGroup.CollectData();
|
||||
BubbleGroup.Instance.LoadBubbles(data);
|
||||
}
|
||||
|
||||
public IEnumerator Exit()
|
||||
@@ -336,21 +352,23 @@ namespace AibisDream.FixSystem
|
||||
var bodyModuleSystem = FixSystemCenter.SystemDic.Get<BodyModuleSystem>();
|
||||
float duration = 0.5f;
|
||||
var eyeSystem = FixSystemCenter.SystemDic.Get<EyeSystem>();
|
||||
yield return MainUIController.Instance?.FadeInSync(duration);
|
||||
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 MainUIController.Instance.FadeOutSync(duration);
|
||||
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeOutAsync(duration);
|
||||
//关上
|
||||
SpriteRenderer sp= bodyModuleSystem.FindBodyModuleByName("Eye").transform.Find("Cover").GetComponent<SpriteRenderer>();
|
||||
sp.sprite=Resources.Load<Sprite>("Art/Fix/Peipei/Eye/视觉模块盖子打开A");
|
||||
SpriteRenderer sp = bodyModuleSystem.FindBodyModuleByName("Eye").transform.Find("Cover")
|
||||
.GetComponent<SpriteRenderer>();
|
||||
sp.sprite = Resources.Load<Sprite>("Art/Fix/Peipei/Eye/视觉模块盖子打开A");
|
||||
AudioManager.Instance.PlaySfx("event:/ActionFB/eye_close");
|
||||
yield return new WaitForSeconds(0.1f);
|
||||
sp.sprite=Resources.Load<Sprite>("Art/Fix/Peipei/Eye/视觉模块盖子关闭");
|
||||
sp.sprite = Resources.Load<Sprite>("Art/Fix/Peipei/Eye/视觉模块盖子关闭");
|
||||
yield return new WaitForSeconds(0.5f);
|
||||
}
|
||||
}
|
||||
|
||||
public struct MemoryState : IState
|
||||
public struct MemoryState : IState<FixState>
|
||||
{
|
||||
public FixState GetState => FixState.Memory;
|
||||
|
||||
@@ -374,21 +392,299 @@ namespace AibisDream.FixSystem
|
||||
bodyModuleSystem.ResetPlug();
|
||||
// 相机聚焦到目标位
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.Memory);
|
||||
yield return MainUIController.Instance?.FadeInSync(0.5f);
|
||||
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeInAsync(duration);
|
||||
memorySystem.OnEnter();
|
||||
yield return MainUIController.Instance.FadeOutSync(duration);
|
||||
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeOutAsync(duration);
|
||||
var data = memorySystem.bubbleSlotGroup.CollectData();
|
||||
BubbleGroup.Instance.LoadBubbles(data);
|
||||
}
|
||||
|
||||
public IEnumerator Exit()
|
||||
{
|
||||
float duration = 0.5f;
|
||||
var memorySystem = FixSystemCenter.SystemDic.Get<MemoryProcess>();
|
||||
yield return MainUIController.Instance.FadeInSync(duration);
|
||||
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeInAsync(duration);
|
||||
memorySystem.OnExit();
|
||||
memorySystem.CloseMemoryView();
|
||||
yield return MainUIController.Instance.FadeOutSync(duration);
|
||||
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeOutAsync(duration);
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule);
|
||||
memorySystem.PullMemoryProjector();
|
||||
}
|
||||
}
|
||||
|
||||
public struct ExpressionState : IState<FixState>
|
||||
{
|
||||
public FixState GetState => FixState.Expression;
|
||||
|
||||
public void SetArgs(string args)
|
||||
{
|
||||
// 无
|
||||
}
|
||||
|
||||
public IEnumerator Enter()
|
||||
{
|
||||
// 先切BodyModule
|
||||
var expressionManager = FixSystemCenter.SystemDic.Get<ExpressionManager>();
|
||||
if (!CameraKit.Instance.EqualToCameraState(CameraEnum.BodyModule))
|
||||
{
|
||||
var bodyModule = FixSystemCenter.SystemDic.Get<BodyModuleSystem>();
|
||||
bodyModule.SwitchModuleGroup(ModuleState.Head);
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule);
|
||||
}
|
||||
|
||||
// 切换相机
|
||||
expressionManager.OpenView();
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.Expression);
|
||||
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeInAsync(0.5f);
|
||||
//expressionManager.OpenView();
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.ExpressionDeep);
|
||||
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeOutAsync(0.5f);
|
||||
}
|
||||
|
||||
public IEnumerator Exit()
|
||||
{
|
||||
var expressionManager = FixSystemCenter.SystemDic.Get<ExpressionManager>();
|
||||
var bodyModuleSystem = FixSystemCenter.SystemDic.Get<BodyModuleSystem>();
|
||||
bodyModuleSystem.ResetPlug();
|
||||
expressionManager.CloseView();
|
||||
yield break;
|
||||
}
|
||||
}
|
||||
|
||||
public struct EmoState : IState<FixState>
|
||||
{
|
||||
public FixState GetState => FixState.Emo;
|
||||
|
||||
public void SetArgs(string args)
|
||||
{
|
||||
}
|
||||
|
||||
public IEnumerator Enter()
|
||||
{
|
||||
var emoManager = FixSystemCenter.SystemDic.Get<EmoManager>();
|
||||
if (!CameraKit.Instance.EqualToCameraState(CameraEnum.BodyModule))
|
||||
{
|
||||
var bodyModule = FixSystemCenter.SystemDic.Get<BodyModuleSystem>();
|
||||
bodyModule.SwitchModuleGroup(ModuleState.Head);
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule);
|
||||
}
|
||||
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.Emo);
|
||||
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeInAsync(0.5f);
|
||||
emoManager.OpenView();
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.EmoDeep);
|
||||
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeOutAsync(0.5f);
|
||||
}
|
||||
|
||||
public IEnumerator Exit()
|
||||
{
|
||||
var emoManager = FixSystemCenter.SystemDic.Get<EmoManager>();
|
||||
var bodyModuleSystem = FixSystemCenter.SystemDic.Get<BodyModuleSystem>();
|
||||
bodyModuleSystem.ResetPlug();
|
||||
emoManager.CloseView();
|
||||
yield break;
|
||||
}
|
||||
}
|
||||
|
||||
public struct OpState : IState<FixState>
|
||||
{
|
||||
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 : IState<FixState>
|
||||
{
|
||||
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>();
|
||||
BubbleGroup.Instance.LoadBubbles(openSystem.bubbleSlotGroup.CollectData());
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerator Exit()
|
||||
{
|
||||
// 无
|
||||
yield break;
|
||||
}
|
||||
}
|
||||
|
||||
public struct EmoCutState : IState<FixState>
|
||||
{
|
||||
public FixState GetState => FixState.EmoCut;
|
||||
|
||||
public void SetArgs(string args)
|
||||
{
|
||||
// 无
|
||||
}
|
||||
|
||||
public IEnumerator Enter()
|
||||
{
|
||||
var bodyModuleSystem = FixSystemCenter.SystemDic.Get<BodyModuleSystem>();
|
||||
var cuttingManager = FixSystemCenter.SystemDic.Get<CuttingManager>();
|
||||
if (!CameraKit.Instance.EqualToCameraState(CameraEnum.BodyModule))
|
||||
{
|
||||
bodyModuleSystem.SwitchModuleGroup(ModuleState.Head);
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule);
|
||||
}
|
||||
// Cut的气泡统一放在BodyModule下
|
||||
BubbleGroup.Instance.LoadBubbles(cuttingManager.bubbleSlotGroup.CollectData());
|
||||
|
||||
bodyModuleSystem.CableSystem.ResetPlug();
|
||||
var bodyModule = bodyModuleSystem.FindBodyModuleByName("Emo");
|
||||
if (bodyModule != null)
|
||||
{
|
||||
bodyModule.GetCutSpriteRenderer().sortingOrder = 100;
|
||||
bodyModule.GetCutTextSpriteRenderer().sortingOrder = 101;
|
||||
bodyModule.GetCutSpriteRenderer().color = new Color(1f, 1f, 1f, 1f);
|
||||
bodyModule.GetCutSpriteRenderer().GetComponentInChildren<SpriteRenderer>().color =
|
||||
new Color(1f, 1f, 1f, 1f);
|
||||
}
|
||||
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.CutEmo);
|
||||
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeInAsync(0.1f);
|
||||
AudioManager.Instance.SetGlobalParam("scene",14);
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.CutEmoDeep);
|
||||
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeOutAsync(0.1f);
|
||||
yield return cuttingManager.StartCutting(bodyModule);
|
||||
}
|
||||
|
||||
public IEnumerator Exit()
|
||||
{
|
||||
// 无
|
||||
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeInAsync(0.1f);
|
||||
var cuttingManager = FixSystemCenter.SystemDic.Get<CuttingManager>();
|
||||
cuttingManager.ClearCutLine();
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.CutEmo);
|
||||
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeOutAsync(0.1f);
|
||||
}
|
||||
}
|
||||
|
||||
public struct MemoryCutState : IState<FixState>
|
||||
{
|
||||
public FixState GetState => FixState.MemoryCut;
|
||||
|
||||
public void SetArgs(string args)
|
||||
{
|
||||
// 无
|
||||
}
|
||||
|
||||
public IEnumerator Enter()
|
||||
{
|
||||
var bodyModuleSystem = FixSystemCenter.SystemDic.Get<BodyModuleSystem>();
|
||||
var cuttingManager = FixSystemCenter.SystemDic.Get<CuttingManager>();
|
||||
if (!CameraKit.Instance.EqualToCameraState(CameraEnum.BodyModule))
|
||||
{
|
||||
bodyModuleSystem.SwitchModuleGroup(ModuleState.Head);
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule);
|
||||
}
|
||||
// Cut的气泡统一放在BodyModule下
|
||||
BubbleGroup.Instance.LoadBubbles(cuttingManager.bubbleSlotGroup.CollectData());
|
||||
|
||||
bodyModuleSystem.CableSystem.ResetPlug();
|
||||
var bodyModule = bodyModuleSystem.FindBodyModuleByName("Memory");
|
||||
if (bodyModule != null)
|
||||
{
|
||||
bodyModule.GetCutSpriteRenderer().sortingOrder = 100;
|
||||
bodyModule.GetCutTextSpriteRenderer().sortingOrder = 101;
|
||||
bodyModule.GetCutSpriteRenderer().color = new Color(1f, 1f, 1f, 1f);
|
||||
bodyModule.GetCutSpriteRenderer().GetComponentInChildren<SpriteRenderer>().color =
|
||||
new Color(1f, 1f, 1f, 1f);
|
||||
}
|
||||
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.CutMemory);
|
||||
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeInAsync(0.1f);
|
||||
AudioManager.Instance.SetGlobalParam("scene",12);
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.CutMemoryDeep);
|
||||
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeOutAsync(0.1f);
|
||||
yield return cuttingManager.StartCutting(bodyModule);
|
||||
}
|
||||
|
||||
|
||||
public IEnumerator Exit()
|
||||
{
|
||||
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeInAsync(0.1f);
|
||||
var cuttingManager = FixSystemCenter.SystemDic.Get<CuttingManager>();
|
||||
cuttingManager.ClearCutLine();
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.CutMemory);
|
||||
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeOutAsync(0.1f);
|
||||
}
|
||||
}
|
||||
|
||||
public struct LogicCutState : IState<FixState>
|
||||
{
|
||||
public FixState GetState => FixState.LogicCut;
|
||||
|
||||
public void SetArgs(string args)
|
||||
{
|
||||
// 无
|
||||
}
|
||||
|
||||
public IEnumerator Enter()
|
||||
{
|
||||
var cuttingManager = FixSystemCenter.SystemDic.Get<CuttingManager>();
|
||||
var bodyModuleSystem = FixSystemCenter.SystemDic.Get<BodyModuleSystem>();
|
||||
if (!CameraKit.Instance.EqualToCameraState(CameraEnum.BodyModule))
|
||||
{
|
||||
bodyModuleSystem.SwitchModuleGroup(ModuleState.Head);
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule);
|
||||
}
|
||||
// Cut的气泡统一放在BodyModule下
|
||||
BubbleGroup.Instance.LoadBubbles(cuttingManager.bubbleSlotGroup.CollectData());
|
||||
|
||||
var bodyModule = bodyModuleSystem.FindBodyModuleByName("Logic");
|
||||
if (bodyModule != null)
|
||||
{
|
||||
bodyModule.GetCutSpriteRenderer().sortingOrder = 100;
|
||||
bodyModule.GetCutTextSpriteRenderer().sortingOrder = 101;
|
||||
bodyModule.GetCutSpriteRenderer().color = new Color(1f, 1f, 1f, 1f);
|
||||
bodyModule.GetCutSpriteRenderer().GetComponentInChildren<SpriteRenderer>().color =
|
||||
new Color(1f, 1f, 1f, 1f);
|
||||
}
|
||||
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.CutLogic);
|
||||
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeInAsync(0.1f);
|
||||
AudioManager.Instance.SetGlobalParam("scene",13);
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.CutLogicDeep);
|
||||
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeOutAsync(0.1f);
|
||||
yield return cuttingManager.StartCutting(bodyModule);
|
||||
}
|
||||
|
||||
public IEnumerator Exit()
|
||||
{
|
||||
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeInAsync(0.1f);
|
||||
var cuttingManager = FixSystemCenter.SystemDic.Get<CuttingManager>();
|
||||
cuttingManager.ClearCutLine();
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.CutLogic);
|
||||
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeOutAsync(0.1f);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user