mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-28 16:49:58 -06:00
Netplay: Sync codes
Adds a tickbox to the server's window to syncronize codes. Codes are temporarily sent to each client and are used for the duration of the session. Saves the "sync codes" tickbox as per PR Netplay: Properly save hosting settings #7483
This commit is contained in:

committed by
Pierre Bourdon

parent
0140009114
commit
469f29350f
@ -61,6 +61,7 @@ enum class Installation
|
||||
static Installation s_code_handler_installed = Installation::Uninstalled;
|
||||
// the currently active codes
|
||||
static std::vector<GeckoCode> s_active_codes;
|
||||
static std::vector<GeckoCode> s_synced_codes;
|
||||
static std::mutex s_active_codes_lock;
|
||||
|
||||
void SetActiveCodes(const std::vector<GeckoCode>& gcodes)
|
||||
@ -79,6 +80,40 @@ void SetActiveCodes(const std::vector<GeckoCode>& gcodes)
|
||||
s_code_handler_installed = Installation::Uninstalled;
|
||||
}
|
||||
|
||||
void SetSyncedCodesAsActive()
|
||||
{
|
||||
s_active_codes.clear();
|
||||
s_active_codes.reserve(s_synced_codes.size());
|
||||
s_active_codes = s_synced_codes;
|
||||
}
|
||||
|
||||
void UpdateSyncedCodes(const std::vector<GeckoCode>& gcodes)
|
||||
{
|
||||
s_synced_codes.clear();
|
||||
s_synced_codes.reserve(gcodes.size());
|
||||
std::copy_if(gcodes.begin(), gcodes.end(), std::back_inserter(s_synced_codes),
|
||||
[](const GeckoCode& code) { return code.enabled; });
|
||||
s_synced_codes.shrink_to_fit();
|
||||
}
|
||||
|
||||
std::vector<GeckoCode> SetAndReturnActiveCodes(const std::vector<GeckoCode>& gcodes)
|
||||
{
|
||||
std::lock_guard<std::mutex> lk(s_active_codes_lock);
|
||||
|
||||
s_active_codes.clear();
|
||||
if (SConfig::GetInstance().bEnableCheats)
|
||||
{
|
||||
s_active_codes.reserve(gcodes.size());
|
||||
std::copy_if(gcodes.begin(), gcodes.end(), std::back_inserter(s_active_codes),
|
||||
[](const GeckoCode& code) { return code.enabled; });
|
||||
}
|
||||
s_active_codes.shrink_to_fit();
|
||||
|
||||
s_code_handler_installed = Installation::Uninstalled;
|
||||
|
||||
return s_active_codes;
|
||||
}
|
||||
|
||||
// Requires s_active_codes_lock
|
||||
// NOTE: Refer to "codehandleronly.s" from Gecko OS.
|
||||
static Installation InstallCodeHandlerLocked()
|
||||
|
Reference in New Issue
Block a user