mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-14 21:37:52 -07:00
Qt/WiimoteControllersWidget: Disable remote Wiimote configuration during netplay.
This commit is contained in:
parent
a1563f2def
commit
ae4b89441c
@ -2321,11 +2321,22 @@ bool NetPlayClient::IsFirstInGamePad(int ingame_pad) const
|
||||
[](auto mapping) { return mapping > 0; });
|
||||
}
|
||||
|
||||
static int CountLocalPads(const PadMappingArray& pad_map, const PlayerId& local_player_pid)
|
||||
{
|
||||
return static_cast<int>(
|
||||
std::count_if(pad_map.begin(), pad_map.end(), [&local_player_pid](const auto& mapping) {
|
||||
return mapping == local_player_pid;
|
||||
}));
|
||||
}
|
||||
|
||||
int NetPlayClient::NumLocalPads() const
|
||||
{
|
||||
return static_cast<int>(std::count_if(m_pad_map.begin(), m_pad_map.end(), [this](auto mapping) {
|
||||
return mapping == m_local_player->pid;
|
||||
}));
|
||||
return CountLocalPads(m_pad_map, m_local_player->pid);
|
||||
}
|
||||
|
||||
int NetPlayClient::NumLocalWiimotes() const
|
||||
{
|
||||
return CountLocalPads(m_wiimote_map, m_local_player->pid);
|
||||
}
|
||||
|
||||
static int InGameToLocal(int ingame_pad, const PadMappingArray& pad_map, PlayerId local_player_pid)
|
||||
@ -2653,6 +2664,14 @@ PadDetails GetPadDetails(int pad_num)
|
||||
return res;
|
||||
}
|
||||
|
||||
int NumLocalWiimotes()
|
||||
{
|
||||
std::lock_guard lk(crit_netplay_client);
|
||||
if (netplay_client)
|
||||
return netplay_client->NumLocalWiimotes();
|
||||
return 0;
|
||||
}
|
||||
|
||||
void NetPlay_Enable(NetPlayClient* const np)
|
||||
{
|
||||
std::lock_guard lk(crit_netplay_client);
|
||||
|
@ -151,6 +151,7 @@ public:
|
||||
|
||||
bool IsFirstInGamePad(int ingame_pad) const;
|
||||
int NumLocalPads() const;
|
||||
int NumLocalWiimotes() const;
|
||||
|
||||
int InGamePadToLocalPad(int ingame_pad) const;
|
||||
int LocalPadToInGamePad(int local_pad) const;
|
||||
|
@ -256,4 +256,5 @@ void SetSIPollBatching(bool state);
|
||||
void SendPowerButtonEvent();
|
||||
std::string GetGBASavePath(int pad_num);
|
||||
PadDetails GetPadDetails(int pad_num);
|
||||
int NumLocalWiimotes();
|
||||
} // namespace NetPlay
|
||||
|
@ -287,7 +287,8 @@ void WiimoteControllersWidget::LoadSettings(Core::State state)
|
||||
const bool running_gc = running && !SConfig::GetInstance().bWii;
|
||||
const bool enable_passthrough = m_wiimote_passthrough->isChecked() && !running_gc;
|
||||
const bool enable_emu_bt = !m_wiimote_passthrough->isChecked() && !running_gc;
|
||||
const bool running_netplay = running && NetPlay::IsNetPlayRunning();
|
||||
const bool is_netplay = NetPlay::IsNetPlayRunning();
|
||||
const bool running_netplay = running && is_netplay;
|
||||
|
||||
m_wiimote_sync->setEnabled(enable_passthrough);
|
||||
m_wiimote_reset->setEnabled(enable_passthrough);
|
||||
@ -295,13 +296,15 @@ void WiimoteControllersWidget::LoadSettings(Core::State state)
|
||||
for (auto* pt_label : m_wiimote_pt_labels)
|
||||
pt_label->setEnabled(enable_passthrough);
|
||||
|
||||
const int num_local_wiimotes = is_netplay ? NetPlay::NumLocalWiimotes() : 4;
|
||||
for (size_t i = 0; i < m_wiimote_groups.size(); i++)
|
||||
{
|
||||
m_wiimote_labels[i]->setEnabled(enable_emu_bt);
|
||||
m_wiimote_boxes[i]->setEnabled(enable_emu_bt && !running_netplay);
|
||||
|
||||
const bool is_emu_wiimote = m_wiimote_boxes[i]->currentIndex() == 1;
|
||||
m_wiimote_buttons[i]->setEnabled(enable_emu_bt && is_emu_wiimote);
|
||||
m_wiimote_buttons[i]->setEnabled(enable_emu_bt && is_emu_wiimote &&
|
||||
static_cast<int>(i) < num_local_wiimotes);
|
||||
}
|
||||
|
||||
m_wiimote_real_balance_board->setEnabled(enable_emu_bt && !running_netplay);
|
||||
|
Loading…
Reference in New Issue
Block a user