diff --git a/Gameton-06/Assets/Gameton/Scripts/Backend/BackendRankDataManager.cs b/Gameton-06/Assets/Gameton/Scripts/Backend/BackendRankDataManager.cs index bf3560d8..ece92eb1 100644 --- a/Gameton-06/Assets/Gameton/Scripts/Backend/BackendRankDataManager.cs +++ b/Gameton-06/Assets/Gameton/Scripts/Backend/BackendRankDataManager.cs @@ -183,5 +183,65 @@ namespace TON } + /// + /// 플레이어 랭킹 리스트 불러오기기 + /// + public void GetRankData(System.Action> 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 clearDataList = new List(); + + 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()}"); + } + }); + + } + } } diff --git a/Gameton-06/Assets/Gameton/Scripts/GameStage/StageManager.cs b/Gameton-06/Assets/Gameton/Scripts/GameStage/StageManager.cs index 2ef95c2a..ffccff36 100644 --- a/Gameton-06/Assets/Gameton/Scripts/GameStage/StageManager.cs +++ b/Gameton-06/Assets/Gameton/Scripts/GameStage/StageManager.cs @@ -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}")); + }); + } + + + } }