fix: 랭킹 정보 갱신된 후 전체 랭킹 UI 접근 시 랭킹 정보가 정상적으로 업데이트 되지 않는 오류 수정

This commit is contained in:
aube.lee
2025-03-12 00:30:44 +09:00
parent c6b9154ba5
commit 0f5ddcca21
4 changed files with 32 additions and 13 deletions

View File

@@ -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); // 성공 시 데이터 반환
}

View File

@@ -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<ClearData> GetRankDataList()
public async Task<List<ClearData>> GetRankDataListAsync()
{
var tcs = new TaskCompletionSource<bool>();
GetRankList(() => tcs.SetResult(true));
await tcs.Task;
return RankList;
}

View File

@@ -123,17 +123,19 @@ namespace TON
UIManager.Show<SkillSettingUI>(UIList.SkillSettingUI);
}
public void OnClickRankingButton()
public async void OnClickRankingButton()
{
// 랭킹 UI 추가
// 랭킹 정보를 다시 불러오기 위해 await 사용
UIManager.Show<LoadingUI>(UIList.LoadingUI);
await StageManager.Singleton.GetRankDataListAsync();
UIManager.Hide<LoadingUI>(UIList.LoadingUI);
UIManager.Show<RankingUI>(UIList.RankingUI);
}
public void OnClickShopButton()
{
// TODO: 상점 UI 추가
// 상점은 Scene으로 전환하자.
Main.Singleton.ChangeScene(SceneType.Shop);
}

View File

@@ -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<ClearData> rankList = new List<ClearData>();
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<ClearData> rankList = StageManager.Singleton.GetRankDataList();
rankList = StageManager.Singleton.RankList;
if (rankList.Count == 0)
{