feat: 서버 오류로 인한 랭킹 목록 조회 실패 시 처리 로직 추가

This commit is contained in:
aube.lee
2025-03-02 16:54:38 +09:00
parent 9cc959010f
commit df61604949
6 changed files with 237 additions and 16 deletions

View File

@@ -1055,7 +1055,7 @@ Canvas:
m_AdditionalShaderChannelsFlag: 25 m_AdditionalShaderChannelsFlag: 25
m_UpdateRectTransformForStandalone: 0 m_UpdateRectTransformForStandalone: 0
m_SortingLayerID: 0 m_SortingLayerID: 0
m_SortingOrder: 0 m_SortingOrder: 1
m_TargetDisplay: 0 m_TargetDisplay: 0
--- !u!114 &4207200870247786412 --- !u!114 &4207200870247786412
MonoBehaviour: MonoBehaviour:

View File

@@ -544,6 +544,82 @@ MonoBehaviour:
m_hasFontAssetChanged: 0 m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0} m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &1150546113968813456
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6417327352021012356}
- component: {fileID: 4374853755953838155}
- component: {fileID: 1770597014247176793}
m_Layer: 5
m_Name: Error popup
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6417327352021012356
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1150546113968813456}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 7171159784897148034}
m_Father: {fileID: 931218065942683726}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 1, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: -300, y: 120}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4374853755953838155
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1150546113968813456}
m_CullTransparentMesh: 1
--- !u!114 &1770597014247176793
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1150546113968813456}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 042147ed597077d428e0bfc7a9c418a3, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &1207305459722129323 --- !u!1 &1207305459722129323
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -790,7 +866,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1} m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 1, y: 1} m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0.000049850816} m_AnchoredPosition: {x: 0, y: -0.000039737428}
m_SizeDelta: {x: 0, y: 300} m_SizeDelta: {x: 0, y: 300}
m_Pivot: {x: 0, y: 1} m_Pivot: {x: 0, y: 1}
--- !u!1 &3043442581440476734 --- !u!1 &3043442581440476734
@@ -1183,6 +1259,7 @@ MonoBehaviour:
rankBoxPrefab: {fileID: 1836485528427718722, guid: 64f6711fc3dfade4f8926564be683890, type: 3} rankBoxPrefab: {fileID: 1836485528427718722, guid: 64f6711fc3dfade4f8926564be683890, type: 3}
uiPrefabList: [] uiPrefabList: []
createRankList: [] createRankList: []
errorPopup: {fileID: 1150546113968813456}
pawImage: {fileID: 3737414318957097033} pawImage: {fileID: 3737414318957097033}
playerName: {fileID: 3819162921920848464} playerName: {fileID: 3819162921920848464}
rankNumber: {fileID: 6166724200374471149} rankNumber: {fileID: 6166724200374471149}
@@ -1512,6 +1589,141 @@ MonoBehaviour:
m_hasFontAssetChanged: 0 m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0} m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &4647973251684794603
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7171159784897148034}
- component: {fileID: 3549700661657528554}
- component: {fileID: 2179841377744835841}
m_Layer: 5
m_Name: Text (TMP)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7171159784897148034
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4647973251684794603}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 6417327352021012356}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: -200, y: -20}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3549700661657528554
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4647973251684794603}
m_CullTransparentMesh: 1
--- !u!114 &2179841377744835841
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4647973251684794603}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: "\uC11C\uBC84 \uC624\uB958\uB85C \uCD9C\uB825\uC774 \uC9C0\uC5F0\uB429\uB2C8\uB2E4.\n\uC7A0\uC2DC
\uD6C4 \uB2E4\uC2DC \uC2DC\uB3C4\uD574\uC8FC\uC138\uC694."
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 3116464c7616674448f2fb05b50bf91b, type: 2}
m_sharedMaterial: {fileID: -5364670637895760327, guid: 3116464c7616674448f2fb05b50bf91b, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4278190080
m_fontColor: {r: 0, g: 0, b: 0, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 36
m_fontSizeBase: 36
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &4712220150771716494 --- !u!1 &4712220150771716494
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -2245,6 +2457,7 @@ RectTransform:
m_Children: m_Children:
- {fileID: 6130240796382213815} - {fileID: 6130240796382213815}
- {fileID: 4887657808625157883} - {fileID: 4887657808625157883}
- {fileID: 6417327352021012356}
m_Father: {fileID: 3893907938536155103} m_Father: {fileID: 3893907938536155103}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0} m_AnchorMin: {x: 0, y: 0}

View File

@@ -56,16 +56,11 @@ namespace TON
// Rank 21~50일 때 실행할 코드 // Rank 21~50일 때 실행할 코드
return LoadAsset<Sprite>($"UI/Ranking Paw/paw_5th", out result); return LoadAsset<Sprite>($"UI/Ranking Paw/paw_5th", out result);
} }
else if (rank >= 51 || rank == -1) else
{ {
// Rank 51 이상일 때 실행할 코드 // Rank 51 이상일 때 실행할 코드
return LoadAsset<Sprite>($"UI/Ranking Paw/paw_6th", out result); return LoadAsset<Sprite>($"UI/Ranking Paw/paw_6th", out result);
} }
else
{
result = null;
return false;
}
} }
public bool LoadMyRankBoxImage(out Sprite result) public bool LoadMyRankBoxImage(out Sprite result)

