Skip to content

Commit 10b96b9

Browse files
committed
Achievements: Reset bucket collapse on window open
1 parent 2339b23 commit 10b96b9

File tree

1 file changed

+19
-8
lines changed

1 file changed

+19
-8
lines changed

src/core/fullscreenui_achievements.cpp

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
#include "IconsEmoji.h"
2323
#include "IconsPromptFont.h"
2424

25+
#include <bitset>
26+
2527
LOG_CHANNEL(FullscreenUI);
2628

2729
#ifndef __ANDROID__
@@ -159,14 +161,16 @@ struct AchievementsLocals
159161
std::vector<SubsetInfo> subset_info_list;
160162
const SubsetInfo* open_subset = nullptr;
161163

162-
rc_client_achievement_list_t* achievement_list = nullptr;
163164
std::vector<std::tuple<const void*, std::string, bool>> achievement_badge_paths;
164165

165166
std::optional<PauseMenuAchievementInfoWithPoints> most_recent_unlock;
166167
std::optional<PauseMenuMeasuredAchievementInfo> achievement_nearest_completion;
167168
std::optional<PauseMenuTimedMeasuredAchievementInfo> most_recent_progress_update;
168169
std::vector<PauseMenuLeaderboardInfo> active_leaderboards;
169170

171+
rc_client_achievement_list_t* achievement_list = nullptr;
172+
std::bitset<NUM_RC_CLIENT_ACHIEVEMENT_BUCKETS> achievement_buckets_collapsed = {};
173+
170174
rc_client_leaderboard_list_t* leaderboard_list = nullptr;
171175
const rc_client_leaderboard_t* open_leaderboard = nullptr;
172176
rc_client_async_handle_t* leaderboard_fetch_handle = nullptr;
@@ -1581,6 +1585,9 @@ void FullscreenUI::SwitchToAchievements()
15811585
return;
15821586
}
15831587

1588+
// reset collapsed buckets
1589+
s_achievements_locals.achievement_buckets_collapsed.reset();
1590+
15841591
// sort unlocked achievements by unlock time
15851592
for (size_t i = 0; i < s_achievements_locals.achievement_list->num_buckets; i++)
15861593
{
@@ -1816,7 +1823,6 @@ void FullscreenUI::DrawAchievementsWindow()
18161823
"achievements", background, 0.0f,
18171824
ImVec2(LAYOUT_MENU_WINDOW_X_PADDING, LAYOUT_MENU_WINDOW_Y_PADDING), 0))
18181825
{
1819-
static bool buckets_collapsed[NUM_RC_CLIENT_ACHIEVEMENT_BUCKETS] = {};
18201826
static constexpr std::pair<const char*, const char*> bucket_names[] = {
18211827
{ICON_FA_CIRCLE_QUESTION, TRANSLATE_NOOP("Achievements", "Unknown")},
18221828
{ICON_FA_LOCK, TRANSLATE_NOOP("Achievements", "Locked")},
@@ -1848,12 +1854,17 @@ void FullscreenUI::DrawAchievementsWindow()
18481854

18491855
DebugAssert(bucket.bucket_type < NUM_RC_CLIENT_ACHIEVEMENT_BUCKETS);
18501856

1851-
bool& bucket_collapsed = buckets_collapsed[bucket.bucket_type];
1852-
bucket_collapsed ^= MenuHeadingButton(
1853-
TinyString::from_format("{} {}", bucket_names[bucket.bucket_type].first,
1854-
Host::TranslateToStringView("Achievements", bucket_names[bucket.bucket_type].second)),
1855-
bucket_collapsed ? ICON_FA_CHEVRON_DOWN : ICON_FA_CHEVRON_UP, UIStyle.MediumLargeFontSize);
1856-
if (!bucket_collapsed)
1857+
if (MenuHeadingButton(TinyString::from_format(
1858+
"{} {}", bucket_names[bucket.bucket_type].first,
1859+
Host::TranslateToStringView("Achievements", bucket_names[bucket.bucket_type].second)),
1860+
s_achievements_locals.achievement_buckets_collapsed[bucket.bucket_type] ?
1861+
ICON_FA_CHEVRON_DOWN :
1862+
ICON_FA_CHEVRON_UP,
1863+
UIStyle.MediumLargeFontSize))
1864+
{
1865+
s_achievements_locals.achievement_buckets_collapsed.flip(bucket.bucket_type);
1866+
}
1867+
if (!s_achievements_locals.achievement_buckets_collapsed[bucket.bucket_type])
18571868
{
18581869
for (u32 i = 0; i < bucket.num_achievements; i++)
18591870
DrawAchievement(bucket.achievements[i]);

0 commit comments

Comments
 (0)