mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-03-12 22:56:52 +01:00
Add RAIntegration Event Handler
Some refactoring done to hardcore toggling so that it's more readily available for the toggle hardcore event.
This commit is contained in:
parent
b5b61291b9
commit
baf4e07213
@ -1439,6 +1439,7 @@ void AchievementManager::LoadIntegrationCallback(int result, const char* error_m
|
||||
case RC_OK:
|
||||
INFO_LOG_FMT(ACHIEVEMENTS, "RAIntegration.dll found.");
|
||||
instance.m_dll_found = true;
|
||||
rc_client_raintegration_set_event_handler(instance.m_client, RAIntegrationEventHandler);
|
||||
instance.m_dev_menu_callback();
|
||||
// TODO: hook up menu and dll event handlers
|
||||
break;
|
||||
@ -1457,6 +1458,34 @@ void AchievementManager::LoadIntegrationCallback(int result, const char* error_m
|
||||
instance.Login("");
|
||||
INFO_LOG_FMT(ACHIEVEMENTS, "Achievement Manager Initialized");
|
||||
}
|
||||
|
||||
void AchievementManager::RAIntegrationEventHandler(const rc_client_raintegration_event_t* event,
|
||||
rc_client_t* client)
|
||||
{
|
||||
auto& instance = AchievementManager::GetInstance();
|
||||
switch (event->type)
|
||||
{
|
||||
case RC_CLIENT_RAINTEGRATION_EVENT_MENUITEM_CHECKED_CHANGED:
|
||||
instance.m_dev_menu_callback();
|
||||
break;
|
||||
case RC_CLIENT_RAINTEGRATION_EVENT_PAUSE:
|
||||
{
|
||||
Core::System* system = instance.m_system.load(std::memory_order_acquire);
|
||||
if (!system)
|
||||
return;
|
||||
Core::SetState(*system, Core::State::Paused);
|
||||
break;
|
||||
}
|
||||
case RC_CLIENT_RAINTEGRATION_EVENT_HARDCORE_CHANGED:
|
||||
Config::SetBaseOrCurrent(Config::RA_HARDCORE_ENABLED,
|
||||
!Config::Get(Config::RA_HARDCORE_ENABLED));
|
||||
instance.m_hardcore_callback();
|
||||
break;
|
||||
default:
|
||||
WARN_LOG_FMT(ACHIEVEMENTS, "Unsupported raintegration event. {}", event->type);
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif // RC_CLIENT_SUPPORTS_RAINTEGRATION
|
||||
|
||||
#endif // USE_RETRO_ACHIEVEMENTS
|
||||
|
@ -172,6 +172,10 @@ public:
|
||||
{
|
||||
m_dev_menu_callback = callback;
|
||||
};
|
||||
void SetHardcoreCallback(std::function<void(void)> callback)
|
||||
{
|
||||
m_hardcore_callback = callback;
|
||||
};
|
||||
#endif // RC_CLIENT_SUPPORTS_RAINTEGRATION
|
||||
|
||||
void DoState(PointerWrap& p);
|
||||
@ -249,6 +253,8 @@ private:
|
||||
#ifdef RC_CLIENT_SUPPORTS_RAINTEGRATION
|
||||
static void LoadIntegrationCallback(int result, const char* error_message, rc_client_t* client,
|
||||
void* userdata);
|
||||
static void RAIntegrationEventHandler(const rc_client_raintegration_event_t* event,
|
||||
rc_client_t* client);
|
||||
#endif // RC_CLIENT_SUPPORTS_RAINTEGRATION
|
||||
|
||||
rc_runtime_t m_runtime{};
|
||||
@ -286,6 +292,7 @@ private:
|
||||
bool m_dll_found = false;
|
||||
#ifdef RC_CLIENT_SUPPORTS_RAINTEGRATION
|
||||
std::function<void(void)> m_dev_menu_callback;
|
||||
std::function<void(void)> m_hardcore_callback;
|
||||
#endif // RC_CLIENT_SUPPORTS_RAINTEGRATION
|
||||
|
||||
Common::WorkQueueThread<std::function<void()>> m_queue;
|
||||
|
@ -285,17 +285,6 @@ void AchievementSettingsWidget::Logout()
|
||||
|
||||
void AchievementSettingsWidget::ToggleHardcore()
|
||||
{
|
||||
if (Config::Get(Config::RA_HARDCORE_ENABLED))
|
||||
{
|
||||
auto confirm = ModalMessageBox::question(
|
||||
this, tr("Confirm Hardcore Off"), tr("Are you sure you want to turn hardcore mode off?"),
|
||||
QMessageBox::Yes | QMessageBox::No, QMessageBox::NoButton, Qt::ApplicationModal);
|
||||
if (confirm != QMessageBox::Yes)
|
||||
{
|
||||
SignalBlocking(m_common_hardcore_enabled_input)->setChecked(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
SaveSettings();
|
||||
UpdateHardcoreMode();
|
||||
}
|
||||
|
@ -43,6 +43,7 @@
|
||||
#include "Core/BootManager.h"
|
||||
#include "Core/CommonTitles.h"
|
||||
#include "Core/Config/AchievementSettings.h"
|
||||
#include "Core/Config/FreeLookSettings.h"
|
||||
#include "Core/Config/MainSettings.h"
|
||||
#include "Core/Config/NetplaySettings.h"
|
||||
#include "Core/Config/UISettings.h"
|
||||
@ -265,6 +266,8 @@ MainWindow::MainWindow(Core::System& system, std::unique_ptr<BootParameters> boo
|
||||
&MainWindow::ShowAchievementSettings);
|
||||
connect(m_game_list, &GameList::OpenAchievementSettings, this,
|
||||
&MainWindow::ShowAchievementSettings);
|
||||
connect(&Settings::Instance(), &Settings::HardcoreStateChanged, this,
|
||||
&MainWindow::ToggleHardcore);
|
||||
#endif // USE_RETRO_ACHIEVEMENTS
|
||||
|
||||
InitCoreCallbacks();
|
||||
@ -275,6 +278,10 @@ MainWindow::MainWindow(Core::System& system, std::unique_ptr<BootParameters> boo
|
||||
AchievementManager::GetInstance().Init(reinterpret_cast<void*>(winId()));
|
||||
if (AchievementManager::GetInstance().IsHardcoreModeActive())
|
||||
Settings::Instance().SetDebugModeEnabled(false);
|
||||
#ifdef RC_CLIENT_SUPPORTS_RAINTEGRATION
|
||||
AchievementManager::GetInstance().SetHardcoreCallback(
|
||||
[this]() { QueueOnObject(this, [this] { this->ToggleHardcore(); }); });
|
||||
#endif // RC_CLIENT_SUPPORTS_RAINTEGRATION
|
||||
#endif // USE_RETRO_ACHIEVEMENTS
|
||||
|
||||
#if defined(__unix__) || defined(__unix) || defined(__APPLE__)
|
||||
@ -1992,6 +1999,20 @@ void MainWindow::ShowAchievementSettings()
|
||||
ShowAchievementsWindow();
|
||||
m_achievements_window->ForceSettingsTab();
|
||||
}
|
||||
|
||||
void MainWindow::ToggleHardcore()
|
||||
{
|
||||
AchievementManager::GetInstance().SetHardcoreMode();
|
||||
if (Config::Get(Config::RA_HARDCORE_ENABLED))
|
||||
{
|
||||
if (Config::Get(Config::MAIN_EMULATION_SPEED) < 1.0f)
|
||||
Config::SetBaseOrCurrent(Config::MAIN_EMULATION_SPEED, 1.0f);
|
||||
Config::SetBaseOrCurrent(Config::FREE_LOOK_ENABLED, false);
|
||||
Config::SetBaseOrCurrent(Config::MAIN_ENABLE_CHEATS, false);
|
||||
Settings::Instance().SetDebugModeEnabled(false);
|
||||
}
|
||||
emit Settings::Instance().EmulationStateChanged(Core::GetState(Core::System::GetInstance()));
|
||||
}
|
||||
#endif // USE_RETRO_ACHIEVEMENTS
|
||||
|
||||
void MainWindow::ShowMemcardManager()
|
||||
|
@ -181,6 +181,7 @@ private:
|
||||
#ifdef USE_RETRO_ACHIEVEMENTS
|
||||
void ShowAchievementsWindow();
|
||||
void ShowAchievementSettings();
|
||||
void ToggleHardcore();
|
||||
#endif // USE_RETRO_ACHIEVEMENTS
|
||||
|
||||
void NetPlayInit();
|
||||
|
Loading…
x
Reference in New Issue
Block a user