Exemplo n.º 1
0
    /// <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);
            }
        });
    }
Exemplo n.º 2
0
    /// 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);
        }
    }
Exemplo n.º 3
0
    /// <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);
         }
     });
 }
Exemplo n.º 5
0
 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();
		}
	}
Exemplo n.º 7
0
    /// <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);
            }
        });
    }
Exemplo n.º 8
0
    // Creates an empty leaderboard object.
    public ILeaderboard CreateLeaderboard()
    {
        var leaderboard = new LumosLeaderboard();

        return(leaderboard);
    }
Exemplo n.º 9
0
 /// <summary>
 /// Adds a leaderboard.
 /// </summary>
 /// <param name="leaderboard">The leaderboard to add.</param>
 public static void AddLeaderboard(LumosLeaderboard leaderboard)
 {
     _leaderboards[leaderboard.id] = leaderboard;
 }
Exemplo n.º 10
0
	/// <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);
				}
			});
	}
Exemplo n.º 11
0
	/// 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);
		}
	}
Exemplo n.º 12
0
	// Creates an empty leaderboard object.
	public ILeaderboard CreateLeaderboard ()
	{
		var leaderboard = new LumosLeaderboard();
		return leaderboard;
	}
Exemplo n.º 13
0
	/// <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);
				}
			});
	}
Exemplo n.º 14
0
	/// <summary>
	/// Adds a leaderboard.
	/// </summary>
	/// <param name="leaderboard">The leaderboard to add.</param>
	public static void AddLeaderboard (LumosLeaderboard leaderboard)
	{
		_leaderboards[leaderboard.id] = leaderboard;
	}
Exemplo n.º 15
0
	void LoadScoresFromLeaderboard (LumosLeaderboard leaderboard, Action<IScore[]> callback)
	{
		leaderboard.LoadScores(100, 0,
			success => {
				if (success) {
					callback(leaderboard.scores);
				} else {
					if (callback != null) {
						callback(null);
					}
				}
			}
		);
	}