/// <summary> /// ランキングデータ取得 /// </summary> /// <param name="_gameNo">Game no.</param> /// <param name="_diff">Diff.</param> /// <param name="_type">Type.</param> /// <param name="_success">Success.</param> /// <param name="_failure">Failure.</param> public void GetRankingData(int _gameNo, int _diff, GetRankingType _type, Action <Ranking.Data[]> _success, Action _failure) { if (!SteamManager.Initialized) { // SteamAPIの初期化が行われていない if (_failure != null) { _failure(); } return; } StartCoroutine(_DownloadEntry(_gameNo, _diff, _type, _success, _failure)); }
IEnumerator _DownloadEntry(int _gameNo, int _diff, GetRankingType _type, Action <Ranking.Data[]> _success, Action _failure) { bool retFind = false; string leaderboard_name = LEADERBOARD_NANE[_gameNo]; // リーダーボード取得 SteamManager.Instance.Leaderboard.FindLeaderboard(leaderboard_name, (_find) => { switch (_type) { // ユーザー自身順位 case GetRankingType.USER_CURRENT: { CSteamID[] ids = { SteamUser.GetSteamID() }; SteamManager.Instance.Leaderboard.DownloadScoreUsers(ids, (_data) => { retFind = true; }); } break; // グローバル順位 case GetRankingType.GLOBAL: SteamManager.Instance.Leaderboard.DownloadScoreGlobal(GLOBAL_RANKING_START_NUM, GLOBAL_RANKING_GET_NUM, (_data) => { retFind = true; }); break; } }); while (!retFind) { // 取得待ち yield return(new WaitForEndOfFrame()); } ; Ranking.Data[] arrayRankingData = new Ranking.Data[SteamManager.Instance.Leaderboard.CurrentDownloadEntryCnt]; for (int i = 0; i < arrayRankingData.Length; ++i) { LeaderboardEntry_t leaderboardEntry; bool ret = SteamUserStats.GetDownloadedLeaderboardEntry(SteamManager.Instance.Leaderboard.SteamLeaderboardEntries, i, out leaderboardEntry, null, 0); if (ret) { arrayRankingData[i] = new Ranking.Data(leaderboardEntry.m_nGlobalRank, SteamFriends.GetFriendPersonaName(leaderboardEntry.m_steamIDUser), leaderboardEntry.m_nScore); } } if (_success != null) { _success(arrayRankingData); } }