/// <summary> /// Loads the leaderboard descriptions. /// </summary> /// <param name="callback">Callback.</param> public static void LoadLeaderboardDescriptions(Action <bool> callback) { var endpoint = "/leaderboards/info"; LumosRequest.Send(LumosSocial.instance, endpoint, LumosRequest.Method.GET, success => { var resp = success as IList; _leaderboards = new Dictionary <string, LumosLeaderboard>(); foreach (Dictionary <string, object> info in resp) { var leaderboard = new LumosLeaderboard(info); _leaderboards[leaderboard.id] = leaderboard; } if (callback != null) { callback(true); } }, error => { if (callback != null) { callback(false); } }); }
/// Loads the scores. public void LoadScores(string leaderboardID, Action <IScore[]> callback) { var leaderboard = LumosSocial.GetLeaderboard(leaderboardID); if (leaderboard == null) { leaderboard = new LumosLeaderboard(); leaderboard.id = leaderboardID; leaderboard.LoadDescription( success => { if (success) { LoadScoresFromLeaderboard(leaderboard, callback); } else { callback(null); } } ); } else { LoadScoresFromLeaderboard(leaderboard, callback); } }
/// <summary> /// Displays the leaderboards UI. /// </summary> /// <param name="windowRect">The bounding rect of the window.</param> public static void OnGUI(Rect windowRect) { if (LumosSocialGUI.currentUser == null) { LumosSocialGUI.statusMessage = "You must login before viewing leaderboards."; LumosSocialGUI.DrawLoginButton(); return; } if (LumosSocial.leaderboards == null) { LumosSocialGUI.statusMessage = "Loading leaderboards..."; if (!LumosSocialGUI.inProgress) { LumosSocial.LoadLeaderboardDescriptions(success => { LumosSocialGUI.statusMessage = null; }); LumosSocialGUI.inProgress = true; } return; } if (LumosSocial.leaderboards.Length > 0) { foreach (var leaderboard in LumosSocial.leaderboards) { if (leaderboard.loading) { GUILayout.Label("Loading..."); GUI.enabled = false; } if (GUILayout.Button(leaderboard.title)) { currentLeaderboard = leaderboard as LumosLeaderboard; LumosSocialGUI.ShowWindow(LumosGUIWindow.Scores); if (currentLeaderboard.scores == null) { Social.LoadScores(currentLeaderboard.id, null); } } GUI.enabled = true; } LumosSocialGUI.DrawDivider(); } }
// Loads the scores for a leaderboard // It also loads friend scores automatically public static void LoadScores(LumosLeaderboard leaderboard, int limit, int offset) { leaderboard.LoadScores(limit, offset, (success) => { if (success) { Debug.Log("Loaded scores for: " + leaderboard.id); // access scores using leaderboard.scores } else { Debug.LogWarning("Unable to load scores for " + leaderboard.id); } }); }
void LoadScoresFromLeaderboard(LumosLeaderboard leaderboard, Action <IScore[]> callback) { leaderboard.LoadScores(100, 0, success => { if (success) { callback(leaderboard.scores); } else { if (callback != null) { callback(null); } } } ); }
/// <summary> /// Displays the leaderboards UI. /// </summary> /// <param name="windowRect">The bounding rect of the window.</param> public static void OnGUI (Rect windowRect) { if (LumosSocialGUI.currentUser == null) { LumosSocialGUI.statusMessage = "You must login before viewing leaderboards."; LumosSocialGUI.DrawLoginButton(); return; } if (LumosSocial.leaderboards == null) { LumosSocialGUI.statusMessage = "Loading leaderboards..."; if (!LumosSocialGUI.inProgress) { LumosSocial.LoadLeaderboardDescriptions(success => { LumosSocialGUI.statusMessage = null; }); LumosSocialGUI.inProgress = true; } return; } if (LumosSocial.leaderboards.Length > 0) { foreach (var leaderboard in LumosSocial.leaderboards) { if (leaderboard.loading) { GUILayout.Label("Loading..."); GUI.enabled = false; } if (GUILayout.Button(leaderboard.title)) { currentLeaderboard = leaderboard as LumosLeaderboard; LumosSocialGUI.ShowWindow(LumosGUIWindow.Scores); if (currentLeaderboard.scores == null) { Social.LoadScores(currentLeaderboard.id, null); } } GUI.enabled = true; } LumosSocialGUI.DrawDivider(); } }
/// <summary> /// Loads a leaderboard with only friend scores. /// </summary> /// <param name="callback">Callback.</param> public void LoadFriendLeaderboardScores(Action <bool> callback) { var endpoint = "/users/" + id + "/friends/scores"; LumosRequest.Send(LumosSocial.instance, endpoint, LumosRequest.Method.GET, success => { var resp = success as IList; var leaderboards = new LumosLeaderboard[resp.Count]; for (int i = 0; i < resp.Count; i++) { leaderboards[i] = new LumosLeaderboard(resp[i] as Dictionary <string, object>); } foreach (var leaderboard in leaderboards) { var current = LumosSocial.GetLeaderboard(leaderboard.id); // Leaderboard already exists; update friend scores only. if (current != null) { current.friendScores = leaderboard.friendScores; } // Leaderboard doesn't exist yet; add entire leaderboard. else { LumosSocial.AddLeaderboard(leaderboard); } } if (callback != null) { callback(true); } }, error => { if (callback != null) { callback(false); } }); }
// Creates an empty leaderboard object. public ILeaderboard CreateLeaderboard() { var leaderboard = new LumosLeaderboard(); return(leaderboard); }
/// <summary> /// Adds a leaderboard. /// </summary> /// <param name="leaderboard">The leaderboard to add.</param> public static void AddLeaderboard(LumosLeaderboard leaderboard) { _leaderboards[leaderboard.id] = leaderboard; }
/// <summary> /// Loads a leaderboard with only friend scores. /// </summary> /// <param name="callback">Callback.</param> public void LoadFriendLeaderboardScores (Action<bool> callback) { var endpoint = "/users/" + id + "/friends/scores"; LumosRequest.Send(LumosSocial.instance, endpoint, LumosRequest.Method.GET, success => { var resp = success as IList; var leaderboards = new LumosLeaderboard[resp.Count]; for (int i = 0; i < resp.Count; i++) { leaderboards[i] = new LumosLeaderboard(resp[i] as Dictionary<string, object>); } foreach (var leaderboard in leaderboards) { var current = LumosSocial.GetLeaderboard(leaderboard.id); // Leaderboard already exists; update friend scores only. if (current != null) { current.friendScores = leaderboard.friendScores; } // Leaderboard doesn't exist yet; add entire leaderboard. else { LumosSocial.AddLeaderboard(leaderboard); } } if (callback != null) { callback(true); } }, error => { if (callback != null) { callback(false); } }); }
/// Loads the scores. public void LoadScores (string leaderboardID, Action<IScore[]> callback) { var leaderboard = LumosSocial.GetLeaderboard(leaderboardID); if (leaderboard == null) { leaderboard = new LumosLeaderboard(); leaderboard.id = leaderboardID; leaderboard.LoadDescription( success => { if (success) { LoadScoresFromLeaderboard(leaderboard, callback); } else { callback(null); } } ); } else { LoadScoresFromLeaderboard(leaderboard, callback); } }
// Creates an empty leaderboard object. public ILeaderboard CreateLeaderboard () { var leaderboard = new LumosLeaderboard(); return leaderboard; }
/// <summary> /// Loads the leaderboard descriptions. /// </summary> /// <param name="callback">Callback.</param> public static void LoadLeaderboardDescriptions(Action<bool> callback) { var endpoint = "/leaderboards/info"; LumosRequest.Send(LumosSocial.instance, endpoint, LumosRequest.Method.GET, success => { var resp = success as IList; _leaderboards = new Dictionary<string, LumosLeaderboard>(); foreach (Dictionary<string, object> info in resp) { var leaderboard = new LumosLeaderboard(info); _leaderboards[leaderboard.id] = leaderboard; } if (callback != null) { callback(true); } }, error => { if (callback != null) { callback(false); } }); }
/// <summary> /// Adds a leaderboard. /// </summary> /// <param name="leaderboard">The leaderboard to add.</param> public static void AddLeaderboard (LumosLeaderboard leaderboard) { _leaderboards[leaderboard.id] = leaderboard; }
void LoadScoresFromLeaderboard (LumosLeaderboard leaderboard, Action<IScore[]> callback) { leaderboard.LoadScores(100, 0, success => { if (success) { callback(leaderboard.scores); } else { if (callback != null) { callback(null); } } } ); }