From 6deb2eb390f4eb22ee3f729da6fb0efd1497bb61 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Mon, 26 Aug 2024 00:15:32 +1000 Subject: [PATCH] Achievements: Fix badge download bug Where it would download the incorrect icon if the locked badge was the first image seen. --- src/core/achievements.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/core/achievements.cpp b/src/core/achievements.cpp index 6866c0378..f8b3b80c9 100644 --- a/src/core/achievements.cpp +++ b/src/core/achievements.cpp @@ -312,6 +312,7 @@ std::string Achievements::GetGameHash(CDImage* image) std::string Achievements::GetLocalImagePath(const std::string_view image_name, int type) { std::string_view prefix; + std::string_view suffix; switch (type) { case RC_IMAGE_TYPE_GAME: @@ -323,7 +324,14 @@ std::string Achievements::GetLocalImagePath(const std::string_view image_name, i break; case RC_IMAGE_TYPE_ACHIEVEMENT: // https://media.retroachievements.org/Badge/{}.png + prefix = "badge"; + break; + case RC_IMAGE_TYPE_ACHIEVEMENT_LOCKED: + prefix = "badge"; + suffix = "_lock"; + break; + default: prefix = "badge"; break; @@ -332,8 +340,8 @@ std::string Achievements::GetLocalImagePath(const std::string_view image_name, i std::string ret; if (!image_name.empty()) { - ret = fmt::format("{}" FS_OSPATH_SEPARATOR_STR "{}" FS_OSPATH_SEPARATOR_STR "{}_{}.png", EmuFolders::Cache, - CACHE_SUBDIRECTORY_NAME, prefix, Path::SanitizeFileName(image_name)); + ret = fmt::format("{}" FS_OSPATH_SEPARATOR_STR "{}" FS_OSPATH_SEPARATOR_STR "{}_{}{}.png", EmuFolders::Cache, + CACHE_SUBDIRECTORY_NAME, prefix, Path::SanitizeFileName(image_name), suffix); } return ret;