FullscreenUI: Remember the last-opened achievement subset

pull/3658/head
Stenzek 10 months ago
parent 4da93d7e19
commit de01bf704e
No known key found for this signature in database

@ -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];
}
}

Loading…
Cancel
Save