Example #1
0
        private static void OnRequestAchievementsCompleted(AGSRequestAchievementsResponse agsRequestAchievementsResponse)
        {
            var type            = typeof(Achievements);
            var allAchievements = new Dictionary <string, UnifiedAchievement>();

            foreach (var propertyInfo in type.GetProperties())
            {
                if (propertyInfo.PropertyType == typeof(UnifiedAchievement))
                {
                    allAchievements[propertyInfo.Name] = (UnifiedAchievement)propertyInfo.GetValue(null, null);
                }
            }

            if (agsRequestAchievementsResponse.achievements.Count > 0)
            {
                foreach (var agsAchievement in agsRequestAchievementsResponse.achievements)
                {
                    try
                    {
                        var kvp = allAchievements.Single(pair => pair.Value.ID == agsAchievement.id);
                        allAchievements[kvp.Key].UpdateData(agsAchievement.isUnlocked, agsAchievement.progress, agsAchievement.isHidden);
                    }
                    catch
                    {
#if CO_DEBUG
                        Debug.Log(string.Format(
                                      "An achievement ({0}) that doesn't exist in the Achievements class was loaded from native API.", agsAchievement.id));
#endif
                    }
                }
            }
        }
        private static void OnRequestAchievementsCompleted(AGSRequestAchievementsResponse agsRequestAchievementsResponse)
        {
            if (agsRequestAchievementsResponse.achievements.Count > 0)
            {
                foreach (var agsAchievement in agsRequestAchievementsResponse.achievements)
                {
                    if (agsAchievement == null || string.IsNullOrEmpty(agsAchievement.id))
                    {
                        continue;
                    }

                    var achievementFound = false;
                    foreach (var unifiedAchievement in Achievements.All)
                    {
                        if (unifiedAchievement.ID == agsAchievement.id)
                        {
                            unifiedAchievement.UpdateData(agsAchievement.isUnlocked, agsAchievement.progress, agsAchievement.isHidden);
                            achievementFound = true;
                            break;
                        }
                    }

                    if (!achievementFound)
                    {
#if CLOUDONCE_DEBUG
                        Debug.Log(string.Format(
                                      "An achievement ({0}) that doesn't exist in the Achievements class was loaded from native API.", agsAchievement.id));
#endif
                    }
                }
            }
        }
Example #3
0
        private void OnRequestAchievementsCompleted(AGSRequestAchievementsResponse response)
        {
            if (loadAchievementDescriptionsCallbacks.ContainsKey(response.userData))
            {
                var callback = loadAchievementDescriptionsCallbacks[response.userData];
                if (callback != null)
                {
                    var descriptions = new IAchievementDescription[response.achievements.Count];
                    for (var i = 0; i < response.achievements.Count; i++)
                    {
                        descriptions[i] = new AGSSocialAchievement(response.achievements[i]);
                    }

                    callback(descriptions);
                }

                loadAchievementDescriptionsCallbacks.Remove(response.userData);
            }
            else if (loadAchievementsCallbacks.ContainsKey(response.userData))
            {
                var callback = loadAchievementsCallbacks[response.userData];
                if (callback != null)
                {
                    var achievements = new IAchievement[response.achievements.Count];
                    for (var i = 0; i < response.achievements.Count; i++)
                    {
                        achievements[i] = new AGSSocialAchievement(response.achievements[i]);
                    }

                    callback(achievements);
                }

                loadAchievementsCallbacks.Remove(response.userData);
            }
        }
