Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge pull request #12212 from LillyJadeKatrin/retroachievements-bugfix
Added error checking and logging to AchievementManager::GetAchievemen…
  • Loading branch information
AdmiralCurtiss committed Oct 1, 2023
2 parents b2e016f + c8b1379 commit d55d878
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 7 deletions.
21 changes: 17 additions & 4 deletions Source/Core/Core/AchievementManager.cpp
Expand Up @@ -688,12 +688,25 @@ AchievementManager::GetUnlockStatus(AchievementId achievement_id) const
return m_unlock_map.at(achievement_id);
}

void AchievementManager::GetAchievementProgress(AchievementId achievement_id, u32* value,
u32* target)
AchievementManager::ResponseType
AchievementManager::GetAchievementProgress(AchievementId achievement_id, u32* value, u32* target)
{
if (!IsGameLoaded())
return;
rc_runtime_get_achievement_measured(&m_runtime, achievement_id, value, target);
{
ERROR_LOG_FMT(
ACHIEVEMENTS,
"Attempted to request measured data for achievement ID {} when no game is running.",
achievement_id);
return ResponseType::INVALID_REQUEST;
}
int result = rc_runtime_get_achievement_measured(&m_runtime, achievement_id, value, target);
if (result == 0)
{
WARN_LOG_FMT(ACHIEVEMENTS, "Failed to get measured data for achievement ID {}.",
achievement_id);
return ResponseType::MALFORMED_OBJECT;
}
return ResponseType::SUCCESS;
}

AchievementManager::RichPresence AchievementManager::GetRichPresence()
Expand Down
3 changes: 2 additions & 1 deletion Source/Core/Core/AchievementManager.h
Expand Up @@ -111,7 +111,8 @@ class AchievementManager
rc_api_fetch_game_data_response_t* GetGameData();
const BadgeStatus& GetGameBadge() const;
const UnlockStatus& GetUnlockStatus(AchievementId achievement_id) const;
void GetAchievementProgress(AchievementId achievement_id, u32* value, u32* target);
AchievementManager::ResponseType GetAchievementProgress(AchievementId achievement_id, u32* value,
u32* target);
RichPresence GetRichPresence();

void CloseGame();
Expand Down
Expand Up @@ -105,8 +105,9 @@ AchievementProgressWidget::CreateAchievementBox(const rc_api_achievement_definit
a_progress_bar->setSizePolicy(sp_retain);
unsigned int value = 0;
unsigned int target = 0;
AchievementManager::GetInstance()->GetAchievementProgress(achievement->id, &value, &target);
if (target > 0)
if (AchievementManager::GetInstance()->GetAchievementProgress(achievement->id, &value, &target) ==
AchievementManager::ResponseType::SUCCESS &&
target > 0)
{
a_progress_bar->setRange(0, target);
a_progress_bar->setValue(value);
Expand Down

0 comments on commit d55d878

Please sign in to comment.