public void StoreItemsFromJson(GetUserDataResult res) { Items.Clear(); if (res == null || res.Data["fm_user_achievements"] == null) { Debug.Log("no user achievements yet"); return; } UAjson = JSON.Parse(res.Data["fm_user_achievements"].Value); //storing raw values to update later and send var userAchievements = JSON.Parse(res.Data["fm_user_achievements"].Value); for (int i = 0; i < userAchievements.Count; i++) { string name = GetUserAchievementName(userAchievements[i]); FMAchievementState[] values = new FMAchievementState[userAchievements[i][name].AsArray.Count]; for (int j = 0; j < userAchievements[i][name].AsArray.Count; j++) { values[j] = (FMAchievementState)userAchievements[i][name][j].AsInt; } FMUserAchievement item = new FMUserAchievement(name, values); Items.Add(item); } }
public FMPlayfabUserAchievementResult(ExecuteCloudScriptResult res) { //Debug.Log("user achv res: "+JSON.Parse(res.ToString())); if (res.FunctionResult == null) { return; } var json = JSON.Parse(res.FunctionResult.ToString()); if ((json.Value.Equals("null") || res.Error != null)) { status = FMAchievementStatus.error; ErrorMessage = res.Error.Message; return; } userAchievements = json["userAchievements"].AsArray; //////////////////////////////////////////////////// //we will check the state of the achievement (locked, unlocked, claimed, etc) depeding on the json for (int i = 0; i < FMPlayfabAchievements.Items.Count; i++) { var item = FMPlayfabAchievements.Items[i]; JSONNode nodeGetReward = ContainsAchievement(item.Key); //if (nodeGetReward != null) //{ // switch (nodeGetReward[item.Key].AsInt) // { // case 0: // item.State = IVAchievementState.Locked; // break; // case 1: // item.State = IVAchievementState.Unclaimed; // break; // case 2: // item.State = IVAchievementState.Claimed; // break; // default: // break; // } // item.State = nodeGetReward[item.Key].AsInt != 1 ? IVAchievementState.Unclaimed : IVAchievementState.Claimed; } //User IV achievements if (userAchievements == null) { return; } foreach (JSONNode kvp in userAchievements) { string name = FMPlayfabUserAchievement.Instance.GetUserAchievementName(kvp); FMAchievementState[] values = new FMAchievementState[kvp.Value.Length]; for (int j = 0; j < kvp.Value.Length; j++) { values[j] = (FMAchievementState)(kvp[name].AsInt); } var userItem = new FMUserAchievement(name, values); UserItems.Add(userItem); } }