FullscreenUI: Remember the last-opened achievement subset

This commit is contained in:
Stenzek
2025-12-07 18:45:06 +10:00
parent 4da93d7e19
commit de01bf704e

View File

@@ -126,6 +126,8 @@ struct AchievementsLocals
rc_client_leaderboard_entry_list_t* leaderboard_nearby_entries;
bool is_showing_all_leaderboard_entries = false;
bool has_fetched_all_leaderboard_entries = false;
u32 last_open_subset_id = 0;
};
} // namespace
@@ -161,6 +163,7 @@ void FullscreenUI::ClearAchievementsState()
s_achievements_locals.open_subset = nullptr;
s_achievements_locals.subset_info_list.clear();
s_achievements_locals.last_open_subset_id = 0;
s_achievements_locals.most_recent_unlock.reset();
s_achievements_locals.achievement_nearest_completion.reset();
@@ -716,6 +719,7 @@ void FullscreenUI::SetCurrentSubsetID(u32 subset_id)
if (info.subset_id == subset_id)
{
s_achievements_locals.open_subset = &info;
s_achievements_locals.last_open_subset_id = subset_id;
QueueResetFocus(FocusResetType::ViewChanged);
return;
}
@@ -744,7 +748,13 @@ void FullscreenUI::CollectSubsetsFromList(const T* list)
// hopefully the first will be core...
Assert(s_achievements_locals.subset_info_list.size() > 1);
s_achievements_locals.open_subset = &s_achievements_locals.subset_info_list[0];
const auto it = std::ranges::find_if(s_achievements_locals.subset_info_list, [](const SubsetInfo& info) {
return info.subset_id == s_achievements_locals.last_open_subset_id;
});
if (it != s_achievements_locals.subset_info_list.end())
s_achievements_locals.open_subset = &(*it);
else
s_achievements_locals.open_subset = &s_achievements_locals.subset_info_list[0];
}
}