public static void GetAndSendRankTop8(Session session, Session.EncodingScheme encoding, bool single = false) { funapi.Leaderboard.QueryRequest request = new funapi.Leaderboard.QueryRequest( single ? kSingleLeaderboardId : kLeaderboardId, funapi.Leaderboard.Timespan.kAllTime, new funapi.Leaderboard.Range(funapi.Leaderboard.RangeType.kFromTop, 0, 7)); funapi.Leaderboard.GetLeaderboard(request, (_1, _2, _3) => { OnGetRankTop8(_1, _2, _3, session, encoding, single); }); }
public static void OnGetRankTop8( funapi.Leaderboard.QueryRequest request, funapi.Leaderboard.QueryResponse response, bool error, Session session, Session.EncodingScheme encoding, bool single) { if (error) { Log.Error("Failed to query leaderboard. Leaderboard system error."); return; } string msgtype = single ? "ranklist_single" : "ranklist"; if (encoding == Session.EncodingScheme.kJsonEncoding) { JObject result = new JObject(); result ["ranks"] = new JObject(); int index = 0; foreach (funapi.Leaderboard.Record record in response.Records) { string index_str = index.ToString(); result ["ranks"] [index_str] = new JObject(); result ["ranks"] [index_str] ["rank"] = record.Rank; result ["ranks"] [index_str] ["score"] = record.Score; result ["ranks"] [index_str] ["id"] = record.PlayerAccount.Id; ++index; } session.SendMessage(msgtype, result, Session.Encryption.kDefault); } else { Log.Assert(encoding == Session.EncodingScheme.kProtobufEncoding); FunMessage message = new FunMessage(); LobbyRankListReply reply = new LobbyRankListReply(); reply.result = "Success"; int index = 0; foreach (funapi.Leaderboard.Record record in response.Records) { LobbyRankListReply.RankElement el = new LobbyRankListReply.RankElement(); string index_str = index.ToString(); el.rank = record.Rank; el.score = (int)record.Score; el.id = record.PlayerAccount.Id; reply.rank.Add(el); ++index; } message.AppendExtension_lobby_rank_list_repl(reply); session.SendMessage(msgtype, message, Session.Encryption.kDefault); } }
public static int GetRecord(string account_id, bool single = false) { // TODO: Async API 로 교체 funapi.Leaderboard.QueryRequest request = new funapi.Leaderboard.QueryRequest( single ? kSingleLeaderboardId : kLeaderboardId, kAccountServiceProvider, account_id, funapi.Leaderboard.Timespan.kAllTime, new funapi.Leaderboard.Range(funapi.Leaderboard.RangeType.kNearby, 0, 0)); funapi.Leaderboard.QueryResponse response; if (!funapi.Leaderboard.GetLeaderboardSync(request, out response)) { Log.Error("Failed to query leaderboard. Leaderboard system error."); return(0); } List <funapi.Leaderboard.Record> .Enumerator enumerator = response.Records.GetEnumerator(); if (!enumerator.MoveNext()) { return(0); } return((int)enumerator.Current.Score); }