示例#1
0
    /// <summary>
    /// @brief 現プレイヤーのハイスコアを受けとってランクを取得 ---------------
    /// </summary>
    /// <param name="currentScore"></param>
    public void FetchRank(double currentScore)
    {
        // データスコアの「HighScore」から検索
        NCMBQuery <NCMBObject> rankQuery = new NCMBQuery <NCMBObject>("HighScore");

        rankQuery.WhereLessThan("Score", currentScore);
        rankQuery.CountAsync((int count, NCMBException e) => {
            if (e != null)
            {
                //件数取得失敗
            }
            else
            {
                //件数取得成功
                currentRank = count + 1; // 自分よりスコアが上の人がn人いたら自分はn+1位
            }
        });
    }
示例#2
0
    /// <summary>
    /// 現在の自分の順位を取得する。
    /// ※ ログインが必須
    /// </summary>
    /// <param name="callback">コールバック関数</param>
    public void GetCurrentRank(IntCallback callback)
    {
        // ログイン状態の確認を行う
        if (!GetIsLogIn)
        {
            callback(0, new NCMBException(NCMBUTErrorMessage.NOT_LOGIN_ERROR));
            return;
        }

        // 自分のスコアデータを取得する
        NCMBQuery <NCMBObject> findQuery = GetPlaneQuery(NCMBUTRankingsDefaultSettings.RANKING_CLASS);

        findQuery.WhereEqualTo(NCMBUTRankingsDefaultSettings.RankingsDefaultFields.player.ToString(), NCMBUser.CurrentUser);
        findQuery.WhereEqualTo(NCMBUTRankingsDefaultSettings.RankingsDefaultFields.stage.ToString(), Stage);
        findQuery.FindAsync((List <NCMBObject> objList, NCMBException findError) => {
            // 検索結果がなければ0を返す
            if (objList.Count == 0)
            {
                callback(0, findError);
                return;
            }

            // スコアデータを元に順位を取得
            NCMBQuery <NCMBObject> countQuery = GetQuery(NCMBUTRankingsDefaultSettings.RANKING_CLASS);

            switch (Sort)
            {
            case NCMBUTSortType.Ascending:
                countQuery.WhereLessThan(SortField, objList[0][SortField]);
                break;

            case NCMBUTSortType.Descending:
                countQuery.WhereGreaterThan(SortField, objList[0][SortField]);
                break;
            }

            countQuery.WhereEqualTo(NCMBUTRankingsDefaultSettings.RankingsDefaultFields.stage.ToString(), Stage);
            countQuery.CountAsync((int count, NCMBException countError) => {
                callback(count + 1, countError);
                return;
            });
        });
    }