mirror of
https://github.com/stenzek/duckstation.git
synced 2026-10-11 22:49:58 +00:00
Achievements: Extract bucket names out of FullscreenUI
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user