From 79cfce6033d1bb64c588919e51a1d0640d3e2afb Mon Sep 17 00:00:00 2001 From: Jamiras Date: Tue, 11 Jun 2024 14:54:09 -0600 Subject: [PATCH] add rarity and points to achievement unlock widget --- cheevos/cheevos.c | 25 +++++++++++++++++++++++-- intl/msg_hash_us.h | 4 ++++ msg_hash.h | 1 + 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/cheevos/cheevos.c b/cheevos/cheevos.c index a78406baf2..e9dafd58ab 100644 --- a/cheevos/cheevos.c +++ b/cheevos/cheevos.c @@ -452,8 +452,29 @@ static void rcheevos_award_achievement(const rc_client_achievement_t* cheevo) #if defined(HAVE_GFX_WIDGETS) if (gfx_widgets_ready()) { - gfx_widgets_push_achievement(msg_hash_to_str(MSG_ACHIEVEMENT_UNLOCKED), - cheevo->title, cheevo->badge_name); + char title[128], subtitle[96]; + float rarity = rc_client_get_hardcore_enabled(rcheevos_locals.client) ? + cheevo->rarity_hardcore : cheevo->rarity; + + if (rarity >= 10.0) + { + snprintf(title, sizeof(title), "%s - %0.2f%%", + msg_hash_to_str(MSG_ACHIEVEMENT_UNLOCKED), rarity); + } + else if (rarity > 0.0) + { + snprintf(title, sizeof(title), "%s - %0.2f%%", + msg_hash_to_str(MSG_RARE_ACHIEVEMENT_UNLOCKED), rarity); + } + else + { + snprintf(title, sizeof(title), "%s", + msg_hash_to_str(MSG_ACHIEVEMENT_UNLOCKED)); + } + + snprintf(subtitle, sizeof(subtitle), "%s (%d)", cheevo->title, cheevo->points); + + gfx_widgets_push_achievement(title, subtitle, cheevo->badge_name); } else #endif diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index 86abf97919..f1654078ae 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -14975,6 +14975,10 @@ MSG_HASH( MSG_ACHIEVEMENT_UNLOCKED, "Achievement Unlocked" ) +MSG_HASH( + MSG_RARE_ACHIEVEMENT_UNLOCKED, + "Rare Achievement Unlocked" + ) MSG_HASH( MSG_LEADERBOARD_STARTED, "Leaderboard attempt started" diff --git a/msg_hash.h b/msg_hash.h index 2920e25b56..bcc0e37ec6 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -433,6 +433,7 @@ enum msg_hash_enums MSG_TAKING_SCREENSHOT, MSG_SCREENSHOT_SAVED, MSG_ACHIEVEMENT_UNLOCKED, + MSG_RARE_ACHIEVEMENT_UNLOCKED, MSG_LEADERBOARD_STARTED, MSG_LEADERBOARD_FAILED, MSG_LEADERBOARD_SUBMISSION,