Achievements: Extract bucket names out of FullscreenUI

This commit is contained in:
Stenzek
2026-10-10 21:47:39 +10:00
parent 18e2aa1615
commit 364c7bd485
3 changed files with 43 additions and 19 deletions
+22
View File
@@ -2079,6 +2079,28 @@ std::string Achievements::GetSubsetBadgeURL(const rc_client_subset_t* subset)
return subset->badge_url;
}
std::string_view Achievements::GetAchievementBucketDisplayName(u32 bucket_id)
{
static constexpr const char* bucket_names[] = {
// clang-format off
TRANSLATE_NOOP("Achievements", "Unknown"),
TRANSLATE_NOOP("Achievements", "Locked"),
TRANSLATE_NOOP("Achievements", "Unlocked"),
TRANSLATE_NOOP("Achievements", "Unsupported"),
TRANSLATE_NOOP("Achievements", "Unofficial"),
TRANSLATE_NOOP("Achievements", "Recently Unlocked"),
TRANSLATE_NOOP("Achievements", "Active Challenges"),
TRANSLATE_NOOP("Achievements", "Almost There"),
TRANSLATE_NOOP("Achievements", "Not Confirmed"),
TRANSLATE_NOOP("Achievements", "Unlocked in Casual"),
// clang-format on
};
static_assert(std::size(bucket_names) == NUM_RC_CLIENT_ACHIEVEMENT_BUCKETS);
return (bucket_id < NUM_RC_CLIENT_ACHIEVEMENT_BUCKETS) ?
Host::TranslateToStringView("Achievements", bucket_names[bucket_id]) :
"Unknown";
}
bool Achievements::IsLoggedIn()
{
return (rc_client_get_user_info(s_state.client) != nullptr);
+3
View File
@@ -105,6 +105,9 @@ std::string GetUserBadgeURL(const char* username);
/// Returns the URL for the badge of the specified subset, using the subset ID.
std::string GetSubsetBadgeURL(const rc_client_subset_t* subset);
/// Returns a list of achievement bucket names.
std::string_view GetAchievementBucketDisplayName(u32 bucket_id);
} // namespace Achievements
namespace FullscreenUI {
+18 -19
View File
@@ -2305,19 +2305,19 @@ void FullscreenUI::DrawAchievementsWindow()
"achievements", background, 0.0f,
ImVec2(LAYOUT_MENU_WINDOW_X_PADDING, LAYOUT_MENU_WINDOW_Y_PADDING), 0, true))
{
static constexpr std::pair<const char*, const char*> bucket_names[] = {
{ICON_FA_CIRCLE_QUESTION, TRANSLATE_NOOP("Achievements", "Unknown")},
{ICON_FA_LOCK, TRANSLATE_NOOP("Achievements", "Locked")},
{ICON_FA_UNLOCK, TRANSLATE_NOOP("Achievements", "Unlocked")},
{ICON_FA_TRIANGLE_EXCLAMATION, TRANSLATE_NOOP("Achievements", "Unsupported")},
{ICON_FA_FLASK_VIAL, TRANSLATE_NOOP("Achievements", "Unofficial")},
{ICON_FA_LOCK_OPEN, TRANSLATE_NOOP("Achievements", "Recently Unlocked")},
{ICON_FA_HAND_FIST, TRANSLATE_NOOP("Achievements", "Active Challenges")},
{ICON_FA_FLAG_CHECKERED, TRANSLATE_NOOP("Achievements", "Almost There")},
{ICON_EMOJI_WARNING, TRANSLATE_NOOP("Achievements", "Not Confirmed")},
{ICON_FA_UNLOCK, TRANSLATE_NOOP("Achievements", "Unlocked in Casual")},
static constexpr const char* bucket_icons[] = {
ICON_FA_CIRCLE_QUESTION, // Unknown
ICON_FA_LOCK, // Locked
ICON_FA_UNLOCK, // Unlocked
ICON_FA_TRIANGLE_EXCLAMATION, // Unsupported
ICON_FA_FLASK_VIAL, // Unofficial
ICON_FA_LOCK_OPEN, // Recently Unlocked
ICON_FA_HAND_FIST, // Active Challenges
ICON_FA_FLAG_CHECKERED, // Almost There
ICON_EMOJI_WARNING, // Not Confirmed
ICON_FA_UNLOCK, // Unlocked in Casual
};
static_assert(std::size(bucket_names) == NUM_RC_CLIENT_ACHIEVEMENT_BUCKETS);
static_assert(std::size(bucket_icons) == NUM_RC_CLIENT_ACHIEVEMENT_BUCKETS);
ResetFocusHere();
BeginMenuButtons();
@@ -2344,13 +2344,12 @@ void FullscreenUI::DrawAchievementsWindow()
DebugAssert(bucket.bucket_type < NUM_RC_CLIENT_ACHIEVEMENT_BUCKETS);
if (MenuHeadingButton(TinyString::from_format(
"{} {}", bucket_names[bucket.bucket_type].first,
Host::TranslateToStringView("Achievements", bucket_names[bucket.bucket_type].second)),
s_achievements_locals.achievement_buckets_collapsed[bucket.bucket_type] ?
ICON_FA_CHEVRON_DOWN :
ICON_FA_CHEVRON_UP,
UIStyle.MediumLargeFontSize))
if (MenuHeadingButton(
TinyString::from_format("{} {}", bucket_icons[bucket.bucket_type],
Achievements::GetAchievementBucketDisplayName(bucket.bucket_type)),
s_achievements_locals.achievement_buckets_collapsed[bucket.bucket_type] ? ICON_FA_CHEVRON_DOWN :
ICON_FA_CHEVRON_UP,
UIStyle.MediumLargeFontSize))
{
s_achievements_locals.achievement_buckets_collapsed.flip(bucket.bucket_type);
}