Achievements: Add "Unlocked in Softcore" bucket

pull/3699/head
Stenzek 5 months ago
parent dd3d7d372c
commit 890cde029b
No known key found for this signature in database

@ -491,7 +491,8 @@ enum {
RC_CLIENT_ACHIEVEMENT_BUCKET_ACTIVE_CHALLENGE = 6,
RC_CLIENT_ACHIEVEMENT_BUCKET_ALMOST_THERE = 7,
RC_CLIENT_ACHIEVEMENT_BUCKET_UNSYNCED = 8,
NUM_RC_CLIENT_ACHIEVEMENT_BUCKETS = 9
RC_CLIENT_ACHIEVEMENT_BUCKET_UNLOCKED_SOFTCORE = 9,
NUM_RC_CLIENT_ACHIEVEMENT_BUCKETS = 10,
};
enum {

@ -3942,6 +3942,10 @@ static void rc_client_update_achievement_display_information(rc_client_t* client
else if (achievement->public_.measured_percent >= 80.0)
new_bucket = RC_CLIENT_ACHIEVEMENT_BUCKET_ALMOST_THERE;
}
/* map to unlocked in softcore bucket if hardcore is enabled but achievement is unlocked in softcore */
if (client->state.hardcore && achievement->public_.unlocked & RC_CLIENT_ACHIEVEMENT_UNLOCKED_SOFTCORE)
new_bucket = RC_CLIENT_ACHIEVEMENT_BUCKET_UNLOCKED_SOFTCORE;
}
achievement->public_.bucket = new_bucket;
@ -3957,6 +3961,7 @@ static const char* rc_client_get_achievement_bucket_label(uint8_t bucket_type)
case RC_CLIENT_ACHIEVEMENT_BUCKET_RECENTLY_UNLOCKED: return "Recently Unlocked";
case RC_CLIENT_ACHIEVEMENT_BUCKET_ACTIVE_CHALLENGE: return "Active Challenges";
case RC_CLIENT_ACHIEVEMENT_BUCKET_ALMOST_THERE: return "Almost There";
case RC_CLIENT_ACHIEVEMENT_BUCKET_UNLOCKED_SOFTCORE: return "Unlocked in Softcore";
case RC_CLIENT_ACHIEVEMENT_BUCKET_UNSYNCED: return "Unlocks Not Synced to Server";
default: return "Unknown";
}
@ -3974,6 +3979,7 @@ static const char* rc_client_get_subset_achievement_bucket_label(uint8_t bucket_
case RC_CLIENT_ACHIEVEMENT_BUCKET_UNLOCKED: ptr = &subset->unlocked_label; break;
case RC_CLIENT_ACHIEVEMENT_BUCKET_UNSUPPORTED: ptr = &subset->unsupported_label; break;
case RC_CLIENT_ACHIEVEMENT_BUCKET_UNOFFICIAL: ptr = &subset->unofficial_label; break;
case RC_CLIENT_ACHIEVEMENT_BUCKET_UNLOCKED_SOFTCORE: ptr = &subset->unlocked_softcore_label; break;
default: return rc_client_get_achievement_bucket_label(bucket_type);
}
@ -4020,6 +4026,7 @@ static uint8_t rc_client_map_bucket(uint8_t bucket, int grouping)
case RC_CLIENT_ACHIEVEMENT_BUCKET_ACTIVE_CHALLENGE:
case RC_CLIENT_ACHIEVEMENT_BUCKET_ALMOST_THERE:
case RC_CLIENT_ACHIEVEMENT_BUCKET_UNLOCKED_SOFTCORE:
return RC_CLIENT_ACHIEVEMENT_BUCKET_LOCKED;
default:
@ -4057,7 +4064,8 @@ rc_client_achievement_list_t* rc_client_create_achievement_list(rc_client_t* cli
RC_CLIENT_ACHIEVEMENT_BUCKET_LOCKED,
RC_CLIENT_ACHIEVEMENT_BUCKET_UNOFFICIAL,
RC_CLIENT_ACHIEVEMENT_BUCKET_UNSUPPORTED,
RC_CLIENT_ACHIEVEMENT_BUCKET_UNLOCKED
RC_CLIENT_ACHIEVEMENT_BUCKET_UNLOCKED_SOFTCORE,
RC_CLIENT_ACHIEVEMENT_BUCKET_UNLOCKED,
};
static const uint8_t no_shared_subset_buckets_order[] = {
RC_CLIENT_ACHIEVEMENT_BUCKET_ACTIVE_CHALLENGE,
@ -4067,6 +4075,7 @@ rc_client_achievement_list_t* rc_client_create_achievement_list(rc_client_t* cli
RC_CLIENT_ACHIEVEMENT_BUCKET_LOCKED,
RC_CLIENT_ACHIEVEMENT_BUCKET_UNOFFICIAL,
RC_CLIENT_ACHIEVEMENT_BUCKET_UNSUPPORTED,
RC_CLIENT_ACHIEVEMENT_BUCKET_UNLOCKED_SOFTCORE,
RC_CLIENT_ACHIEVEMENT_BUCKET_UNLOCKED
};
const uint8_t* subset_bucket_order = (grouping == RC_CLIENT_ACHIEVEMENT_LIST_GROUPING_PROGRESS) ?

@ -214,6 +214,7 @@ typedef struct rc_client_subset_info_t {
const char* inactive_label;
const char* locked_label;
const char* unlocked_label;
const char* unlocked_softcore_label;
const char* unofficial_label;
const char* unsupported_label;

@ -1816,7 +1816,7 @@ void FullscreenUI::DrawAchievementsWindow()
ImVec2(LAYOUT_MENU_WINDOW_X_PADDING, LAYOUT_MENU_WINDOW_Y_PADDING), 0))
{
static bool buckets_collapsed[NUM_RC_CLIENT_ACHIEVEMENT_BUCKETS] = {};
static constexpr std::pair<const char*, const char*> bucket_names[NUM_RC_CLIENT_ACHIEVEMENT_BUCKETS] = {
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")},
@ -1826,15 +1826,18 @@ void FullscreenUI::DrawAchievementsWindow()
{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 Softcore")},
};
static_assert(std::size(bucket_names) == NUM_RC_CLIENT_ACHIEVEMENT_BUCKETS);
ResetFocusHere();
BeginMenuButtons();
for (u32 bucket_type : {RC_CLIENT_ACHIEVEMENT_BUCKET_UNSYNCED, RC_CLIENT_ACHIEVEMENT_BUCKET_ACTIVE_CHALLENGE,
RC_CLIENT_ACHIEVEMENT_BUCKET_RECENTLY_UNLOCKED, RC_CLIENT_ACHIEVEMENT_BUCKET_ALMOST_THERE,
RC_CLIENT_ACHIEVEMENT_BUCKET_UNLOCKED, RC_CLIENT_ACHIEVEMENT_BUCKET_LOCKED,
RC_CLIENT_ACHIEVEMENT_BUCKET_UNOFFICIAL, RC_CLIENT_ACHIEVEMENT_BUCKET_UNSUPPORTED})
RC_CLIENT_ACHIEVEMENT_BUCKET_UNLOCKED, RC_CLIENT_ACHIEVEMENT_BUCKET_UNLOCKED_SOFTCORE,
RC_CLIENT_ACHIEVEMENT_BUCKET_LOCKED, RC_CLIENT_ACHIEVEMENT_BUCKET_UNOFFICIAL,
RC_CLIENT_ACHIEVEMENT_BUCKET_UNSUPPORTED})
{
for (u32 bucket_idx = 0; bucket_idx < s_achievements_locals.achievement_list->num_buckets; bucket_idx++)
{

Loading…
Cancel
Save