using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Cysharp.Threading.Tasks;
///
/// 版本检查状态
///
public class CheckVersionState : ILaunchState
{
private string versionUrl;
// 版本检查结果
private LaunchUtility.UpdateType updateType;
public string StateName => FirstPackLang.Instance.GetText(FirstPackLang.TextIndex.CheckVersion);
public CheckVersionState(string versionUrl)
{
this.versionUrl = versionUrl;
}
public async UniTask OnEnter()
{
Debug.Log("进入版本检查状态");
// 使用硬编码索引设置当前状态
LaunchLoadingWin.Instance.SetCurrentState(FirstPackLang.TextIndex.CheckVersion);
await LaunchLoadingWin.Instance.ShowProgressAsync(0.3f, 0.6f);
}
public async UniTask OnExecute()
{
Debug.Log("执行版本检查");
// 使用LaunchUtility检查版本更新
updateType = await LaunchUtility.CheckVersionUpdateAsync(versionUrl);
// 根据版本检查结果更新提示
switch (updateType)
{
case LaunchUtility.UpdateType.None:
LaunchLoadingWin.Instance.SetTip(FirstPackLang.Instance.GetText(FirstPackLang.TextIndex.LatestVersion));
break;
case LaunchUtility.UpdateType.PatchUpdate:
LaunchLoadingWin.Instance.SetTip(FirstPackLang.Instance.GetText(FirstPackLang.TextIndex.MinorUpdateDetected));
break;
case LaunchUtility.UpdateType.MinorUpdate:
LaunchLoadingWin.Instance.SetTip(FirstPackLang.Instance.GetText(FirstPackLang.TextIndex.MediumUpdateDetected));
break;
case LaunchUtility.UpdateType.MajorUpdate:
LaunchLoadingWin.Instance.SetTip(FirstPackLang.Instance.GetText(FirstPackLang.TextIndex.MajorUpdateDetected));
break;
}
await LaunchLoadingWin.Instance.ShowProgressAsync(0.3f, 0.7f);
// 返回true表示该状态已完成,可以进入下一个状态
return true;
}
public async UniTask OnExit()
{
Debug.Log("退出版本检查状态");
await UniTask.CompletedTask;
}
///
/// 获取版本检查结果
///
public LaunchUtility.UpdateType GetUpdateType()
{
return updateType;
}
}