Merge pull request #7585 from Techjar/netplay-wiimote-extension

NetPlay: Sync Wiimote extension
This commit is contained in:
JMC47 2019-01-05 05:57:36 -05:00 committed by GitHub
commit 1cd5debecf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 52 additions and 8 deletions

View File

@ -498,6 +498,9 @@ static void EmuThread(std::unique_ptr<BootParameters> boot, WindowSystemInfo wsi
{
Wiimote::LoadConfig();
}
if (NetPlay::IsNetPlayRunning())
NetPlay::SetupWiimotes();
}
Common::ScopeGuard controller_guard{[init_controllers] {

View File

@ -52,7 +52,9 @@
#include "Core/Movie.h"
#include "Core/PowerPC/PowerPC.h"
#include "Core/WiiRoot.h"
#include "InputCommon/ControllerEmu/ControlGroup/Extension.h"
#include "InputCommon/GCAdapter.h"
#include "InputCommon/InputConfig.h"
#include "UICommon/GameFile.h"
#include "VideoCommon/OnScreenDisplay.h"
#include "VideoCommon/VideoConfig.h"
@ -558,11 +560,12 @@ unsigned int NetPlayClient::OnData(sf::Packet& packet)
packet >> m_net_settings.m_OCFactor;
packet >> m_net_settings.m_ReducePollingRate;
int tmp;
packet >> tmp;
m_net_settings.m_EXIDevice[0] = static_cast<ExpansionInterface::TEXIDevices>(tmp);
packet >> tmp;
m_net_settings.m_EXIDevice[1] = static_cast<ExpansionInterface::TEXIDevices>(tmp);
for (auto& device : m_net_settings.m_EXIDevice)
{
int tmp;
packet >> tmp;
device = static_cast<ExpansionInterface::TEXIDevices>(tmp);
}
packet >> m_net_settings.m_EFBAccessEnable;
packet >> m_net_settings.m_BBoxEnable;
@ -611,6 +614,9 @@ unsigned int NetPlayClient::OnData(sf::Packet& packet)
packet >> m_net_settings.m_SyncCodes;
packet >> m_net_settings.m_SyncAllWiiSaves;
for (int& extension : m_net_settings.m_WiimoteExtension)
packet >> extension;
m_net_settings.m_IsHosting = m_local_player->IsHost();
m_net_settings.m_HostInputAuthority = m_host_input_authority;
}
@ -2173,6 +2179,23 @@ bool IsSyncingAllWiiSaves()
return false;
}
void SetupWiimotes()
{
ASSERT(IsNetPlayRunning());
const NetSettings& netplay_settings = netplay_client->GetNetSettings();
const PadMappingArray& wiimote_map = netplay_client->GetWiimoteMapping();
for (int i = 0; i < netplay_settings.m_WiimoteExtension.size(); i++)
{
if (wiimote_map[i] > 0)
{
static_cast<ControllerEmu::Extension*>(
static_cast<WiimoteEmu::Wiimote*>(Wiimote::GetConfig()->GetController(i))
->GetWiimoteGroup(WiimoteEmu::WiimoteGroup::Extension))
->switch_extension = netplay_settings.m_WiimoteExtension[i];
}
}
}
void NetPlay_Enable(NetPlayClient* const np)
{
std::lock_guard<std::mutex> lk(crit_netplay_client);

View File

@ -36,7 +36,7 @@ struct NetSettings
bool m_ReducePollingRate;
bool m_OCEnable;
float m_OCFactor;
ExpansionInterface::TEXIDevices m_EXIDevice[2];
std::array<ExpansionInterface::TEXIDevices, 2> m_EXIDevice;
bool m_EFBAccessEnable;
bool m_BBoxEnable;
bool m_ForceProgressive;
@ -80,6 +80,7 @@ struct NetSettings
bool m_SyncCodes;
std::string m_SaveDataRegion;
bool m_SyncAllWiiSaves;
std::array<int, 4> m_WiimoteExtension;
bool m_IsHosting;
bool m_HostInputAuthority;
};
@ -209,4 +210,5 @@ void ClearWiiSyncData();
void SetSIPollBatching(bool state);
void SendPowerButtonEvent();
bool IsSyncingAllWiiSaves();
void SetupWiimotes();
} // namespace NetPlay

View File

@ -42,12 +42,16 @@
#include "Core/HW/Sram.h"
#include "Core/HW/WiiSave.h"
#include "Core/HW/WiiSaveStructs.h"
#include "Core/HW/WiimoteEmu/WiimoteEmu.h"
#include "Core/HW/WiimoteReal/WiimoteReal.h"
#include "Core/IOS/ES/ES.h"
#include "Core/IOS/FS/FileSystem.h"
#include "Core/IOS/IOS.h"
#include "Core/NetPlayClient.h" //for NetPlayUI
#include "DiscIO/Enums.h"
#include "InputCommon/ControllerEmu/ControlGroup/Extension.h"
#include "InputCommon/GCPadStatus.h"
#include "InputCommon/InputConfig.h"
#include "UICommon/GameFile.h"
#if !defined(_WIN32)
@ -1159,8 +1163,10 @@ bool NetPlayServer::StartGame()
spac << m_settings.m_OCEnable;
spac << m_settings.m_OCFactor;
spac << m_settings.m_ReducePollingRate;
spac << m_settings.m_EXIDevice[0];
spac << m_settings.m_EXIDevice[1];
for (auto& device : m_settings.m_EXIDevice)
spac << device;
spac << m_settings.m_EFBAccessEnable;
spac << m_settings.m_BBoxEnable;
spac << m_settings.m_ForceProgressive;
@ -1206,6 +1212,16 @@ bool NetPlayServer::StartGame()
spac << m_settings.m_SyncCodes;
spac << m_settings.m_SyncAllWiiSaves;
for (int i = 0; i < m_settings.m_WiimoteExtension.size(); i++)
{
const int extension =
static_cast<ControllerEmu::Extension*>(
static_cast<WiimoteEmu::Wiimote*>(Wiimote::GetConfig()->GetController(i))
->GetWiimoteGroup(WiimoteEmu::WiimoteGroup::Extension))
->switch_extension;
spac << extension;
}
SendAsyncToClients(std::move(spac));
m_start_pending = false;