forked from ShuriZma/suyu
1
0
Fork 0

core/hid: Explain better what a temporary value does

This commit is contained in:
german77 2021-10-30 12:12:52 -05:00 committed by Narr the Reg
parent d8e3f2b10b
commit 5f69fdbfcc
2 changed files with 28 additions and 24 deletions

View File

@ -88,8 +88,9 @@ void EmulatedController::ReloadFromSettings() {
ReloadInput(); ReloadInput();
} }
void EmulatedController::LoadDevices() { void EmulatedController::LoadDevices() {
const auto left_joycon = button_params[Settings::NativeButton::ZL]; // TODO(german77): Use more buttons to detect the correct device
const auto right_joycon = button_params[Settings::NativeButton::ZR]; const auto left_joycon = button_params[Settings::NativeButton::A];
const auto right_joycon = button_params[Settings::NativeButton::DRight];
// Triggers for GC controllers // Triggers for GC controllers
trigger_params[LeftIndex] = button_params[Settings::NativeButton::ZL]; trigger_params[LeftIndex] = button_params[Settings::NativeButton::ZL];
@ -142,6 +143,7 @@ void EmulatedController::LoadTASParams() {
param = common_params; param = common_params;
} }
// TODO(german77): Replace this with an input profile or something better
tas_button_params[Settings::NativeButton::A].Set("button", 1 << 0); tas_button_params[Settings::NativeButton::A].Set("button", 1 << 0);
tas_button_params[Settings::NativeButton::B].Set("button", 1 << 1); tas_button_params[Settings::NativeButton::B].Set("button", 1 << 1);
tas_button_params[Settings::NativeButton::X].Set("button", 1 << 2); tas_button_params[Settings::NativeButton::X].Set("button", 1 << 2);
@ -271,24 +273,24 @@ void EmulatedController::UnloadInput() {
void EmulatedController::EnableConfiguration() { void EmulatedController::EnableConfiguration() {
is_configuring = true; is_configuring = true;
temporary_is_connected = is_connected; tmp_is_connected = is_connected;
temporary_npad_type = npad_type; tmp_npad_type = npad_type;
} }
void EmulatedController::DisableConfiguration() { void EmulatedController::DisableConfiguration() {
is_configuring = false; is_configuring = false;
// Apply temporary npad type to the real controller // Apply temporary npad type to the real controller
if (temporary_npad_type != npad_type) { if (tmp_npad_type != npad_type) {
if (is_connected) { if (is_connected) {
Disconnect(); Disconnect();
} }
SetNpadType(temporary_npad_type); SetNpadType(tmp_npad_type);
} }
// Apply temporary connected status to the real controller // Apply temporary connected status to the real controller
if (temporary_is_connected != is_connected) { if (tmp_is_connected != is_connected) {
if (temporary_is_connected) { if (tmp_is_connected) {
Connect(); Connect();
return; return;
} }
@ -791,7 +793,7 @@ void EmulatedController::Connect() {
{ {
std::lock_guard lock{mutex}; std::lock_guard lock{mutex};
if (is_configuring) { if (is_configuring) {
temporary_is_connected = true; tmp_is_connected = true;
TriggerOnChange(ControllerTriggerType::Connected, false); TriggerOnChange(ControllerTriggerType::Connected, false);
return; return;
} }
@ -808,7 +810,7 @@ void EmulatedController::Disconnect() {
{ {
std::lock_guard lock{mutex}; std::lock_guard lock{mutex};
if (is_configuring) { if (is_configuring) {
temporary_is_connected = false; tmp_is_connected = false;
TriggerOnChange(ControllerTriggerType::Disconnected, false); TriggerOnChange(ControllerTriggerType::Disconnected, false);
return; return;
} }
@ -821,9 +823,9 @@ void EmulatedController::Disconnect() {
TriggerOnChange(ControllerTriggerType::Disconnected, true); TriggerOnChange(ControllerTriggerType::Disconnected, true);
} }
bool EmulatedController::IsConnected(bool temporary) const { bool EmulatedController::IsConnected(bool get_temporary_value) const {
if (temporary) { if (get_temporary_value) {
return temporary_is_connected; return tmp_is_connected;
} }
return is_connected; return is_connected;
} }
@ -838,9 +840,9 @@ NpadIdType EmulatedController::GetNpadIdType() const {
return npad_id_type; return npad_id_type;
} }
NpadType EmulatedController::GetNpadType(bool temporary) const { NpadType EmulatedController::GetNpadType(bool get_temporary_value) const {
if (temporary) { if (get_temporary_value) {
return temporary_npad_type; return tmp_npad_type;
} }
return npad_type; return npad_type;
} }
@ -850,10 +852,10 @@ void EmulatedController::SetNpadType(NpadType npad_type_) {
std::lock_guard lock{mutex}; std::lock_guard lock{mutex};
if (is_configuring) { if (is_configuring) {
if (temporary_npad_type == npad_type_) { if (tmp_npad_type == npad_type_) {
return; return;
} }
temporary_npad_type = npad_type_; tmp_npad_type = npad_type_;
TriggerOnChange(ControllerTriggerType::Type, false); TriggerOnChange(ControllerTriggerType::Type, false);
return; return;
} }

View File

@ -149,10 +149,10 @@ public:
/** /**
* Gets the NpadType for this controller * Gets the NpadType for this controller
* @param Returns the temporary value if true * @param If true tmp_npad_type will be returned
* @return NpadType set on the controller * @return NpadType set on the controller
*/ */
NpadType GetNpadType(bool temporary = false) const; NpadType GetNpadType(bool get_temporary_value = false) const;
/// Sets the connected status to true /// Sets the connected status to true
void Connect(); void Connect();
@ -162,10 +162,10 @@ public:
/** /**
* Is the emulated connected * Is the emulated connected
* @param Returns the temporary value if true * @param If true tmp_is_connected will be returned
* @return true if the controller has the connected status * @return true if the controller has the connected status
*/ */
bool IsConnected(bool temporary = false) const; bool IsConnected(bool get_temporary_value = false) const;
/// Returns true if vibration is enabled /// Returns true if vibration is enabled
bool IsVibrationEnabled() const; bool IsVibrationEnabled() const;
@ -346,12 +346,14 @@ private:
NpadIdType npad_id_type; NpadIdType npad_id_type;
NpadType npad_type{NpadType::None}; NpadType npad_type{NpadType::None};
NpadType temporary_npad_type{NpadType::None};
bool is_connected{false}; bool is_connected{false};
bool temporary_is_connected{false};
bool is_configuring{false}; bool is_configuring{false};
f32 motion_sensitivity{0.01f}; f32 motion_sensitivity{0.01f};
// Temporary values to avoid doing changes while the controller is on configuration mode
NpadType tmp_npad_type{NpadType::None};
bool tmp_is_connected{false};
ButtonParams button_params; ButtonParams button_params;
StickParams stick_params; StickParams stick_params;
ControllerMotionParams motion_params; ControllerMotionParams motion_params;