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 SimpleFSM _fsm; private void Start() { _fsm = new SimpleFSM(); _fsm.Register(UpdateProcedureState.ProcedureStart); _fsm.Register(UpdateProcedureState.ProcedureGetGlobalInfoState); _fsm.Register(UpdateProcedureState.ProcedureGetAppVersionInfoState); _fsm.Register(UpdateProcedureState.ProcedureUpdateStaticVersion); _fsm.Register(UpdateProcedureState.ProcedureUpdateManifest); _fsm.Register(UpdateProcedureState.ProcedurePatchInit); _fsm.Register(UpdateProcedureState.ProcedureCreateDownloader); _fsm.Register(UpdateProcedureState.ProcedureDownloadWebFiles); _fsm.Register(UpdateProcedureState.ProcedurePatchDone); _fsm.Register(UpdateProcedureState.ProcedureClearCache); _fsm.Register(UpdateProcedureState.ProcedureLoadAssembly); _fsm.Register(UpdateProcedureState.ProcedureGameLauncherState); _fsm.SwitchState(UpdateProcedureState.ProcedureStart); } private void Update() { _fsm.Update(Time.deltaTime); } private void OnDestroy() { _fsm.Dispose(); _fsm = null; } } }