/// <inheritdoc />
        public override void Save(
            GameFoundationData content,
            Action onSaveCompleted          = null,
            Action <Exception> onSaveFailed = null)
        {
            string keyBackup = $"{Key}{kBackupSuffix}";

            try
            {
                string serializedData = serializer.Serialize(content);

                PlayFabClientAPI.UpdateUserData(new UpdateUserDataRequest()
                {
                    Permission = UserDataPermission.Private,
                    Data       = new Dictionary <string, string>()
                    {
                        { Key, serializedData },
                        { keyBackup, serializedData }
                    }
                },
                                                (result) => { onSaveCompleted?.Invoke(); },
                                                (error) => { onSaveFailed?.Invoke(new Exception(error.ErrorMessage)); });
            }
            catch (Exception e)
            {
                onSaveFailed?.Invoke(e);
            }
        }
        /// <inheritdoc />
        public override void Load(
            Action <GameFoundationData> onLoadCompleted = null,
            Action <Exception> onLoadFailed             = null)
        {
            string keyBackup = $"{Key}{kBackupSuffix}";

            try
            {
                PlayFabClientAPI.GetUserData(new GetUserDataRequest()
                {
                    PlayFabId = _playFabId,
                    Keys      = new List <string> {
                        Key, keyBackup
                    }
                }, (result) =>
                {
                    if (result.Data.ContainsKey(Key))
                    {
                        GameFoundationData data = serializer.Deserialize(result.Data[Key].Value);
                        onLoadCompleted?.Invoke(data);
                    }
                    else if (result.Data.ContainsKey(keyBackup))
                    {
                        GameFoundationData data = serializer.Deserialize(result.Data[keyBackup].Value);
                        onLoadCompleted?.Invoke(data);
                    }
                    else
                    {
                        Debug.LogWarning($"The PlayerData (Title) with key '{Key}' (also backup) is missing in player: '{_playFabId}'. So GameFoundation has default data from Database.");
                        onLoadCompleted?.Invoke(CatalogSettings.catalogAsset.CreateDefaultData());
                    }
                }, (error) =>
                {
                    onLoadFailed?.Invoke(new Exception(error.ErrorMessage));
                });
            }
            catch (Exception e)
            {
                onLoadFailed?.Invoke(e);
            }
        }
Ejemplo n.º 3
0
        /// <inheritdoc />
        public string Serialize(GameFoundationData data)
        {
            var json = JsonUtility.ToJson(data);

            return(json);
        }
 /// <inheritdoc />
 public abstract void Save(GameFoundationData content, Action onSaveCompleted = null, Action <Exception> onSaveFailed = null);