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

158 lines
6.7 KiB
C#

using System;
using System.Collections;
using AibisDream.Framework;
using AibisDream.UI;
using DG.Tweening;
using UnityEngine;
namespace AibisDream.FixSystem
{
public struct EmoCutState : IFixState
{
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下
DialogUIManager.Instance.LoadBubbles(cuttingManager.bubbleSlotGroup.CollectData());
FixPanelSystem.GetRepairPanel<CablePanel>().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);
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 : IFixState
{
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下
DialogUIManager.Instance.LoadBubbles(cuttingManager.bubbleSlotGroup.CollectData());
FixPanelSystem.GetRepairPanel<CablePanel>().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);
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 : IFixState
{
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下
DialogUIManager.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);
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);
}
}
}