mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-22 22:00:39 -06:00
AchievementManager: Make GetInstance() return a reference
The internal static member will always have a valid lifetime. Makes this consistent with other instance based objects in our code.
This commit is contained in:
@ -73,33 +73,31 @@ AchievementHeaderWidget::AchievementHeaderWidget(QWidget* parent) : QWidget(pare
|
||||
m_total->setAlignment(Qt::AlignTop);
|
||||
setLayout(m_total);
|
||||
|
||||
std::lock_guard lg{*AchievementManager::GetInstance()->GetLock()};
|
||||
std::lock_guard lg{*AchievementManager::GetInstance().GetLock()};
|
||||
UpdateData();
|
||||
}
|
||||
|
||||
void AchievementHeaderWidget::UpdateData()
|
||||
{
|
||||
if (!AchievementManager::GetInstance()->IsLoggedIn())
|
||||
auto& instance = AchievementManager::GetInstance();
|
||||
if (!instance.IsLoggedIn())
|
||||
{
|
||||
m_header_box->setVisible(false);
|
||||
return;
|
||||
}
|
||||
|
||||
AchievementManager::PointSpread point_spread = AchievementManager::GetInstance()->TallyScore();
|
||||
QString user_name =
|
||||
QString::fromStdString(AchievementManager::GetInstance()->GetPlayerDisplayName());
|
||||
QString game_name =
|
||||
QString::fromStdString(AchievementManager::GetInstance()->GetGameDisplayName());
|
||||
AchievementManager::BadgeStatus player_badge =
|
||||
AchievementManager::GetInstance()->GetPlayerBadge();
|
||||
AchievementManager::BadgeStatus game_badge = AchievementManager::GetInstance()->GetGameBadge();
|
||||
AchievementManager::PointSpread point_spread = instance.TallyScore();
|
||||
QString user_name = QString::fromStdString(instance.GetPlayerDisplayName());
|
||||
QString game_name = QString::fromStdString(instance.GetGameDisplayName());
|
||||
AchievementManager::BadgeStatus player_badge = instance.GetPlayerBadge();
|
||||
AchievementManager::BadgeStatus game_badge = instance.GetGameBadge();
|
||||
|
||||
m_user_icon->setVisible(false);
|
||||
m_user_icon->clear();
|
||||
m_user_icon->setText({});
|
||||
if (Config::Get(Config::RA_BADGES_ENABLED))
|
||||
{
|
||||
if (player_badge.name != "")
|
||||
if (!player_badge.name.empty())
|
||||
{
|
||||
QImage i_user_icon{};
|
||||
if (i_user_icon.loadFromData(&player_badge.badge.front(), (int)player_badge.badge.size()))
|
||||
@ -117,7 +115,7 @@ void AchievementHeaderWidget::UpdateData()
|
||||
m_game_icon->setText({});
|
||||
if (Config::Get(Config::RA_BADGES_ENABLED))
|
||||
{
|
||||
if (game_badge.name != "")
|
||||
if (!game_badge.name.empty())
|
||||
{
|
||||
QImage i_game_icon{};
|
||||
if (i_game_icon.loadFromData(&game_badge.badge.front(), (int)game_badge.badge.size()))
|
||||
@ -150,8 +148,7 @@ void AchievementHeaderWidget::UpdateData()
|
||||
m_game_progress_soft->setValue(point_spread.hard_unlocks + point_spread.soft_unlocks);
|
||||
if (!m_game_progress_soft->isVisible())
|
||||
m_game_progress_soft->setVisible(true);
|
||||
m_rich_presence->setText(
|
||||
QString::fromUtf8(AchievementManager::GetInstance()->GetRichPresence().data()));
|
||||
m_rich_presence->setText(QString::fromUtf8(instance.GetRichPresence().data()));
|
||||
if (!m_rich_presence->isVisible())
|
||||
m_rich_presence->setVisible(Config::Get(Config::RA_RICH_PRESENCE_ENABLED));
|
||||
m_locked_warning->setVisible(false);
|
||||
@ -159,12 +156,12 @@ void AchievementHeaderWidget::UpdateData()
|
||||
else
|
||||
{
|
||||
m_name->setText(user_name);
|
||||
m_points->setText(tr("%1 points").arg(AchievementManager::GetInstance()->GetPlayerScore()));
|
||||
m_points->setText(tr("%1 points").arg(instance.GetPlayerScore()));
|
||||
|
||||
m_game_progress_hard->setVisible(false);
|
||||
m_game_progress_soft->setVisible(false);
|
||||
m_rich_presence->setVisible(false);
|
||||
if (AchievementManager::GetInstance()->IsDisabled())
|
||||
if (instance.IsDisabled())
|
||||
{
|
||||
m_locked_warning->setVisible(true);
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ AchievementLeaderboardWidget::AchievementLeaderboardWidget(QWidget* parent) : QW
|
||||
m_common_layout = new QGridLayout();
|
||||
|
||||
{
|
||||
std::lock_guard lg{*AchievementManager::GetInstance()->GetLock()};
|
||||
std::lock_guard lg{*AchievementManager::GetInstance().GetLock()};
|
||||
UpdateData();
|
||||
}
|
||||
|
||||
@ -54,9 +54,9 @@ void AchievementLeaderboardWidget::UpdateData()
|
||||
{
|
||||
ClearLayoutRecursively(m_common_layout);
|
||||
|
||||
if (!AchievementManager::GetInstance()->IsGameLoaded())
|
||||
if (!AchievementManager::GetInstance().IsGameLoaded())
|
||||
return;
|
||||
const auto& leaderboards = AchievementManager::GetInstance()->GetLeaderboardsInfo();
|
||||
const auto& leaderboards = AchievementManager::GetInstance().GetLeaderboardsInfo();
|
||||
int row = 0;
|
||||
for (const auto& board_row : leaderboards)
|
||||
{
|
||||
|
@ -39,7 +39,7 @@ AchievementProgressWidget::AchievementProgressWidget(QWidget* parent) : QWidget(
|
||||
m_common_layout = new QVBoxLayout();
|
||||
|
||||
{
|
||||
std::lock_guard lg{*AchievementManager::GetInstance()->GetLock()};
|
||||
std::lock_guard lg{*AchievementManager::GetInstance().GetLock()};
|
||||
UpdateData();
|
||||
}
|
||||
|
||||
@ -55,10 +55,12 @@ AchievementProgressWidget::AchievementProgressWidget(QWidget* parent) : QWidget(
|
||||
QGroupBox*
|
||||
AchievementProgressWidget::CreateAchievementBox(const rc_api_achievement_definition_t* achievement)
|
||||
{
|
||||
if (!AchievementManager::GetInstance()->IsGameLoaded())
|
||||
const auto& instance = AchievementManager::GetInstance();
|
||||
if (!instance.IsGameLoaded())
|
||||
return new QGroupBox();
|
||||
|
||||
QLabel* a_badge = new QLabel();
|
||||
const auto unlock_status = AchievementManager::GetInstance()->GetUnlockStatus(achievement->id);
|
||||
const auto unlock_status = instance.GetUnlockStatus(achievement->id);
|
||||
const AchievementManager::BadgeStatus* badge = &unlock_status.locked_badge;
|
||||
std::string_view color = AchievementManager::GRAY;
|
||||
if (unlock_status.remote_unlock_status == AchievementManager::UnlockStatus::UnlockType::HARDCORE)
|
||||
@ -106,7 +108,7 @@ AchievementProgressWidget::CreateAchievementBox(const rc_api_achievement_definit
|
||||
a_progress_bar->setSizePolicy(sp_retain);
|
||||
unsigned int value = 0;
|
||||
unsigned int target = 0;
|
||||
if (AchievementManager::GetInstance()->GetAchievementProgress(achievement->id, &value, &target) ==
|
||||
if (AchievementManager::GetInstance().GetAchievementProgress(achievement->id, &value, &target) ==
|
||||
AchievementManager::ResponseType::SUCCESS &&
|
||||
target > 0)
|
||||
{
|
||||
@ -136,9 +138,11 @@ void AchievementProgressWidget::UpdateData()
|
||||
{
|
||||
ClearLayoutRecursively(m_common_layout);
|
||||
|
||||
if (!AchievementManager::GetInstance()->IsGameLoaded())
|
||||
auto& instance = AchievementManager::GetInstance();
|
||||
if (!instance.IsGameLoaded())
|
||||
return;
|
||||
const auto* game_data = AchievementManager::GetInstance()->GetGameData();
|
||||
|
||||
const auto* game_data = instance.GetGameData();
|
||||
for (u32 ix = 0; ix < game_data->num_achievements; ix++)
|
||||
{
|
||||
m_common_layout->addWidget(CreateAchievementBox(game_data->achievements + ix));
|
||||
@ -147,7 +151,7 @@ void AchievementProgressWidget::UpdateData()
|
||||
|
||||
QString AchievementProgressWidget::GetStatusString(u32 achievement_id) const
|
||||
{
|
||||
const auto unlock_status = AchievementManager::GetInstance()->GetUnlockStatus(achievement_id);
|
||||
const auto unlock_status = AchievementManager::GetInstance().GetUnlockStatus(achievement_id);
|
||||
if (unlock_status.session_unlock_count > 0)
|
||||
{
|
||||
if (Config::Get(Config::RA_ENCORE_ENABLED))
|
||||
|
@ -244,16 +244,18 @@ void AchievementSettingsWidget::SaveSettings()
|
||||
void AchievementSettingsWidget::ToggleRAIntegration()
|
||||
{
|
||||
SaveSettings();
|
||||
|
||||
auto& instance = AchievementManager::GetInstance();
|
||||
if (Config::Get(Config::RA_ENABLED))
|
||||
AchievementManager::GetInstance()->Init();
|
||||
instance.Init();
|
||||
else
|
||||
AchievementManager::GetInstance()->Shutdown();
|
||||
instance.Shutdown();
|
||||
}
|
||||
|
||||
void AchievementSettingsWidget::Login()
|
||||
{
|
||||
Config::SetBaseOrCurrent(Config::RA_USERNAME, m_common_username_input->text().toStdString());
|
||||
AchievementManager::GetInstance()->Login(m_common_password_input->text().toStdString());
|
||||
AchievementManager::GetInstance().Login(m_common_password_input->text().toStdString());
|
||||
m_common_password_input->setText(QString());
|
||||
m_common_login_failed->setVisible(Config::Get(Config::RA_API_TOKEN).empty());
|
||||
SaveSettings();
|
||||
@ -261,26 +263,26 @@ void AchievementSettingsWidget::Login()
|
||||
|
||||
void AchievementSettingsWidget::Logout()
|
||||
{
|
||||
AchievementManager::GetInstance()->Logout();
|
||||
AchievementManager::GetInstance().Logout();
|
||||
SaveSettings();
|
||||
}
|
||||
|
||||
void AchievementSettingsWidget::ToggleAchievements()
|
||||
{
|
||||
SaveSettings();
|
||||
AchievementManager::GetInstance()->ActivateDeactivateAchievements();
|
||||
AchievementManager::GetInstance().ActivateDeactivateAchievements();
|
||||
}
|
||||
|
||||
void AchievementSettingsWidget::ToggleLeaderboards()
|
||||
{
|
||||
SaveSettings();
|
||||
AchievementManager::GetInstance()->ActivateDeactivateLeaderboards();
|
||||
AchievementManager::GetInstance().ActivateDeactivateLeaderboards();
|
||||
}
|
||||
|
||||
void AchievementSettingsWidget::ToggleRichPresence()
|
||||
{
|
||||
SaveSettings();
|
||||
AchievementManager::GetInstance()->ActivateDeactivateRichPresence();
|
||||
AchievementManager::GetInstance().ActivateDeactivateRichPresence();
|
||||
}
|
||||
|
||||
void AchievementSettingsWidget::ToggleHardcore()
|
||||
@ -305,19 +307,19 @@ void AchievementSettingsWidget::ToggleProgress()
|
||||
void AchievementSettingsWidget::ToggleBadges()
|
||||
{
|
||||
SaveSettings();
|
||||
AchievementManager::GetInstance()->FetchBadges();
|
||||
AchievementManager::GetInstance().FetchBadges();
|
||||
}
|
||||
|
||||
void AchievementSettingsWidget::ToggleUnofficial()
|
||||
{
|
||||
SaveSettings();
|
||||
AchievementManager::GetInstance()->ActivateDeactivateAchievements();
|
||||
AchievementManager::GetInstance().ActivateDeactivateAchievements();
|
||||
}
|
||||
|
||||
void AchievementSettingsWidget::ToggleEncore()
|
||||
{
|
||||
SaveSettings();
|
||||
AchievementManager::GetInstance()->ActivateDeactivateAchievements();
|
||||
AchievementManager::GetInstance().ActivateDeactivateAchievements();
|
||||
}
|
||||
|
||||
#endif // USE_RETRO_ACHIEVEMENTS
|
||||
|
@ -25,7 +25,7 @@ AchievementsWindow::AchievementsWindow(QWidget* parent) : QDialog(parent)
|
||||
|
||||
CreateMainLayout();
|
||||
ConnectWidgets();
|
||||
AchievementManager::GetInstance()->SetUpdateCallback(
|
||||
AchievementManager::GetInstance().SetUpdateCallback(
|
||||
[this] { QueueOnObject(this, &AchievementsWindow::UpdateData); });
|
||||
connect(&Settings::Instance(), &Settings::EmulationStateChanged, this,
|
||||
&AchievementsWindow::UpdateData);
|
||||
@ -41,7 +41,7 @@ void AchievementsWindow::showEvent(QShowEvent* event)
|
||||
|
||||
void AchievementsWindow::CreateMainLayout()
|
||||
{
|
||||
auto* layout = new QVBoxLayout();
|
||||
const auto is_game_loaded = AchievementManager::GetInstance().IsGameLoaded();
|
||||
|
||||
m_header_widget = new AchievementHeaderWidget(this);
|
||||
m_tab_widget = new QTabWidget();
|
||||
@ -50,12 +50,13 @@ void AchievementsWindow::CreateMainLayout()
|
||||
m_leaderboard_widget = new AchievementLeaderboardWidget(m_tab_widget);
|
||||
m_tab_widget->addTab(GetWrappedWidget(m_settings_widget, this, 125, 100), tr("Settings"));
|
||||
m_tab_widget->addTab(GetWrappedWidget(m_progress_widget, this, 125, 100), tr("Progress"));
|
||||
m_tab_widget->setTabVisible(1, AchievementManager::GetInstance()->IsGameLoaded());
|
||||
m_tab_widget->setTabVisible(1, is_game_loaded);
|
||||
m_tab_widget->addTab(GetWrappedWidget(m_leaderboard_widget, this, 125, 100), tr("Leaderboards"));
|
||||
m_tab_widget->setTabVisible(2, AchievementManager::GetInstance()->IsGameLoaded());
|
||||
m_tab_widget->setTabVisible(2, is_game_loaded);
|
||||
|
||||
m_button_box = new QDialogButtonBox(QDialogButtonBox::Close);
|
||||
|
||||
auto* layout = new QVBoxLayout();
|
||||
layout->addWidget(m_header_widget);
|
||||
layout->addWidget(m_tab_widget);
|
||||
layout->addWidget(m_button_box);
|
||||
@ -71,14 +72,17 @@ void AchievementsWindow::ConnectWidgets()
|
||||
void AchievementsWindow::UpdateData()
|
||||
{
|
||||
{
|
||||
std::lock_guard lg{*AchievementManager::GetInstance()->GetLock()};
|
||||
auto& instance = AchievementManager::GetInstance();
|
||||
std::lock_guard lg{*instance.GetLock()};
|
||||
const bool is_game_loaded = instance.IsGameLoaded();
|
||||
|
||||
m_header_widget->UpdateData();
|
||||
m_header_widget->setVisible(AchievementManager::GetInstance()->IsLoggedIn());
|
||||
m_header_widget->setVisible(instance.IsLoggedIn());
|
||||
m_settings_widget->UpdateData();
|
||||
m_progress_widget->UpdateData();
|
||||
m_tab_widget->setTabVisible(1, AchievementManager::GetInstance()->IsGameLoaded());
|
||||
m_tab_widget->setTabVisible(1, is_game_loaded);
|
||||
m_leaderboard_widget->UpdateData();
|
||||
m_tab_widget->setTabVisible(2, AchievementManager::GetInstance()->IsGameLoaded());
|
||||
m_tab_widget->setTabVisible(2, is_game_loaded);
|
||||
}
|
||||
update();
|
||||
}
|
||||
|
@ -39,7 +39,7 @@ void FreeLookWidget::CreateLayout()
|
||||
tr("Allows manipulation of the in-game camera.<br><br><dolphin_emphasis>If unsure, "
|
||||
"leave this unchecked.</dolphin_emphasis>"));
|
||||
#ifdef USE_RETRO_ACHIEVEMENTS
|
||||
bool hardcore = AchievementManager::GetInstance()->IsHardcoreModeActive();
|
||||
const bool hardcore = AchievementManager::GetInstance().IsHardcoreModeActive();
|
||||
m_enable_freelook->setEnabled(!hardcore);
|
||||
#endif // USE_RETRO_ACHIEVEMENTS
|
||||
m_freelook_controller_configure_button = new NonDefaultQPushButton(tr("Configure Controller"));
|
||||
@ -113,7 +113,7 @@ void FreeLookWidget::LoadSettings()
|
||||
const bool checked = Config::Get(Config::FREE_LOOK_ENABLED);
|
||||
m_enable_freelook->setChecked(checked);
|
||||
#ifdef USE_RETRO_ACHIEVEMENTS
|
||||
bool hardcore = AchievementManager::GetInstance()->IsHardcoreModeActive();
|
||||
const bool hardcore = AchievementManager::GetInstance().IsHardcoreModeActive();
|
||||
m_enable_freelook->setEnabled(!hardcore);
|
||||
#endif // USE_RETRO_ACHIEVEMENTS
|
||||
m_freelook_control_type->setEnabled(checked);
|
||||
|
@ -582,7 +582,7 @@ void HotkeyScheduler::Run()
|
||||
const bool new_value = !Config::Get(Config::FREE_LOOK_ENABLED);
|
||||
Config::SetCurrent(Config::FREE_LOOK_ENABLED, new_value);
|
||||
#ifdef USE_RETRO_ACHIEVEMENTS
|
||||
bool hardcore = AchievementManager::GetInstance()->IsHardcoreModeActive();
|
||||
const bool hardcore = AchievementManager::GetInstance().IsHardcoreModeActive();
|
||||
if (hardcore)
|
||||
OSD::AddMessage("Free Look is Disabled in Hardcore Mode");
|
||||
else
|
||||
|
@ -258,7 +258,7 @@ MainWindow::MainWindow(std::unique_ptr<BootParameters> boot_parameters,
|
||||
NetPlayInit();
|
||||
|
||||
#ifdef USE_RETRO_ACHIEVEMENTS
|
||||
AchievementManager::GetInstance()->Init();
|
||||
AchievementManager::GetInstance().Init();
|
||||
#endif // USE_RETRO_ACHIEVEMENTS
|
||||
|
||||
#if defined(__unix__) || defined(__unix) || defined(__APPLE__)
|
||||
@ -327,7 +327,7 @@ MainWindow::~MainWindow()
|
||||
Settings::Instance().ResetNetPlayServer();
|
||||
|
||||
#ifdef USE_RETRO_ACHIEVEMENTS
|
||||
AchievementManager::GetInstance()->Shutdown();
|
||||
AchievementManager::GetInstance().Shutdown();
|
||||
#endif // USE_RETRO_ACHIEVEMENTS
|
||||
|
||||
delete m_render_widget;
|
||||
|
@ -125,7 +125,7 @@ void MenuBar::OnEmulationStateChanged(Core::State state)
|
||||
m_state_save_menu->setEnabled(running);
|
||||
|
||||
#ifdef USE_RETRO_ACHIEVEMENTS
|
||||
bool hardcore = AchievementManager::GetInstance()->IsHardcoreModeActive();
|
||||
const bool hardcore = AchievementManager::GetInstance().IsHardcoreModeActive();
|
||||
m_state_load_menu->setEnabled(running && !hardcore);
|
||||
m_frame_advance_action->setEnabled(running && !hardcore);
|
||||
#else // USE_RETRO_ACHIEVEMENTS
|
||||
|
Reference in New Issue
Block a user