public void Execute(LoadUserDataSignal loadParam)
        {
            try
            {
                // TODO: MS: Encrypt the Data. For now saving plain to read and change.
                string path = Path.Combine(Application.streamingAssetsPath, Constants.GameStateFile);

                if (File.Exists(path))
                {
                    StreamReader reader   = new StreamReader(path);
                    UserData     userData = JsonConvert.DeserializeObject <UserData>(reader.ReadToEnd());
                    reader.Close();

                    _remoteDataModel.SeedUserData(userData);

                    Debug.Log("UserData Loaded From: " + path);

                    loadParam.DataLoadPromise.Resolve();
                }
                else
                {
                    loadParam.DataLoadPromise.Reject(new FileNotFoundException(Constants.GameStateFile + " doesn't Exist."));
                }
            }
            catch (Exception ex)
            {
                loadParam.DataLoadPromise.Reject(ex);
            }
        }
        public void Execute(LoadUserDataSignal signal)
        {
            try
            {
                string path = Path.Combine(Application.streamingAssetsPath, Constants.GameStateFile);

                if (File.Exists(path))
                {
                    StreamReader reader   = new StreamReader(path);
                    UserData     userData = JsonConvert.DeserializeObject <UserData>(reader.ReadToEnd());
                    reader.Close();

                    _remoteDataModel.SeedUserData(userData);

                    Debug.Log("UserData Loaded From: " + path);

                    signal.Promise.Resolve();
                }
                else
                {
                    signal.Promise.Reject(new FileNotFoundException(Constants.GameStateFile + " doesn't Exist."));
                }
            }
            catch (Exception ex)
            {
                signal.Promise.Reject(ex);
            }
        }
            public override void OnStateEnter()
            {
                base.OnStateEnter();

                UserData userData = GameSettings.DefaultGameState.User;

                CreateUserDataSignal.CreateUserData(SignalBus, userData).Then(
                    () => {
                    _remoteDataModel.SeedUserData(userData);
                    BootstrapModel.LoadingProgress.Value = BootstrapModel.ELoadingProgress.DataSeeded;
                }
                    ).Catch(e =>
                {
                    Debug.LogError("Exception Creating new User: " + e.ToString());
                });
            }