summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/AchievementManager.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/Source/Core/Core/AchievementManager.cpp b/Source/Core/Core/AchievementManager.cpp
index b6160f2367..d78e383560 100644
--- a/Source/Core/Core/AchievementManager.cpp
+++ b/Source/Core/Core/AchievementManager.cpp
@@ -1080,6 +1080,7 @@ void AchievementManager::DisplayWelcomeMessage()
void AchievementManager::HandleAchievementTriggeredEvent(const rc_client_event_t* client_event)
{
const auto& instance = AchievementManager::GetInstance();
+
OSD::AddMessage(fmt::format("Unlocked: {} ({})", client_event->achievement->title,
client_event->achievement->points),
OSD::Duration::VERY_LONG,
@@ -1088,6 +1089,30 @@ void AchievementManager::HandleAchievementTriggeredEvent(const rc_client_event_t
&instance.GetAchievementBadge(client_event->achievement->id, false));
AchievementManager::GetInstance().m_update_callback(
UpdatedItems{.achievements = {client_event->achievement->id}});
+#ifdef RC_CLIENT_SUPPORTS_RAINTEGRATION
+ switch (rc_client_raintegration_get_achievement_state(instance.m_client,
+ client_event->achievement->id))
+ {
+ case RC_CLIENT_RAINTEGRATION_ACHIEVEMENT_STATE_LOCAL:
+ // Achievement only exists locally and has not been uploaded.
+ OSD::AddMessage("Local achievement; not submitted to site.", OSD::Duration::VERY_LONG,
+ OSD::Color::GREEN);
+ break;
+ case RC_CLIENT_RAINTEGRATION_ACHIEVEMENT_STATE_MODIFIED:
+ // Achievement has been modified locally and differs from the one on the site.
+ OSD::AddMessage("Modified achievement; not submitted to site.", OSD::Duration::VERY_LONG,
+ OSD::Color::GREEN);
+ break;
+ case RC_CLIENT_RAINTEGRATION_ACHIEVEMENT_STATE_INSECURE:
+ // The player has done something that we consider cheating like modifying the RAM while playing.
+ // Just indicate that the achievement was only unlocked locally, but don't clarify why.
+ OSD::AddMessage("Achievement not submitted to site.", OSD::Duration::VERY_LONG,
+ OSD::Color::GREEN);
+ break;
+ default:
+ break;
+ }
+#endif // RC_CLIENT_SUPPORTS_RAINTEGRATION
}
void AchievementManager::HandleLeaderboardStartedEvent(const rc_client_event_t* client_event)