fix: 랭킹 정보 갱신된 후 전체 랭킹 UI 접근 시 랭킹 정보가 정상적으로 업데이트 되지 않는 오류 수정
This commit is contained in:
@@ -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); // 성공 시 데이터 반환
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user