using System;
using Cysharp.Threading.Tasks;
using GameFramework;
using GameFramework.Localization;
using UnityGameFramework.Runtime;
namespace UnityGameFramework.Runtime.AsyncTask
{
///
/// Localization 异步扩展方法
///
public static class LocalizationAsyncExtension
{
///
/// 异步加载字典
///
/// 本地化组件
/// 字典资源名称
/// 用户自定义数据
/// 超时时间(秒),0表示不超时
/// 加载成功事件
public static UniTask LoadDictionaryAsync(this LocalizationComponent localizationComponent,
string dictionaryAssetName,
object userData = null,
float timeout = 30f)
{
UniTask waitTask = AsyncTaskHelper.WaitSuccessOrFailureAsync(
LoadDictionarySuccessEventArgs.EventId,
LoadDictionaryFailureEventArgs.EventId,
successArgs => successArgs.DictionaryAssetName == dictionaryAssetName && ReferenceEquals(successArgs.UserData, userData),
failureArgs => failureArgs.DictionaryAssetName == dictionaryAssetName && ReferenceEquals(failureArgs.UserData, userData),
timeout
);
localizationComponent.ReadData(dictionaryAssetName, userData);
return waitTask;
}
}
}