feat: 랭킹 조회 메소드 테스트 코드 추가
This commit is contained in:
@@ -183,5 +183,65 @@ namespace TON
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 플레이어 랭킹 리스트 불러오기기
|
||||
/// </summary>
|
||||
public void GetRankData(System.Action<List<ClearData>> onComplete = null)
|
||||
{
|
||||
// 가져올 필드 지정 (모든 필드를 가져오려면 null 사용)
|
||||
string[] select = new string[] { "nickname", "wave", "score", "play_time" };
|
||||
|
||||
// 결과 제한 수 (100개)
|
||||
int limit = 100;
|
||||
|
||||
// 첫 번째 정렬 기준 (wave 내림차순)
|
||||
string firstKey = "wave";
|
||||
|
||||
// 데이터 비동기 요청
|
||||
Backend.GameData.Get(RANK_TABLE, new Where(), select, limit, firstKey, TableSortOrder.DESC, bro =>
|
||||
{
|
||||
// 요청 성공 확인
|
||||
if (bro.IsSuccess())
|
||||
{
|
||||
// 데이터 처리
|
||||
LitJson.JsonData rankData = bro.GetReturnValuetoJSON()["rows"];
|
||||
Debug.Log("가져온 데이터 수: " + rankData.Count);
|
||||
|
||||
// ClearData 리스트 생성 및 변환
|
||||
List<ClearData> clearDataList = new List<ClearData>();
|
||||
|
||||
for (int i = 0; i < rankData.Count; i++)
|
||||
{
|
||||
LitJson.JsonData row = rankData[i];
|
||||
clearDataList.Add(new ClearData
|
||||
{
|
||||
nickname = row["nickname"].ToString(),
|
||||
wave = int.Parse(row["wave"].ToString()),
|
||||
score = int.Parse(row["score"].ToString()),
|
||||
playTime = float.Parse(row["play_time"].ToString()),
|
||||
});
|
||||
}
|
||||
|
||||
// 정렬 (score 내림차순, playTime 오름차순)
|
||||
clearDataList.Sort((a, b) =>
|
||||
{
|
||||
if (a.score != b.score) return b.score.CompareTo(a.score);
|
||||
return a.playTime.CompareTo(b.playTime);
|
||||
});
|
||||
|
||||
onComplete?.Invoke(clearDataList);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
// 오류 처리
|
||||
Debug.LogError($"랭크 데이터 가져오기 실패: {bro.GetMessage()}");
|
||||
Debug.LogError($"랭크 데이터 가져오기 실패: {bro.GetErrorCode()}");
|
||||
Debug.LogError($"랭크 데이터 가져오기 실패: {bro.GetStatusCode()}");
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,10 +28,10 @@ namespace TON
|
||||
clearDataManager = new BackendClearDataManager();
|
||||
rankDataManager = new BackendRankDataManager();
|
||||
|
||||
GetRankData();
|
||||
GetMyRankData();
|
||||
}
|
||||
|
||||
public void GetRankData()
|
||||
public void GetMyRankData()
|
||||
{
|
||||
// 서버에서 내 클리어 데이터를 가져오고 가장 기록이 높은 정보를 세팅
|
||||
rankDataManager.LoadMyRankData(rankData =>
|
||||
@@ -86,5 +86,19 @@ namespace TON
|
||||
expReward = 0;
|
||||
gameScore = 0;
|
||||
}
|
||||
|
||||
|
||||
public void GetRankList()
|
||||
{
|
||||
rankDataManager.GetRankData(rankList =>
|
||||
{
|
||||
int i = 1;
|
||||
rankList.ForEach((data) =>
|
||||
Debug.Log($"Rank {i++}: {data.nickname}, Wave {data.wave}, Score {data.score}, PlayTime {data.playTime}"));
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user