controllers/npad: Connect a controller on init if none are connected

This commit is contained in:
Morph 2020-09-27 11:40:15 -04:00
parent 5cafa70d3b
commit c0c4ed0d3b
2 changed files with 15 additions and 1 deletions

View file

@ -224,6 +224,19 @@ void Controller_NPad::OnInit() {
player.connected};
});
// Connect the Player 1 or Handheld controller if none are connected.
if (std::none_of(connected_controllers.begin(), connected_controllers.end(),
[](const ControllerHolder& controller) { return controller.is_connected; })) {
const auto controller = MapSettingsTypeToNPad(Settings::values.players[0].controller_type);
if (controller == NPadControllerType::Handheld) {
Settings::values.players[HANDHELD_INDEX].connected = true;
connected_controllers[HANDHELD_INDEX] = {controller, true};
} else {
Settings::values.players[0].connected = true;
connected_controllers[0] = {controller, true};
}
}
// Account for handheld
if (connected_controllers[HANDHELD_INDEX].is_connected) {
connected_controllers[HANDHELD_INDEX].type = NPadControllerType::Handheld;

View file

@ -280,7 +280,8 @@ void Config::ReadPlayerValue(std::size_t player_index) {
}
} else {
player.connected =
ReadSetting(QStringLiteral("%1connected").arg(player_prefix), false).toBool();
ReadSetting(QStringLiteral("%1connected").arg(player_prefix), player_index == 0)
.toBool();
player.controller_type = static_cast<Settings::ControllerType>(
qt_config