相机状态和维修状态解绑
This commit is contained in:
@@ -109,7 +109,7 @@ public class MemoryProcess : MonoBehaviour
|
||||
{
|
||||
FixSystemCenter.SystemDic.Register(this);
|
||||
var virtualCam = transform.Find("Memory Camera").GetComponent<ICinemachineCamera>();
|
||||
CameraKit.Instance.RegisterCamera(FixState.Memory, virtualCam);
|
||||
CameraKit.Instance.RegisterCamera(CameraEnum.Memory, virtualCam);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -67,12 +67,12 @@ namespace AibisDream.FixSystem
|
||||
|
||||
// 注册Camera
|
||||
var virtualCam = transform.GetComponentInChildren<ICinemachineCamera>();
|
||||
CameraKit.Instance.RegisterCamera(FixState.BodyModule, virtualCam);
|
||||
CameraKit.Instance.RegisterCamera(CameraEnum.BodyModule, virtualCam);
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
CameraKit.Instance.UnRegisterCamera(FixState.BodyModule);
|
||||
CameraKit.Instance.UnRegisterCamera(CameraEnum.BodyModule);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace AibisDream
|
||||
|
||||
// 注册Camera
|
||||
var virtualCam = transform.Find("Clinic Camera").GetComponent<ICinemachineCamera>();
|
||||
CameraKit.Instance.RegisterCamera(FixState.Clinic, virtualCam);
|
||||
CameraKit.Instance.RegisterCamera(CameraEnum.Clinic, virtualCam);
|
||||
}
|
||||
|
||||
private void LoadData(ClinicData data)
|
||||
@@ -98,7 +98,7 @@ namespace AibisDream
|
||||
_clinicData.LoadEvent -= LoadData;
|
||||
GameLoopManager.FixDataContainer.Unregister<ClinicData>();
|
||||
FixSystemCenter.SystemDic.Unregister<ClinicSystem>();
|
||||
CameraKit.Instance.UnRegisterCamera(FixState.Clinic);
|
||||
CameraKit.Instance.UnRegisterCamera(CameraEnum.Clinic);
|
||||
}
|
||||
|
||||
private void OnCharacterChange(CharacterData characterData)
|
||||
|
||||
@@ -31,7 +31,7 @@ namespace AibisDream.Framework
|
||||
|
||||
// 注册相机
|
||||
var virtualCam = transform.Find("Cooling Camera").GetComponent<ICinemachineCamera>();
|
||||
CameraKit.Instance.RegisterCamera(FixState.CoolingMachine, virtualCam);
|
||||
CameraKit.Instance.RegisterCamera(CameraEnum.CoolingMachine, virtualCam);
|
||||
}
|
||||
|
||||
private void InitRefs()
|
||||
@@ -45,7 +45,7 @@ namespace AibisDream.Framework
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
CameraKit.Instance.UnRegisterCamera(FixState.CoolingMachine);
|
||||
CameraKit.Instance.UnRegisterCamera(CameraEnum.CoolingMachine);
|
||||
}
|
||||
|
||||
#region 对外开放
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections;
|
||||
using AibisDream.Framework;
|
||||
using UnityEngine;
|
||||
|
||||
@@ -8,16 +7,16 @@ namespace AibisDream.FixSystem
|
||||
public class FixStateMachine
|
||||
{
|
||||
public FixState CurState => _curState.GetState;
|
||||
|
||||
|
||||
private IState _curState;
|
||||
private string _curArgs;
|
||||
|
||||
public IEnumerator SwitchState(FixState nextState, string args = "")
|
||||
{
|
||||
_curArgs = args;
|
||||
|
||||
|
||||
yield return _curState?.Exit();
|
||||
|
||||
|
||||
GameLoopManager.Instance?.UpdateFixState(nextState, _curArgs);
|
||||
_curState = CreateState(nextState, _curArgs);
|
||||
yield return _curState.Enter();
|
||||
@@ -45,12 +44,12 @@ namespace AibisDream.FixSystem
|
||||
FixState.Gear => new GearState(),
|
||||
_ => new ClinicState()
|
||||
};
|
||||
|
||||
|
||||
res.SetArgs(args);
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public enum FixState
|
||||
{
|
||||
Default,
|
||||
@@ -84,7 +83,7 @@ namespace AibisDream.FixSystem
|
||||
public IEnumerator Enter()
|
||||
{
|
||||
// 切换相机
|
||||
yield return CameraKit.Instance.SwitchCamera(FixState.Clinic);
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.Clinic);
|
||||
}
|
||||
|
||||
public IEnumerator Exit()
|
||||
@@ -97,7 +96,7 @@ namespace AibisDream.FixSystem
|
||||
public struct BodyModuleState : IState
|
||||
{
|
||||
public FixState GetState => FixState.BodyModule;
|
||||
|
||||
|
||||
public void SetArgs(string args)
|
||||
{
|
||||
// 无
|
||||
@@ -109,7 +108,7 @@ namespace AibisDream.FixSystem
|
||||
// 拔出插头
|
||||
bodyModuleSystem.ResetPlug();
|
||||
// 切换相机
|
||||
yield return CameraKit.Instance.SwitchCamera(FixState.BodyModule);
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule);
|
||||
}
|
||||
|
||||
public IEnumerator Exit()
|
||||
@@ -124,9 +123,9 @@ namespace AibisDream.FixSystem
|
||||
public struct GearState : IState
|
||||
{
|
||||
public FixState GetState => FixState.Gear;
|
||||
|
||||
|
||||
private string _configKey;
|
||||
|
||||
|
||||
public void SetArgs(string args)
|
||||
{
|
||||
_configKey = args;
|
||||
@@ -135,14 +134,15 @@ namespace AibisDream.FixSystem
|
||||
public IEnumerator Enter()
|
||||
{
|
||||
// 先切BodyModule
|
||||
if (!CameraKit.Instance.EqualToCameraState(FixState.BodyModule))
|
||||
if (!CameraKit.Instance.EqualToCameraState(CameraEnum.BodyModule))
|
||||
{
|
||||
yield return MainUIController.Instance?.FadeInSync(0.5f);
|
||||
yield return CameraKit.Instance.SwitchCamera(FixState.BodyModule);
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule);
|
||||
yield return MainUIController.Instance?.FadeOutSync(0.5f);
|
||||
}
|
||||
|
||||
// 切换相机
|
||||
yield return CameraKit.Instance.SwitchCamera(FixState.Gear);
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.Gear);
|
||||
// 加载关卡数据
|
||||
if (!string.IsNullOrEmpty(_configKey))
|
||||
{
|
||||
@@ -161,7 +161,7 @@ namespace AibisDream.FixSystem
|
||||
public struct EngineState : IState
|
||||
{
|
||||
public FixState GetState => FixState.Engine;
|
||||
|
||||
|
||||
public void SetArgs(string args)
|
||||
{
|
||||
// 无
|
||||
@@ -170,14 +170,15 @@ namespace AibisDream.FixSystem
|
||||
public IEnumerator Enter()
|
||||
{
|
||||
// 先切BodyModule
|
||||
if (!CameraKit.Instance.EqualToCameraState(FixState.BodyModule))
|
||||
if (!CameraKit.Instance.EqualToCameraState(CameraEnum.BodyModule))
|
||||
{
|
||||
//yield return MainUIController.Instance?.FadeInSync(0.5f);
|
||||
yield return CameraKit.Instance.SwitchCamera(FixState.BodyModule);
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule);
|
||||
//yield return MainUIController.Instance?.FadeOutSync(0.5f);
|
||||
}
|
||||
|
||||
// 切换相机
|
||||
yield return CameraKit.Instance.SwitchCamera(FixState.Engine);
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.Engine);
|
||||
}
|
||||
|
||||
public IEnumerator Exit()
|
||||
@@ -191,7 +192,7 @@ namespace AibisDream.FixSystem
|
||||
public struct CoolingMachineState : IState
|
||||
{
|
||||
private bool _playLink;
|
||||
|
||||
|
||||
public FixState GetState => FixState.CoolingMachine;
|
||||
|
||||
public void SetArgs(string args)
|
||||
@@ -203,8 +204,8 @@ namespace AibisDream.FixSystem
|
||||
{
|
||||
var coolingSystem = FixSystemCenter.SystemDic.Get<CoolingSystem>();
|
||||
// 切相机
|
||||
yield return CameraKit.Instance.SwitchCamera(FixState.CoolingMachine);
|
||||
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.CoolingMachine);
|
||||
|
||||
// 打开泵机
|
||||
coolingSystem.gameObject.SetActive(true);
|
||||
yield return coolingSystem.OpenCoolingSystem();
|
||||
@@ -228,34 +229,31 @@ namespace AibisDream.FixSystem
|
||||
public struct UfState : IState
|
||||
{
|
||||
public FixState GetState => FixState.UF;
|
||||
|
||||
|
||||
public void SetArgs(string args)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public IEnumerator Enter()
|
||||
{
|
||||
{
|
||||
float duration = 0.5f;
|
||||
var bodyModuleSystem = FixSystemCenter.SystemDic.Get<BodyModuleSystem>();
|
||||
var UFSystem = FixSystemCenter.SystemDic.Get<UFSystem>();
|
||||
// 先切BodyModule
|
||||
if (!CameraKit.Instance.EqualToCameraState(FixState.BodyModule))
|
||||
if (!CameraKit.Instance.EqualToCameraState(CameraEnum.BodyModule))
|
||||
{
|
||||
yield return MainUIController.Instance?.FadeInSync(0.5f);
|
||||
yield return CameraKit.Instance.SwitchCamera(FixState.BodyModule);
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule);
|
||||
yield return MainUIController.Instance?.FadeOutSync(0.5f);
|
||||
}
|
||||
|
||||
|
||||
// 插头回到初始插孔
|
||||
bodyModuleSystem.ResetPlug();
|
||||
// 切换相机
|
||||
yield return CameraKit.Instance.SwitchCamera(FixState.UF);
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.UF);
|
||||
yield return MainUIController.Instance.FadeInSync(duration);
|
||||
UFSystem.OpenUFView();
|
||||
yield return MainUIController.Instance.FadeOutSync(duration);
|
||||
|
||||
|
||||
}
|
||||
|
||||
public IEnumerator Exit()
|
||||
@@ -269,36 +267,35 @@ namespace AibisDream.FixSystem
|
||||
public struct EyeState : IState
|
||||
{
|
||||
public FixState GetState => FixState.Eye;
|
||||
|
||||
|
||||
public void SetArgs(string args)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
public IEnumerator Enter()
|
||||
{
|
||||
{
|
||||
float duration = 0.5f;
|
||||
var bodyModuleSystem = FixSystemCenter.SystemDic.Get<BodyModuleSystem>();
|
||||
var eyeSystem = FixSystemCenter.SystemDic.Get<EyeSystem>();
|
||||
// 先切BodyModule
|
||||
if (!CameraKit.Instance.EqualToCameraState(FixState.BodyModule))
|
||||
if (!CameraKit.Instance.EqualToCameraState(CameraEnum.BodyModule))
|
||||
{
|
||||
yield return MainUIController.Instance?.FadeInSync(0.5f);
|
||||
yield return CameraKit.Instance.SwitchCamera(FixState.BodyModule);
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule);
|
||||
yield return MainUIController.Instance?.FadeOutSync(0.5f);
|
||||
}
|
||||
|
||||
//打开盖子
|
||||
bodyModuleSystem.FindBodyModuleByName("Eye").transform.Find("Module Pic").GetComponent<SpriteRenderer>().sprite=Resources.Load<Sprite>("Art/Fix/Peipei/视觉盖子打开");
|
||||
bodyModuleSystem.FindBodyModuleByName("Eye").transform.Find("Module Pic").GetComponent<SpriteRenderer>()
|
||||
.sprite = Resources.Load<Sprite>("Art/Fix/Peipei/视觉盖子打开");
|
||||
// 插头回到初始插孔
|
||||
bodyModuleSystem.ResetPlug();
|
||||
// 切换相机
|
||||
yield return CameraKit.Instance.SwitchCamera(FixState.Eye);
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.Eye);
|
||||
yield return MainUIController.Instance.FadeInSync(duration);
|
||||
eyeSystem.OnEnter();
|
||||
yield return MainUIController.Instance.FadeOutSync(duration);
|
||||
|
||||
|
||||
}
|
||||
|
||||
public IEnumerator Exit()
|
||||
@@ -312,10 +309,9 @@ namespace AibisDream.FixSystem
|
||||
public struct MemoryState : IState
|
||||
{
|
||||
public FixState GetState => FixState.Memory;
|
||||
|
||||
|
||||
public void SetArgs(string args)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public IEnumerator Enter()
|
||||
@@ -323,18 +319,19 @@ namespace AibisDream.FixSystem
|
||||
float duration = 0.5f;
|
||||
var bodyModuleSystem = FixSystemCenter.SystemDic.Get<BodyModuleSystem>();
|
||||
var memorySystem = FixSystemCenter.SystemDic.Get<MemoryProcess>();
|
||||
// 先切BodyModule
|
||||
if (!CameraKit.Instance.EqualToCameraState(FixState.BodyModule))
|
||||
// 先切BodyModule
|
||||
if (!CameraKit.Instance.EqualToCameraState(CameraEnum.BodyModule))
|
||||
{
|
||||
yield return MainUIController.Instance?.FadeInSync(0.5f);
|
||||
yield return CameraKit.Instance.SwitchCamera(FixState.BodyModule);
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule);
|
||||
yield return MainUIController.Instance?.FadeOutSync(0.5f);
|
||||
}
|
||||
|
||||
yield return memorySystem.DropMemoryProjector();
|
||||
// 插头回到初始插孔
|
||||
// 插头回到初始插孔
|
||||
bodyModuleSystem.ResetPlug();
|
||||
// 相机聚焦到目标位
|
||||
yield return CameraKit.Instance.SwitchCamera(FixState.Memory);
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.Memory);
|
||||
yield return MainUIController.Instance.FadeInSync(duration);
|
||||
memorySystem.OnEnter();
|
||||
yield return MainUIController.Instance.FadeOutSync(duration);
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using AibisDream.FixSystem;
|
||||
using AibisDream.Kit;
|
||||
using Cinemachine;
|
||||
using DG.Tweening;
|
||||
@@ -21,10 +20,10 @@ namespace AibisDream.Framework
|
||||
#region 相机组件
|
||||
|
||||
private CinemachineBrain _cameraBrain;
|
||||
private readonly Dictionary<FixState, ICinemachineCamera> _virtualCameraDict = new();
|
||||
private readonly Dictionary<FixState, CamState> _camInitStateDict = new();
|
||||
private readonly Dictionary<CameraEnum, ICinemachineCamera> _virtualCameraDict = new();
|
||||
private readonly Dictionary<CameraEnum, CamState> _camInitStateDict = new();
|
||||
|
||||
private FixState _curFixState;
|
||||
private CameraEnum _curCameraEnum;
|
||||
private CamState _curInitState;
|
||||
public Camera uiCamera;
|
||||
|
||||
@@ -43,7 +42,7 @@ namespace AibisDream.Framework
|
||||
public override void OnSingletonInit()
|
||||
{
|
||||
_cameraBrain = Camera.main?.GetComponent<CinemachineBrain>();
|
||||
_curFixState = FixState.Default;
|
||||
_curCameraEnum = CameraEnum.Default;
|
||||
|
||||
// 获取UICamera
|
||||
if (Camera.main && Camera.main.TryGetComponent<UniversalAdditionalCameraData>(out var cameraData))
|
||||
@@ -77,7 +76,7 @@ namespace AibisDream.Framework
|
||||
}
|
||||
}
|
||||
|
||||
public void RegisterCamera(FixState camType, ICinemachineCamera virtualCamera)
|
||||
public void RegisterCamera(CameraEnum camType, ICinemachineCamera virtualCamera)
|
||||
{
|
||||
_virtualCameraDict[camType] = virtualCamera;
|
||||
|
||||
@@ -90,7 +89,7 @@ namespace AibisDream.Framework
|
||||
_camInitStateDict[camType] = initState;
|
||||
}
|
||||
|
||||
public void UnRegisterCamera(FixState camType, ICinemachineCamera virtualCamera)
|
||||
public void UnRegisterCamera(CameraEnum camType, ICinemachineCamera virtualCamera)
|
||||
{
|
||||
if (!_virtualCameraDict.TryGetValue(camType, out var curCam)) return;
|
||||
|
||||
@@ -101,7 +100,7 @@ namespace AibisDream.Framework
|
||||
}
|
||||
}
|
||||
|
||||
public void UnRegisterCamera(FixState camType)
|
||||
public void UnRegisterCamera(CameraEnum camType)
|
||||
{
|
||||
_virtualCameraDict.Remove(camType);
|
||||
_camInitStateDict.Remove(camType);
|
||||
@@ -120,18 +119,18 @@ namespace AibisDream.Framework
|
||||
/// </summary>
|
||||
/// <param name="targetCameraState"></param>
|
||||
/// <returns>是就不用切相机</returns>
|
||||
public bool EqualToCameraState(FixState targetCameraState)
|
||||
public bool EqualToCameraState(CameraEnum targetCameraState)
|
||||
{
|
||||
return _curFixState == targetCameraState;
|
||||
return _curCameraEnum == targetCameraState;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 切换相机
|
||||
/// </summary>
|
||||
/// <param name="camType"></param>
|
||||
public IEnumerator SwitchCamera(FixState camType)
|
||||
public IEnumerator SwitchCamera(CameraEnum camType)
|
||||
{
|
||||
if (_curFixState == camType)
|
||||
if (_curCameraEnum == camType)
|
||||
{
|
||||
yield break;
|
||||
}
|
||||
@@ -249,7 +248,7 @@ namespace AibisDream.Framework
|
||||
public static IEnumerator SwitchCamera(string targetStateStr)
|
||||
{
|
||||
// 字符串转枚举
|
||||
if (!Enum.TryParse<FixState>(targetStateStr, out var targetState))
|
||||
if (!Enum.TryParse<CameraEnum>(targetStateStr, out var targetState))
|
||||
{
|
||||
Debug.Log($"{targetStateStr}不在FixState枚举中");
|
||||
yield break;
|
||||
@@ -258,4 +257,17 @@ namespace AibisDream.Framework
|
||||
yield return CameraKit.Instance.SwitchCamera(targetState);
|
||||
}
|
||||
}
|
||||
|
||||
public enum CameraEnum
|
||||
{
|
||||
Default,
|
||||
Clinic,
|
||||
CoolingMachine,
|
||||
BodyModule,
|
||||
Memory,
|
||||
Eye,
|
||||
UF,
|
||||
Engine,
|
||||
Gear
|
||||
}
|
||||
}
|
||||
@@ -39,7 +39,7 @@ namespace AibisDream
|
||||
|
||||
// 注册相机
|
||||
var virtualCam = transform.Find("Engine Camera").GetComponentInChildren<ICinemachineCamera>();
|
||||
CameraKit.Instance.RegisterCamera(FixState.Engine, virtualCam);
|
||||
CameraKit.Instance.RegisterCamera(CameraEnum.Engine, virtualCam);
|
||||
}
|
||||
|
||||
private void Start()
|
||||
@@ -59,7 +59,7 @@ namespace AibisDream
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
CameraKit.Instance.UnRegisterCamera(FixState.Engine);
|
||||
CameraKit.Instance.UnRegisterCamera(CameraEnum.Engine);
|
||||
}
|
||||
|
||||
private void Update()
|
||||
|
||||
@@ -56,7 +56,7 @@ namespace AibisDream
|
||||
|
||||
// 注册相机
|
||||
var virtualCam = transform.Find("Gear Camera").GetComponent<ICinemachineCamera>();
|
||||
CameraKit.Instance.RegisterCamera(FixState.Gear, virtualCam);
|
||||
CameraKit.Instance.RegisterCamera(CameraEnum.Gear, virtualCam);
|
||||
}
|
||||
|
||||
private void Start()
|
||||
@@ -71,7 +71,7 @@ namespace AibisDream
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
CameraKit.Instance.UnRegisterCamera(FixState.Gear);
|
||||
CameraKit.Instance.UnRegisterCamera(CameraEnum.Gear);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -35,7 +35,7 @@ public class EyeSystem : MonoBehaviour
|
||||
{
|
||||
FixSystemCenter.SystemDic.Register(this);
|
||||
var virtualCam = transform.Find("Eye Camera").GetComponent<ICinemachineCamera>();
|
||||
CameraKit.Instance.RegisterCamera(FixState.Eye, virtualCam);
|
||||
CameraKit.Instance.RegisterCamera(CameraEnum.Eye, virtualCam);
|
||||
GameLoopManager.FixDataContainer.Register(_eyeData);
|
||||
// 添加加载逻辑
|
||||
_eyeData.LoadEvent += LoadData;
|
||||
|
||||
@@ -17,7 +17,7 @@ public class UFSystem : MonoBehaviour
|
||||
{
|
||||
FixSystemCenter.SystemDic.Register(this);
|
||||
var virtualCam = transform.Find("UF Camera").GetComponent<ICinemachineCamera>();
|
||||
CameraKit.Instance.RegisterCamera(FixState.UF, virtualCam);
|
||||
CameraKit.Instance.RegisterCamera(CameraEnum.UF, virtualCam);
|
||||
}
|
||||
|
||||
public void OpenUFView()
|
||||
|
||||
Reference in New Issue
Block a user