AlicizaX/Client/Assets/Scripts/Startup/Framework/Procedure/Procedure.cs
2025-04-28 19:45:45 +08:00

52 lines
2.2 KiB
C#

using System;
using UnityEngine;
namespace Unity.Startup.Procedure
{
public enum UpdateProcedureState : byte
{
ProcedureStart,
ProcedureGetGlobalInfoState,
ProcedureGetAppVersionInfoState,
ProcedureUpdateStaticVersion,
ProcedureUpdateManifest,
ProcedurePatchInit,
ProcedureCreateDownloader,
ProcedureDownloadWebFiles,
ProcedurePatchDone,
ProcedureClearCache,
ProcedureLoadAssembly,
ProcedureGameLauncherState
}
public class Procedure : MonoBehaviour
{
private UltraFSM<UpdateProcedureState> _fsm;
private void Start()
{
_fsm = GameApp.Fsm.Create<UpdateProcedureState>("Procedure");
_fsm.Register<ProcedureLauncherState>(UpdateProcedureState.ProcedureStart, false);
_fsm.Register<ProcedureGetGlobalInfoState>(UpdateProcedureState.ProcedureGetGlobalInfoState, false);
_fsm.Register<ProcedureGetAppVersionInfoState>(UpdateProcedureState.ProcedureGetAppVersionInfoState, false);
_fsm.Register<ProcedureUpdateStaticVersion>(UpdateProcedureState.ProcedureUpdateStaticVersion, false);
_fsm.Register<ProcedureUpdateManifest>(UpdateProcedureState.ProcedureUpdateManifest, false);
_fsm.Register<ProcedurePatchInit>(UpdateProcedureState.ProcedurePatchInit, false);
_fsm.Register<ProcedureCreateDownloader>(UpdateProcedureState.ProcedureCreateDownloader, false);
_fsm.Register<ProcedureDownloadWebFiles>(UpdateProcedureState.ProcedureDownloadWebFiles, false);
_fsm.Register<ProcedurePatchDone>(UpdateProcedureState.ProcedurePatchDone, false);
_fsm.Register<ProcedureClearCache>(UpdateProcedureState.ProcedureClearCache, false);
_fsm.Register<ProcedureLoadAssembly>(UpdateProcedureState.ProcedureLoadAssembly, false);
_fsm.Register<ProcedureGameLauncherState>(UpdateProcedureState.ProcedureGameLauncherState, false);
_fsm.SwitchState(UpdateProcedureState.ProcedureStart);
}
private void OnDestroy()
{
GameApp.Fsm.Destroy(_fsm);
_fsm = null;
}
}
}