/// <summary> /// Get the name of the given method as a string /// </summary> /// <param name="cb">method group (int f())</param> /// <returns></returns> internal static string getNameInt(CallbackInt cb) { return cb.Method.Name; }
//指定したレコードのランクを取得 public void fetchRank(string name, int gameModeId, Save_ranking_item save_Ranking_Item, CallbackInt callback) { currentRank = 0; RankingRecord myRecord = null; // データスコアの「HighScore」から検索 NCMBQuery <NCMBObject> query = new NCMBQuery <NCMBObject>(rankingClassName); query.WhereEqualTo("name", name); query.WhereEqualTo("gameModeId", gameModeId); query.WhereEqualTo("type", (int)save_Ranking_Item); query.FindAsync((List <NCMBObject> objList, NCMBException e) => { if (e == null && objList.Count > 0) { //検索成功したら string _name = System.Convert.ToString(objList[0]["name"]); // 名前を取得 float _distance = System.Convert.ToSingle(objList[0]["distance"]); // スコアを取得 float _timeSpan = System.Convert.ToSingle(objList[0]["timeSpan"]); myRecord = new RankingRecord(0, _name, _distance, _timeSpan, save_Ranking_Item); var query2 = new NCMBQuery <NCMBObject>(rankingClassName); query2.WhereEqualTo("gameModeId", gameModeId); query2.WhereEqualTo("type", (int)save_Ranking_Item); switch (save_Ranking_Item) { case Save_ranking_item.SAVE_RANKING_HIGH: query2.WhereGreaterThanOrEqualTo("distance", myRecord.distance); break; case Save_ranking_item.SAVE_RANKING_LOW: query2.WhereLessThanOrEqualTo("distance", myRecord.distance); break; default: break; } query2.CountAsync((int count, NCMBException e2) => { if (e2 != null) { //件数取得失敗 callback(currentRank); } else { //件数取得成功 currentRank = count + 1; // 自分よりスコアが上の人がn人いたら自分はn+1位 } callback(currentRank); }); } else { callback(currentRank); } return; }); }