public static AGSRequestPercentilesResponse FromJSON(string json) { try { AGSRequestPercentilesResponse response = new AGSRequestPercentilesResponse(); Hashtable hashtable = json.hashtableFromJson(); response.error = hashtable.ContainsKey("error") ? hashtable ["error"].ToString() : ""; response.userData = hashtable.ContainsKey("userData") ? int.Parse(hashtable ["userData"].ToString()) : 0; response.leaderboardId = hashtable.ContainsKey("leaderboardId") ? hashtable ["leaderboardId"].ToString() : ""; if (hashtable.ContainsKey("leaderboard")) { response.leaderboard = AGSLeaderboard.fromHashtable(hashtable ["leaderboard"] as Hashtable); } else { response.leaderboard = AGSLeaderboard.GetBlankLeaderboard(); } response.percentiles = new List <AGSLeaderboardPercentile> (); if (hashtable.Contains("percentiles")) { foreach (Hashtable percentileHashtable in hashtable["percentiles"] as ArrayList) { response.percentiles.Add(AGSLeaderboardPercentile.fromHashTable(percentileHashtable)); } } response.userIndex = hashtable.ContainsKey("userIndex") ? int.Parse(hashtable ["userIndex"].ToString()) : -1; response.scope = (LeaderboardScope)Enum.Parse(typeof(LeaderboardScope), hashtable["scope"].ToString()); return(response); } catch (Exception e) { AGSClient.LogGameCircleError(e.ToString()); return(GetBlankResponseWithError(JSON_PARSE_ERROR)); } }
public static AGSRequestPercentilesResponse FromJSON(string json) { try { AGSRequestPercentilesResponse response = new AGSRequestPercentilesResponse (); Hashtable hashtable = json.hashtableFromJson(); response.error = hashtable.ContainsKey("error") ? hashtable ["error"].ToString () : ""; response.userData = hashtable.ContainsKey("userData") ? int.Parse(hashtable ["userData"].ToString ()) : 0; response.leaderboardId = hashtable.ContainsKey("leaderboardId") ? hashtable ["leaderboardId"].ToString() : ""; if (hashtable.ContainsKey("leaderboard")) { response.leaderboard = AGSLeaderboard.fromHashtable (hashtable ["leaderboard"] as Hashtable); } else { response.leaderboard = AGSLeaderboard.GetBlankLeaderboard(); } response.percentiles = new List<AGSLeaderboardPercentile> (); if (hashtable.Contains ("percentiles")) { foreach (Hashtable percentileHashtable in hashtable ["percentiles"] as ArrayList) { response.percentiles.Add(AGSLeaderboardPercentile.fromHashTable(percentileHashtable)); } } response.userIndex = hashtable.ContainsKey ("userIndex") ? int.Parse (hashtable ["userIndex"].ToString ()) : -1; response.scope = (LeaderboardScope) Enum.Parse(typeof(LeaderboardScope), hashtable["scope"].ToString()); return response; } catch (Exception e) { AGSClient.LogGameCircleError(e.ToString()); return GetBlankResponseWithError(JSON_PARSE_ERROR); } }
/// <summary> /// callback method for native code to communicate events back to unity /// </summary> public static void RequestPercentileRanksSucceeded(string json) { AGSRequestPercentilesResponse response = AGSRequestPercentilesResponse.FromJSON(json); if (!response.IsError() && RequestPercentileRanksSucceededEvent != null) { RequestPercentileRanksSucceededEvent(response.leaderboard, response.percentiles, response.userIndex); } if (RequestPercentileRanksCompleted != null) { RequestPercentileRanksCompleted(response); } }
/// <summary> /// callback method for native code to communicate events back to unity /// </summary> public static void RequestPercentileRanksFailed(string json) { AGSRequestPercentilesResponse response = AGSRequestPercentilesResponse.FromJSON(json); if (response.IsError() && RequestPercentileRanksFailedEvent != null) { RequestPercentileRanksFailedEvent(response.leaderboardId, response.error); } if (RequestPercentileRanksCompleted != null) { RequestPercentileRanksCompleted(response); } }
public static AGSRequestPercentilesResponse GetBlankResponseWithError(string error, string leaderboardId = "", LeaderboardScope scope = LeaderboardScope.GlobalAllTime, int userData = 0) { AGSRequestPercentilesResponse response = new AGSRequestPercentilesResponse (); response.error = error; response.userData = userData; response.leaderboardId = leaderboardId; response.scope = scope; response.leaderboard = AGSLeaderboard.GetBlankLeaderboard (); response.percentiles = new List<AGSLeaderboardPercentile>(); response.userIndex = -1; response.scope = scope; return response; }
public static AGSRequestPercentilesResponse GetBlankResponseWithError(string error, string leaderboardId = "", LeaderboardScope scope = LeaderboardScope.GlobalAllTime, int userData = 0) { AGSRequestPercentilesResponse response = new AGSRequestPercentilesResponse(); response.error = error; response.userData = userData; response.leaderboardId = leaderboardId; response.scope = scope; response.leaderboard = AGSLeaderboard.GetBlankLeaderboard(); response.percentiles = new List <AGSLeaderboardPercentile>(); response.userIndex = -1; response.scope = scope; return(response); }
/// <summary> /// request percentile ranks /// </summary> /// <remarks> /// RequestPercentileRanksCompleted will be called if the event is registered. /// </remarks> /// <param name="leaderboardId">the id of the leaderboard for the score request.</param> /// <param name="scope">enum value of leaderboard scope</param> /// <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> public static void RequestPercentileRanks(string leaderboardId, LeaderboardScope scope, int userData = 0) { #if UNITY_EDITOR && (UNITY_ANDROID || UNITY_IOS) // GameCircle only functions on device. #elif UNITY_ANDROID JavaObject.Call("requestPercentileRanks", leaderboardId, (int)scope, userData); #else AGSRequestPercentilesResponse response = AGSRequestPercentilesResponse.GetPlatformNotSupportedResponse(leaderboardId, scope, userData); if (RequestPercentileRanksFailedEvent != null) { RequestPercentileRanksFailedEvent(response.leaderboardId, response.error); } if (RequestPercentileRanksCompleted != null) { RequestPercentileRanksCompleted(response); } #endif }
private void OnRequestPercentileRanksCompleted( AGSRequestPercentilesResponse response ) { if (response.IsError ()) { // Update the percentiles request status message to show the error that occured. List<string> failureStringContainer = new List<string>(); failureStringContainer.Add(string.Format(percentilesFailed, response.leaderboardId)); leaderboardsPercentilesStatus[response.leaderboardId] = failureStringContainer; leaderboardsPercentilesStatusMessage[response.leaderboardId] = response.error; } else { // Format the response into human readable strings. List<string> formattedResult = new List<string>(); foreach (AGSLeaderboardPercentile percentile in response.percentiles){ formattedResult.Add(string.Format(percentileRankLabel, percentile.player.ToString(), percentile.percentile, percentile.score)); } formattedResult.Add(string.Format(localPlayerIndexLabel, response.userIndex)); // Update the status for the percentile response. leaderboardsPercentilesStatus[response.leaderboardId] = formattedResult; } }