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 _fsm; private void Start() { _fsm = GameApp.Fsm.Create("Procedure"); _fsm.Register(UpdateProcedureState.ProcedureStart, false); _fsm.Register(UpdateProcedureState.ProcedureGetGlobalInfoState, false); _fsm.Register(UpdateProcedureState.ProcedureGetAppVersionInfoState, false); _fsm.Register(UpdateProcedureState.ProcedureUpdateStaticVersion, false); _fsm.Register(UpdateProcedureState.ProcedureUpdateManifest, false); _fsm.Register(UpdateProcedureState.ProcedurePatchInit, false); _fsm.Register(UpdateProcedureState.ProcedureCreateDownloader, false); _fsm.Register(UpdateProcedureState.ProcedureDownloadWebFiles, false); _fsm.Register(UpdateProcedureState.ProcedurePatchDone, false); _fsm.Register(UpdateProcedureState.ProcedureClearCache, false); _fsm.Register(UpdateProcedureState.ProcedureLoadAssembly, false); _fsm.Register(UpdateProcedureState.ProcedureGameLauncherState, false); _fsm.SwitchState(UpdateProcedureState.ProcedureStart); } private void OnDestroy() { GameApp.Fsm.Destroy(_fsm); _fsm = null; } } }