early-access version 2721

This commit is contained in:
pineappleEA
2022-05-07 08:59:40 +02:00
parent e30bfacdf1
commit 226e4633b9
6 changed files with 164 additions and 139 deletions

View File

@@ -631,14 +631,11 @@ void EmulatedController::SetButton(const Common::Input::CallbackStatus& callback
lock.unlock();
// Reconnect controller if input is detected
if (!is_connected) {
if (npad_id_type == NpadIdType::Player1 && npad_type != NpadStyleIndex::Handheld) {
Connect();
}
if (npad_id_type == NpadIdType::Handheld && npad_type == NpadStyleIndex::Handheld) {
Connect();
}
TryReconnectController(index);
}
TriggerOnChange(ControllerTriggerType::Button, true);
}
@@ -990,6 +987,33 @@ bool EmulatedController::IsControllerSupported(bool use_temporary_value) const {
return false;
}
}
void EmulatedController::TryReconnectController(std::size_t button_index) {
if (button_index >= button_params.size()) {
return;
}
const auto engine = button_params[button_index].Get("engine", "");
bool reconnect_controller = false;
// TAS is not allowed to turn on controllers
if (engine == "tas") {
return;
}
// Only connect the controller if button config is custom
if (engine != "keyboard") {
reconnect_controller = true;
}
if (npad_id_type == NpadIdType::Player1 && npad_type != NpadStyleIndex::Handheld) {
reconnect_controller = true;
}
if (npad_id_type == NpadIdType::Handheld && npad_type == NpadStyleIndex::Handheld) {
reconnect_controller = true;
}
if (reconnect_controller) {
Connect();
}
}
void EmulatedController::Connect(bool use_temporary_value) {
if (!IsControllerSupported(use_temporary_value)) {

View File

@@ -166,6 +166,12 @@ public:
*/
void SetSupportedNpadStyleTag(NpadStyleTag supported_styles);
/**
* Tries to turn on the controller if a button is pressed
* @param button_index index to verify if controller should be connected
*/
void TryReconnectController(std::size_t button_index);
/**
* Sets the connected status to true
* @param use_temporary_value If true tmp_npad_type will be used