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(); Wiimote::LoadConfig();
} }
if (NetPlay::IsNetPlayRunning())
NetPlay::SetupWiimotes();
} }
Common::ScopeGuard controller_guard{[init_controllers] { Common::ScopeGuard controller_guard{[init_controllers] {

View File

@ -52,7 +52,9 @@
#include "Core/Movie.h" #include "Core/Movie.h"
#include "Core/PowerPC/PowerPC.h" #include "Core/PowerPC/PowerPC.h"
#include "Core/WiiRoot.h" #include "Core/WiiRoot.h"
#include "InputCommon/ControllerEmu/ControlGroup/Extension.h"
#include "InputCommon/GCAdapter.h" #include "InputCommon/GCAdapter.h"
#include "InputCommon/InputConfig.h"
#include "UICommon/GameFile.h" #include "UICommon/GameFile.h"
#include "VideoCommon/OnScreenDisplay.h" #include "VideoCommon/OnScreenDisplay.h"
#include "VideoCommon/VideoConfig.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_OCFactor;
packet >> m_net_settings.m_ReducePollingRate; packet >> m_net_settings.m_ReducePollingRate;
for (auto& device : m_net_settings.m_EXIDevice)
{
int tmp; int tmp;
packet >> tmp; packet >> tmp;
m_net_settings.m_EXIDevice[0] = static_cast<ExpansionInterface::TEXIDevices>(tmp); device = static_cast<ExpansionInterface::TEXIDevices>(tmp);
packet >> tmp; }
m_net_settings.m_EXIDevice[1] = static_cast<ExpansionInterface::TEXIDevices>(tmp);
packet >> m_net_settings.m_EFBAccessEnable; packet >> m_net_settings.m_EFBAccessEnable;
packet >> m_net_settings.m_BBoxEnable; 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_SyncCodes;
packet >> m_net_settings.m_SyncAllWiiSaves; 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_IsHosting = m_local_player->IsHost();
m_net_settings.m_HostInputAuthority = m_host_input_authority; m_net_settings.m_HostInputAuthority = m_host_input_authority;
} }
@ -2173,6 +2179,23 @@ bool IsSyncingAllWiiSaves()
return false; 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) void NetPlay_Enable(NetPlayClient* const np)
{ {
std::lock_guard<std::mutex> lk(crit_netplay_client); std::lock_guard<std::mutex> lk(crit_netplay_client);

View File

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

View File

@ -42,12 +42,16 @@
#include "Core/HW/Sram.h" #include "Core/HW/Sram.h"
#include "Core/HW/WiiSave.h" #include "Core/HW/WiiSave.h"
#include "Core/HW/WiiSaveStructs.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/ES/ES.h"
#include "Core/IOS/FS/FileSystem.h" #include "Core/IOS/FS/FileSystem.h"
#include "Core/IOS/IOS.h" #include "Core/IOS/IOS.h"
#include "Core/NetPlayClient.h" //for NetPlayUI #include "Core/NetPlayClient.h" //for NetPlayUI
#include "DiscIO/Enums.h" #include "DiscIO/Enums.h"
#include "InputCommon/ControllerEmu/ControlGroup/Extension.h"
#include "InputCommon/GCPadStatus.h" #include "InputCommon/GCPadStatus.h"
#include "InputCommon/InputConfig.h"
#include "UICommon/GameFile.h" #include "UICommon/GameFile.h"
#if !defined(_WIN32) #if !defined(_WIN32)
@ -1159,8 +1163,10 @@ bool NetPlayServer::StartGame()
spac << m_settings.m_OCEnable; spac << m_settings.m_OCEnable;
spac << m_settings.m_OCFactor; spac << m_settings.m_OCFactor;
spac << m_settings.m_ReducePollingRate; 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_EFBAccessEnable;
spac << m_settings.m_BBoxEnable; spac << m_settings.m_BBoxEnable;
spac << m_settings.m_ForceProgressive; spac << m_settings.m_ForceProgressive;
@ -1206,6 +1212,16 @@ bool NetPlayServer::StartGame()
spac << m_settings.m_SyncCodes; spac << m_settings.m_SyncCodes;
spac << m_settings.m_SyncAllWiiSaves; 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)); SendAsyncToClients(std::move(spac));
m_start_pending = false; m_start_pending = false;