Cheevos: Add RAIntergration support

This commit is contained in:
Connor McLaughlin
2022-04-18 15:09:21 +10:00
parent 8b61fb8b58
commit 9a5ef2d0a2
17 changed files with 1997 additions and 22 deletions

View File

@ -20,6 +20,11 @@
#include "scmversion/scmversion.h"
#include "settingsdialog.h"
#include "settingwidgetbinder.h"
#ifdef WITH_CHEEVOS
#include "core/cheevos.h"
#endif
#include <QtCore/QDebug>
#include <QtCore/QFile>
#include <QtCore/QFileInfo>
@ -101,6 +106,11 @@ void MainWindow::initializeAndShow()
switchToGameListView();
show();
#ifdef WITH_RAINTEGRATION
if (Cheevos::IsUsingRAIntegration())
Cheevos::RAIntegration::MainWindowChanged((void*)winId());
#endif
}
void MainWindow::reportError(const QString& message)
@ -991,6 +1001,33 @@ void MainWindow::setupAdditionalUi()
connect(action, &QAction::triggered,
[scale]() { QtHostInterface::GetInstance()->requestRenderWindowScale(scale); });
}
#ifdef WITH_RAINTEGRATION
if (Cheevos::IsUsingRAIntegration())
{
QMenu* raMenu = new QMenu(QStringLiteral("RAIntegration"), m_ui.menuDebug);
connect(raMenu, &QMenu::aboutToShow, this, [this, raMenu]() {
raMenu->clear();
const auto items = Cheevos::RAIntegration::GetMenuItems();
for (const auto& [id, title] : items)
{
if (id == 0)
{
raMenu->addSeparator();
continue;
}
QAction* raAction = raMenu->addAction(QString::fromUtf8(title));
connect(raAction, &QAction::triggered, this, [id]() {
QtHostInterface::GetInstance()->executeOnEmulationThread(
[id]() { Cheevos::RAIntegration::ActivateMenuItem(id); });
});
}
});
m_ui.menuDebug->insertMenu(m_ui.menuCPUExecutionMode->menuAction(), raMenu);
}
#endif
}
void MainWindow::updateEmulationActions(bool starting, bool running, bool cheevos_challenge_mode)