From 0c2ac82a477dc7e46a0bf93d5e7bbf54b3083ffe Mon Sep 17 00:00:00 2001 From: Den Delimarsky Date: Mon, 30 Sep 2024 16:51:52 -0700 Subject: [PATCH] Proper support for Hero rank --- .../Core/UserContextManager.cs | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/OpenSpartan.Workshop/Core/UserContextManager.cs b/src/OpenSpartan.Workshop/Core/UserContextManager.cs index 774731a..648cf0a 100644 --- a/src/OpenSpartan.Workshop/Core/UserContextManager.cs +++ b/src/OpenSpartan.Workshop/Core/UserContextManager.cs @@ -291,12 +291,32 @@ await DispatcherWindow.DispatcherQueue.EnqueueAsync(async () => if (HomeViewModel.Instance.CareerSnapshot != null) { - var currentRank = HomeViewModel.Instance.CareerSnapshot.RewardTracks[0].Result.CurrentProgress.Rank + 1; + var currentRank = 0; + + // If we're talking about Hero rank, then we don't need to append an extra 1. + if (HomeViewModel.Instance.CareerSnapshot.RewardTracks[0].Result.CurrentProgress.Rank != 272) + { + currentRank = HomeViewModel.Instance.CareerSnapshot.RewardTracks[0].Result.CurrentProgress.Rank + 1; + } + else + { + currentRank = HomeViewModel.Instance.CareerSnapshot.RewardTracks[0].Result.CurrentProgress.Rank; + } + var currentCareerStage = careerTrackContainerResult.Result.Ranks.FirstOrDefault(c => c.Rank == currentRank); if (currentCareerStage != null) { - HomeViewModel.Instance.Title = $"{currentCareerStage.TierType} {currentCareerStage.RankTitle.Value} {currentCareerStage.RankTier.Value}"; + if (currentCareerStage.Rank != 272) + { + HomeViewModel.Instance.Title = $"{currentCareerStage.TierType} {currentCareerStage.RankTitle.Value} {currentCareerStage.RankTier.Value}"; + } + else + { + // Hero rank is just "Hero" - no need to interpolate with other strings. + HomeViewModel.Instance.Title = currentCareerStage.RankTitle.Value; + } + HomeViewModel.Instance.CurrentRankExperience = careerTrackResult.Result.RewardTracks[0].Result.CurrentProgress.PartialProgress; HomeViewModel.Instance.RequiredRankExperience = currentCareerStage.XpRequiredForRank; @@ -357,7 +377,7 @@ private static async Task DownloadAndSetImage(string serviceImagePath, string lo return; } - HaloApiResultContainer image = null; + HaloApiResultContainer? image = null; Func>> apiCall = isOnWaypoint ? async () => await HaloClient.GameCmsGetGenericWaypointFile(serviceImagePath) :