Example #4
0
 private void OnRequestAchievementsCompleted(AGSRequestAchievementsResponse response)
 {
     if (loadAchievementDescriptionsCallbacks.ContainsKey(response.userData))
     {
         Action <IAchievementDescription[]> callback = loadAchievementDescriptionsCallbacks.ContainsKey(response.userData) ? loadAchievementDescriptionsCallbacks[response.userData] : null;
         if (callback != null)
         {
             AGSSocialAchievement[] descriptions = new AGSSocialAchievement[response.achievements.Count];
             for (int i = 0; i < response.achievements.Count; i++)
             {
                 descriptions[i] = new AGSSocialAchievement(response.achievements[i]);
             }
             callback(descriptions);
         }
     }
     if (loadAchievementsCallbacks.ContainsKey(response.userData))
     {
         Action <IAchievement[]> callback = loadAchievementsCallbacks.ContainsKey(response.userData) ? loadAchievementsCallbacks[response.userData] : null;
         if (callback != null)
         {
             AGSSocialAchievement[] descriptions = new AGSSocialAchievement[response.achievements.Count];
             for (int i = 0; i < response.achievements.Count; i++)
             {
                 descriptions[i] = new AGSSocialAchievement(response.achievements[i]);
             }
             callback(descriptions);
         }
     }
     loadAchievementDescriptionsCallbacks.Remove(response.userData);
 }
 public static AGSRequestAchievementsResponse GetBlankResponseWithError(string error, int userData = 0)
 {
     AGSRequestAchievementsResponse response = new AGSRequestAchievementsResponse ();
     response.error = error;
     response.userData = userData;
     response.achievements = new List<AGSAchievement>();
     return response;
 }
    public static AGSRequestAchievementsResponse GetBlankResponseWithError(string error, int userData = 0)
    {
        AGSRequestAchievementsResponse response = new AGSRequestAchievementsResponse();

        response.error        = error;
        response.userData     = userData;
        response.achievements = new List <AGSAchievement>();
        return(response);
    }
    /// <summary>
    ///  callback method for native code to communicate events back to unity
    /// </summary>
    public static void RequestAchievementsFailed(string json)
    {
        AGSRequestAchievementsResponse response = AGSRequestAchievementsResponse.FromJSON(json);

        if (response.IsError() && RequestAchievementsFailedEvent != null)
        {
            RequestAchievementsFailedEvent(response.error);
        }
        if (RequestAchievementsCompleted != null)
        {
            RequestAchievementsCompleted(response);
        }
    }
    /// <summary>
    ///  requests a list of all achievements
    /// </summary>
    /// <remarks>
    /// Registered updateAchievementSucceededEvents will recieve response
    /// The list returned in the response includes all achievements for the game.
    /// Each Achievement object in the list includes the current players
    /// progress toward the Achievement.
    /// <param name="userData">
    /// ANDROID ONLY
    /// An optional code that will be returned in the response. Used to associate a function call to its response.
    /// A value of 0 is not recommended because 0 is the value returned when userData is not specified.
    /// </param>
    /// </remarks>
    public static void RequestAchievements(int userData = 0)
    {
#if UNITY_EDITOR && (UNITY_ANDROID || UNITY_IOS)
        // GameCircle only functions on device.
#elif UNITY_ANDROID
        JavaObject.Call("requestAchievements", userData);
#else
        AGSRequestAchievementsResponse response = AGSRequestAchievementsResponse.GetPlatformNotSupportedResponse(userData);
        if (RequestAchievementsFailedEvent != null)
        {
            RequestAchievementsFailedEvent(response.error);
        }
        if (RequestAchievementsCompleted != null)
        {
            RequestAchievementsCompleted(response);
        }
#endif
    }
 public static AGSRequestAchievementsResponse FromJSON(string json)
 {
     try {
         AGSRequestAchievementsResponse response = new AGSRequestAchievementsResponse ();
         Hashtable hashtable = json.hashtableFromJson();
         response.error = hashtable.ContainsKey("error") ? hashtable ["error"].ToString () : "";
         response.userData = hashtable.ContainsKey("userData") ? int.Parse(hashtable ["userData"].ToString ()) : 0;
         response.achievements = new List<AGSAchievement>();
         if (hashtable.ContainsKey("achievements")) {
             foreach (Hashtable achievementHashtable in hashtable["achievements"] as ArrayList) {
                 response.achievements.Add(AGSAchievement.fromHashtable(achievementHashtable));
             }
         }
         return response;
     } catch (Exception e) {
         AGSClient.LogGameCircleError(e.ToString());
         return GetBlankResponseWithError(JSON_PARSE_ERROR);
     }
 }
 public static AGSRequestAchievementsResponse FromJSON(string json)
 {
     try {
         AGSRequestAchievementsResponse response = new AGSRequestAchievementsResponse();
         Hashtable hashtable = json.hashtableFromJson();
         response.error        = hashtable.ContainsKey("error") ? hashtable ["error"].ToString() : "";
         response.userData     = hashtable.ContainsKey("userData") ? int.Parse(hashtable ["userData"].ToString()) : 0;
         response.achievements = new List <AGSAchievement>();
         if (hashtable.ContainsKey("achievements"))
         {
             foreach (Hashtable achievementHashtable in hashtable["achievements"] as ArrayList)
             {
                 response.achievements.Add(AGSAchievement.fromHashtable(achievementHashtable));
             }
         }
         return(response);
     } catch (Exception e) {
         AGSClient.LogGameCircleError(e.ToString());
         return(GetBlankResponseWithError(JSON_PARSE_ERROR));
     }
 }
