Force NetPlay Clients to Host Hardcore Status

If the host is in hardcore mode, all joining players will be set to hardcore mode; if not, all joining players will be set to softcore. This ensures all players have the same settings and remain synchroized.
This commit is contained in:
LillyJadeKatrin 2024-10-26 23:04:53 -04:00
parent ef71c75458
commit 9b6555c49c
4 changed files with 9 additions and 0 deletions

View File

@ -11,6 +11,7 @@
#include "Common/Config/Config.h"
#include "Common/FileUtil.h"
#include "Core/Config/AchievementSettings.h"
#include "Core/Config/GraphicsSettings.h"
#include "Core/Config/MainSettings.h"
#include "Core/Config/SYSCONFSettings.h"
@ -33,6 +34,9 @@ public:
layer->Set(Config::MAIN_CPU_THREAD, m_settings.cpu_thread);
layer->Set(Config::MAIN_CPU_CORE, m_settings.cpu_core);
layer->Set(Config::MAIN_ENABLE_CHEATS, m_settings.enable_cheats);
#ifdef USE_RETRO_ACHIEVEMENTS
layer->Set(Config::RA_HARDCORE_ENABLED, m_settings.enable_hardcore);
#endif // USE_RETRO_ACHIEVEMENTS
layer->Set(Config::MAIN_GC_LANGUAGE, m_settings.selected_language);
layer->Set(Config::MAIN_OVERRIDE_REGION_SETTINGS, m_settings.override_region_settings);
layer->Set(Config::MAIN_DSP_HLE, m_settings.dsp_hle);

View File

@ -848,6 +848,7 @@ void NetPlayClient::OnStartGame(sf::Packet& packet)
packet >> m_net_settings.cpu_thread;
packet >> m_net_settings.cpu_core;
packet >> m_net_settings.enable_cheats;
packet >> m_net_settings.enable_hardcore;
packet >> m_net_settings.selected_language;
packet >> m_net_settings.override_region_settings;
packet >> m_net_settings.dsp_enable_jit;

View File

@ -35,6 +35,7 @@ struct NetSettings
bool cpu_thread = false;
PowerPC::CPUCore cpu_core{};
bool enable_cheats = false;
bool enable_hardcore = false;
int selected_language = 0;
bool override_region_settings = false;
bool dsp_hle = false;

View File

@ -31,6 +31,7 @@
#include "Common/UPnP.h"
#include "Common/Version.h"
#include "Core/AchievementManager.h"
#include "Core/ActionReplay.h"
#include "Core/Boot/Boot.h"
#include "Core/Config/GraphicsSettings.h"
@ -1358,6 +1359,7 @@ bool NetPlayServer::SetupNetSettings()
settings.cpu_thread = Config::Get(Config::MAIN_CPU_THREAD);
settings.cpu_core = Config::Get(Config::MAIN_CPU_CORE);
settings.enable_cheats = Config::AreCheatsEnabled();
settings.enable_hardcore = AchievementManager::GetInstance().IsHardcoreModeActive();
settings.selected_language = Config::Get(Config::MAIN_GC_LANGUAGE);
settings.override_region_settings = Config::Get(Config::MAIN_OVERRIDE_REGION_SETTINGS);
settings.dsp_hle = Config::Get(Config::MAIN_DSP_HLE);
@ -1586,6 +1588,7 @@ bool NetPlayServer::StartGame()
spac << m_settings.cpu_thread;
spac << m_settings.cpu_core;
spac << m_settings.enable_cheats;
spac << m_settings.enable_hardcore;
spac << m_settings.selected_language;
spac << m_settings.override_region_settings;
spac << m_settings.dsp_enable_jit;