diff --git a/Gameton-06/Assets/Gameton/Scripts/Backend/BackendHeartDataManager.cs b/Gameton-06/Assets/Gameton/Scripts/Backend/BackendHeartDataManager.cs index 934d7b3b..ba7d4235 100644 --- a/Gameton-06/Assets/Gameton/Scripts/Backend/BackendHeartDataManager.cs +++ b/Gameton-06/Assets/Gameton/Scripts/Backend/BackendHeartDataManager.cs @@ -38,7 +38,6 @@ namespace TON { heartData.currentHearts = int.Parse(callback.FlattenRows()[0]["currentHearts"].ToString()); - Debug.Log("test::: " + callback.FlattenRows()[0]["lastHeartTime"]); heartData.lastHeartTime = callback.FlattenRows()[0]["lastHeartTime"].ToString(); onComplete?.Invoke(heartData); // 성공 시 데이터 반환 } diff --git a/Gameton-06/Assets/Gameton/Scripts/GameStage/StageManager.cs b/Gameton-06/Assets/Gameton/Scripts/GameStage/StageManager.cs index 2de402e0..7b39d3ee 100644 --- a/Gameton-06/Assets/Gameton/Scripts/GameStage/StageManager.cs +++ b/Gameton-06/Assets/Gameton/Scripts/GameStage/StageManager.cs @@ -1,5 +1,6 @@ using System.Collections; using System.Collections.Generic; +using System.Threading.Tasks; using UnityEngine; using UnityEngine.Assertions; @@ -88,9 +89,14 @@ namespace TON gameScore = 0; } - // 전체 랭킹 리스트 조회 - public void GetRankList() + // 전체 랭킹 리스트 조회 + public void GetRankList(System.Action onComplete = null) { + if (RankList.Count > 0) + { + RankList.Clear(); + } + rankDataManager.GetRankData(rankData => { for (int i = 0; i < rankData.Count; i++) @@ -112,11 +118,22 @@ namespace TON if (a.score != b.score) return b.score.CompareTo(a.score); return a.playTime.CompareTo(b.playTime); }); + + // top 50 까지만 RankList에 세팅 + if (RankList.Count > 50) + { + RankList = RankList.GetRange(0, 50); + } + + onComplete?.Invoke(); }); } - public List GetRankDataList() + public async Task> GetRankDataListAsync() { + var tcs = new TaskCompletionSource(); + GetRankList(() => tcs.SetResult(true)); + await tcs.Task; return RankList; } diff --git a/Gameton-06/Assets/Gameton/Scripts/UI/LobbyUI.cs b/Gameton-06/Assets/Gameton/Scripts/UI/LobbyUI.cs index 9bb3d2bf..79bff62e 100644 --- a/Gameton-06/Assets/Gameton/Scripts/UI/LobbyUI.cs +++ b/Gameton-06/Assets/Gameton/Scripts/UI/LobbyUI.cs @@ -123,17 +123,19 @@ namespace TON UIManager.Show(UIList.SkillSettingUI); } - public void OnClickRankingButton() + public async void OnClickRankingButton() { - // 랭킹 UI 추가 + // 랭킹 정보를 다시 불러오기 위해 await 사용 + UIManager.Show(UIList.LoadingUI); + await StageManager.Singleton.GetRankDataListAsync(); + + UIManager.Hide(UIList.LoadingUI); + UIManager.Show(UIList.RankingUI); } public void OnClickShopButton() { - // TODO: 상점 UI 추가 - // 상점은 Scene으로 전환하자. - Main.Singleton.ChangeScene(SceneType.Shop); } diff --git a/Gameton-06/Assets/Gameton/Scripts/UI/RankingUI.cs b/Gameton-06/Assets/Gameton/Scripts/UI/RankingUI.cs index d3c6d641..7cb35b98 100644 --- a/Gameton-06/Assets/Gameton/Scripts/UI/RankingUI.cs +++ b/Gameton-06/Assets/Gameton/Scripts/UI/RankingUI.cs @@ -1,8 +1,8 @@ using System.Collections; using System.Collections.Generic; +using System.Threading.Tasks; using TMPro; using UnityEngine; -using UnityEngine.Assertions; using UnityEngine.UI; namespace TON @@ -25,12 +25,13 @@ namespace TON [SerializeField] private TextMeshProUGUI scoreText; [SerializeField] private TextMeshProUGUI playTimeText; + private List rankList = new List(); + private void OnEnable() { // 랭킹 불러오기 오류 팝업 기본 상태 errorPopup.SetActive(false); - // 랭킹 리스트 서버 오류 수정 후 주석 해제 SetRankList(); SetMyRankData(); } @@ -41,7 +42,7 @@ namespace TON int myRankNumber = StageManager.Singleton.GetMyRankNumber(); playerName.text = TOP_RECORD.nickname; - rankNumber.text = myRankNumber > -1 ? $"{myRankNumber} th" : "Not Record"; + rankNumber.text = myRankNumber > -1 ? $"{myRankNumber + 1} th" : "Not Record"; waveText.text = $"{TOP_RECORD.wave}"; scoreText.text = $"{TOP_RECORD.score}"; @@ -64,7 +65,7 @@ namespace TON uiPrefabList.Clear(); } - List rankList = StageManager.Singleton.GetRankDataList(); + rankList = StageManager.Singleton.RankList; if (rankList.Count == 0) {