Example #11
0
    private void OnRequestAchievementsCompleted(AGSRequestAchievementsResponse response)
    {
        if (response.IsError())
        {
            AMN_RequestAchievementsResult result = new AMN_RequestAchievementsResult(response.error);

            OnRequestAchievementsReceived(result);
        }
        else
        {
            Achievements.Clear();
            foreach (AGSAchievement achieve in response.achievements)
            {
                Achievements.Add(new GC_Achievement(achieve));
            }

            AMN_RequestAchievementsResult result = new AMN_RequestAchievementsResult(Achievements);

            OnRequestAchievementsReceived(result);
        }
    }
Example #12
0
 private void OnRequestAchievementsCompleted( AGSRequestAchievementsResponse response )
 {
     if (loadAchievementDescriptionsCallbacks.ContainsKey(response.userData)) {
         Action<IAchievementDescription[]> callback = loadAchievementDescriptionsCallbacks.ContainsKey (response.userData) ? loadAchievementDescriptionsCallbacks[response.userData] : null;
         if (callback != null) {
             AGSSocialAchievement[] descriptions = new AGSSocialAchievement[response.achievements.Count];
             for (int i = 0; i < response.achievements.Count; i++) {
                 descriptions[i] = new AGSSocialAchievement(response.achievements[i]);
             }
             callback(descriptions);
         }
     }
     if (loadAchievementsCallbacks.ContainsKey (response.userData)) {
         Action<IAchievement[]> callback = loadAchievementsCallbacks.ContainsKey(response.userData) ? loadAchievementsCallbacks[response.userData] : null;
         if (callback != null) {
             AGSSocialAchievement[] descriptions = new AGSSocialAchievement[response.achievements.Count];
             for (int i = 0; i < response.achievements.Count; i++) {
                 descriptions[i] = new AGSSocialAchievement(response.achievements[i]);
             }
             callback(descriptions);
         }
     }
     loadAchievementDescriptionsCallbacks.Remove (response.userData);
 }
 private void OnRequestAchievementsCompleted( AGSRequestAchievementsResponse response )
 {
     if (response.IsError ()) {
         // Update the status to show the failure message, and the error.
         requestAchievementsStatus = requestAchievementsFailedLabel;
         requestAchievementsStatusMessage = response.error;
     } else {
         // Update the status message to success.
         requestAchievementsStatus = requestAchievementsSucceededLabel;
         // Store the list of achievements locally.
         achievementList = response.achievements;
         // Mark the achievements as ready for use.
         // This bool is used instead of checking if the achievement list is null,
         // because the passed in achievement list can be null.
         // In that case, the menu should update to show that achievements were received, but empty.
         achievementsReady = true;
     }
 }