NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/Show/ShowTransitionMgr.cs

110 lines
2.7 KiB
C#

using Cysharp.Threading.Tasks;
using UnityEngine;
using Framework;
using PhxhSDK;
public class ShowTransitionMgr: Singlenton<ShowTransitionMgr>
{
private UI_TransitionController _curUIWindow;
private bool _isInTransition;
private bool _isField;
public bool IsField => _isField;
private async UniTask _OpenUITransition(UI_TransitionController.ShowType showType)
{
_curUIWindow = await UI_TransitionController.Open(showType) as UI_TransitionController;
}
private void _CloseUITransition()
{
if (_curUIWindow != null)
{
_curUIWindow.CloseWindow();
}
}
#region #API
/// <summary>
/// 进入过度阶段
/// </summary>
public async UniTask EnterBlackTransition(bool isField = false)
{
_isField = isField;
await _OpenUITransition(UI_TransitionController.ShowType.BlackOnly);
_isInTransition = true;
}
public async UniTask EnterWhiteTransition(bool isField = false)
{
_isField = isField;
await _OpenUITransition(UI_TransitionController.ShowType.BlackOnly);
_isInTransition = true;
}
/// <summary>
/// 退出过度阶段
/// </summary>
public void ExitTransition()
{
_CloseUITransition();
_isInTransition = false;
}
/// <summary>
/// 进入黑屏状态
/// </summary>
/// <param name="costTime"></param> 进入黑屏过程总共消耗时间
public async UniTask EnterBlack(float costTime = 0.5f)
{
if (!_isInTransition || _curUIWindow == null)
{
return;
}
await _curUIWindow.EnterBlack(costTime);
}
public async UniTask EnterWhite(float costTime = 0.5f)
{
if (!_isInTransition || _curUIWindow == null)
{
return;
}
await _curUIWindow.EnterWhite(costTime);
}
/// <summary>
/// 退出黑屏状态
/// </summary>
/// <param name="costTime"></param> 退出黑屏过程总共消耗时间
public async UniTask ExitBlack(float costTime = 0.5f)
{
if (!_isInTransition || _curUIWindow == null)
{
return;
}
await _curUIWindow.ExitBlack(costTime);
}
public async UniTask ExitWhite(float costTime = 0.5f)
{
if (!_isInTransition || _curUIWindow == null)
{
return;
}
await _curUIWindow.ExitWhite(costTime);
}
public async UniTask ShowLevelTransition(UI_LevelTransitionController.OpenType type)
{
await UI_LevelTransitionController.Open(type);
await UniTask.Delay(1750);
UIManager.Instance.CloseWindow(UINameConst.UI_LevelTransition);
}
#endregion
}