|
|
@ -229,6 +229,13 @@ QtControllerSelectorDialog::QtControllerSelectorDialog( |
|
|
connect(ui->buttonBox, &QDialogButtonBox::accepted, this, |
|
|
connect(ui->buttonBox, &QDialogButtonBox::accepted, this, |
|
|
&QtControllerSelectorDialog::ApplyConfiguration); |
|
|
&QtControllerSelectorDialog::ApplyConfiguration); |
|
|
|
|
|
|
|
|
|
|
|
// Enhancement: Check if the parameters have already been met before disconnecting controllers.
|
|
|
|
|
|
// If all the parameters are met AND only allows a single player,
|
|
|
|
|
|
// stop the constructor here as we do not need to continue.
|
|
|
|
|
|
if (CheckIfParametersMet() && parameters.enable_single_mode) { |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
// If keep_controllers_connected is false, forcefully disconnect all controllers
|
|
|
// If keep_controllers_connected is false, forcefully disconnect all controllers
|
|
|
if (!parameters.keep_controllers_connected) { |
|
|
if (!parameters.keep_controllers_connected) { |
|
|
for (auto player : player_groupboxes) { |
|
|
for (auto player : player_groupboxes) { |
|
|
@ -236,13 +243,18 @@ QtControllerSelectorDialog::QtControllerSelectorDialog( |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
CheckIfParametersMet(); |
|
|
|
|
|
|
|
|
|
|
|
resize(0, 0); |
|
|
resize(0, 0); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
QtControllerSelectorDialog::~QtControllerSelectorDialog() = default; |
|
|
QtControllerSelectorDialog::~QtControllerSelectorDialog() = default; |
|
|
|
|
|
|
|
|
|
|
|
int QtControllerSelectorDialog::exec() { |
|
|
|
|
|
if (parameters_met && parameters.enable_single_mode) { |
|
|
|
|
|
return QDialog::Accepted; |
|
|
|
|
|
} |
|
|
|
|
|
return QDialog::exec(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
void QtControllerSelectorDialog::ApplyConfiguration() { |
|
|
void QtControllerSelectorDialog::ApplyConfiguration() { |
|
|
// Update the controller state once more, just to be sure they are properly applied.
|
|
|
// Update the controller state once more, just to be sure they are properly applied.
|
|
|
for (std::size_t index = 0; index < NUM_PLAYERS; ++index) { |
|
|
for (std::size_t index = 0; index < NUM_PLAYERS; ++index) { |
|
|
@ -287,7 +299,7 @@ void QtControllerSelectorDialog::CallConfigureInputDialog() { |
|
|
CheckIfParametersMet(); |
|
|
CheckIfParametersMet(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void QtControllerSelectorDialog::CheckIfParametersMet() { |
|
|
|
|
|
|
|
|
bool QtControllerSelectorDialog::CheckIfParametersMet() { |
|
|
// Here, we check and validate the current configuration against all applicable parameters.
|
|
|
// Here, we check and validate the current configuration against all applicable parameters.
|
|
|
const auto num_connected_players = static_cast<int>( |
|
|
const auto num_connected_players = static_cast<int>( |
|
|
std::count_if(player_groupboxes.begin(), player_groupboxes.end(), |
|
|
std::count_if(player_groupboxes.begin(), player_groupboxes.end(), |
|
|
@ -301,7 +313,7 @@ void QtControllerSelectorDialog::CheckIfParametersMet() { |
|
|
num_connected_players > max_supported_players) { |
|
|
num_connected_players > max_supported_players) { |
|
|
parameters_met = false; |
|
|
parameters_met = false; |
|
|
ui->buttonBox->setEnabled(parameters_met); |
|
|
ui->buttonBox->setEnabled(parameters_met); |
|
|
return; |
|
|
|
|
|
|
|
|
return parameters_met; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// Next, check against all connected controllers.
|
|
|
// Next, check against all connected controllers.
|
|
|
@ -326,14 +338,9 @@ void QtControllerSelectorDialog::CheckIfParametersMet() { |
|
|
return true; |
|
|
return true; |
|
|
}(); |
|
|
}(); |
|
|
|
|
|
|
|
|
if (!all_controllers_compatible) { |
|
|
|
|
|
parameters_met = false; |
|
|
|
|
|
ui->buttonBox->setEnabled(parameters_met); |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
parameters_met = true; |
|
|
|
|
|
|
|
|
parameters_met = all_controllers_compatible; |
|
|
ui->buttonBox->setEnabled(parameters_met); |
|
|
ui->buttonBox->setEnabled(parameters_met); |
|
|
|
|
|
return parameters_met; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void QtControllerSelectorDialog::SetSupportedControllers() { |
|
|
void QtControllerSelectorDialog::SetSupportedControllers() { |
|
|
|