Skip to content

Commit

Permalink
Merge pull request #12030 from LillyJadeKatrin/retroachievements-bugf…
Browse files Browse the repository at this point in the history
…ix-3

RetroAchievements - Fixed Leaderboard Scored message format
  • Loading branch information
AdmiralCurtiss committed Aug 28, 2023
2 parents 153a954 + 7a7e0ab commit 357db03
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 8 deletions.
21 changes: 17 additions & 4 deletions Source/Core/Core/AchievementManager.cpp
Expand Up @@ -585,7 +585,7 @@ void AchievementManager::ActivateDeactivateAchievement(AchievementId id, bool en
rc_runtime_deactivate_achievement(&m_runtime, id);
}

RichPresence AchievementManager::GenerateRichPresence()
AchievementManager::RichPresence AchievementManager::GenerateRichPresence()
{
RichPresence rp_buffer;
Core::RunAsCPUThread([&] {
Expand Down Expand Up @@ -716,9 +716,22 @@ void AchievementManager::HandleLeaderboardTriggeredEvent(const rc_runtime_event_
{
if (m_game_data.leaderboards[ix].id == runtime_event->id)
{
OSD::AddMessage(fmt::format("Scored {} on leaderboard: {}", runtime_event->value,
m_game_data.leaderboards[ix].title),
OSD::Duration::VERY_LONG, OSD::Color::YELLOW);
FormattedValue value{};
rc_runtime_format_lboard_value(value.data(), static_cast<int>(value.size()),
runtime_event->value, m_game_data.leaderboards[ix].format);
if (std::find(value.begin(), value.end(), '\0') == value.end())
{
OSD::AddMessage(fmt::format("Scored {} on leaderboard: {}",
std::string_view{value.data(), value.size()},
m_game_data.leaderboards[ix].title),
OSD::Duration::VERY_LONG, OSD::Color::YELLOW);
}
else
{
OSD::AddMessage(fmt::format("Scored {} on leaderboard: {}", value.data(),
m_game_data.leaderboards[ix].title),
OSD::Duration::VERY_LONG, OSD::Color::YELLOW);
}
break;
}
}
Expand Down
10 changes: 6 additions & 4 deletions Source/Core/Core/AchievementManager.h
Expand Up @@ -19,10 +19,6 @@
#include "Common/Event.h"
#include "Common/WorkQueueThread.h"

using AchievementId = u32;
constexpr size_t RP_SIZE = 256;
using RichPresence = std::array<char, RP_SIZE>;

namespace Core
{
class System;
Expand Down Expand Up @@ -53,6 +49,12 @@ class AchievementManager
u32 soft_points;
};

using AchievementId = u32;
static constexpr size_t FORMAT_SIZE = 24;
using FormattedValue = std::array<char, FORMAT_SIZE>;
static constexpr size_t RP_SIZE = 256;
using RichPresence = std::array<char, RP_SIZE>;

struct UnlockStatus
{
AchievementId game_data_index = 0;
Expand Down

0 comments on commit 357db03

Please sign in to comment.