using System;
using Cysharp.Threading.Tasks;
using DG.Tweening;
using DragonSoul.Shared;
using TMPro;
namespace UnityTest.ZXL
{
public static class ETTaskHelper
{
public static async ETTask WaitFinish(Action action, ETCancellationToken token = null)
{
ETTask task = ETTask.Create();
await task;
}
///
/// 等待完成(自动床奶奶)
///
///
///
public static async ETTask WaitCompletion(ETCancellationToken token = null)
{
ETTask task = ETTask.Create();
token?.Add(Cancel);
void Cancel()
{
task.SetResult(false);
token = new ETCancellationToken();
}
var isTrue = await task;
token.Remove(Cancel);
return isTrue;
}
public static async ETTask WaitCompletion(ETTask task, ETCancellationToken token = null)
{
task = ETTask.Create();
token?.Add(Cancel);
void Cancel()
{
task.SetResult(false);
token = new ETCancellationToken();
}
var isTrue = await task;
token?.Remove(Cancel);
return isTrue;
}
public static async ETTask WaitTime(float time, ETCancellationToken token = null)
{
await UniTask.Delay(TimeSpan.FromSeconds(time));
}
public static async ETTask WaitDoTMPText(this TextMeshProUGUI text, string content, string audioName, ETCancellationToken token = null)
{
bool isEnd = false;
var t = 0.1f * content.Length;
DOTween.KillAll();
if (audioName != "")
{
t = Script.AudioManager.Instance.PlayOtherSound(false, $"6-4/{audioName}") + 0.1f;
}
await DOTween.To(() => string.Empty, value => text.text = value, content, t)
.SetEase(Ease.Linear).AwaitForComplete().SuppressCancellationThrow();
}
}
}