View File

@@ -117,6 +117,11 @@ namespace TON
// 내 랭킹 순위 반환 // 내 랭킹 순위 반환
public int GetMyRankNumber() public int GetMyRankNumber()
{ {
if (RankList.Count == 0)
{
return -1;
}
int rankNumber = RankList.FindIndex(data => data.nickname.Equals(TOP_RECORD.nickname)); int rankNumber = RankList.FindIndex(data => data.nickname.Equals(TOP_RECORD.nickname));
return rankNumber; return rankNumber;
} }

View File

@@ -17,6 +17,7 @@ namespace TON
public List<RectTransform> uiPrefabList = new List<RectTransform>(); public List<RectTransform> uiPrefabList = new List<RectTransform>();
public List<RankingUI_RankBox> createRankList = new List<RankingUI_RankBox>(); public List<RankingUI_RankBox> createRankList = new List<RankingUI_RankBox>();
[SerializeField] private GameObject errorPopup;
[SerializeField] private GameObject pawImage; [SerializeField] private GameObject pawImage;
[SerializeField] private TextMeshProUGUI playerName; [SerializeField] private TextMeshProUGUI playerName;
[SerializeField] private TextMeshProUGUI rankNumber; [SerializeField] private TextMeshProUGUI rankNumber;
@@ -26,17 +27,18 @@ namespace TON
private void OnEnable() private void OnEnable()
{ {
// 랭킹 불러오기 오류 팝업 기본 상태태
errorPopup.SetActive(false);
// TODO: 랭킹 리스트 서버 오류 수정 후 주석 해제 // TODO: 랭킹 리스트 서버 오류 수정 후 주석 해제
// SetRankList(); SetRankList();
SetMyRankData(); SetMyRankData();
} }
private void SetMyRankData() private void SetMyRankData()
{ {
ClearData TOP_RECORD = StageManager.Singleton.TOP_RECORD; ClearData TOP_RECORD = StageManager.Singleton.TOP_RECORD;
// TODO: 랭킹 리스트 서버 오류 수정 후 주석 해제 int myRankNumber = StageManager.Singleton.GetMyRankNumber();
// int myRankNumber = StageManager.Singleton.GetMyRankNumber();
int myRankNumber = -1;
playerName.text = TOP_RECORD.nickname; playerName.text = TOP_RECORD.nickname;
rankNumber.text = myRankNumber > -1 ? $"{myRankNumber} th" : "Not Record"; rankNumber.text = myRankNumber > -1 ? $"{myRankNumber} th" : "Not Record";
@@ -64,6 +66,12 @@ namespace TON
List<ClearData> rankList = StageManager.Singleton.RankList; List<ClearData> rankList = StageManager.Singleton.RankList;
if (rankList.Count == 0)
{
errorPopup.SetActive(true);
return;
}
float y = 0; float y = 0;
for (int i = 0; i < rankList.Count; i++) for (int i = 0; i < rankList.Count; i++)
{ {
@@ -87,7 +95,7 @@ namespace TON
private void SetPawIcon(int rank) private void SetPawIcon(int rank)
{ {
Sprite loadedPawImage = null; Sprite loadedPawImage = null;
Assert.IsTrue(AssetManager.Singleton.LoadRankPawIcon(rank, out loadedPawImage)); if (AssetManager.Singleton.LoadRankPawIcon(rank, out loadedPawImage))
pawImage.GetComponent<Image>().sprite = loadedPawImage; pawImage.GetComponent<Image>().sprite = loadedPawImage;
} }