summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/ControllerEmu/ControlGroup
diff options
context:
space:
mode:
authorScott Mansell <phiren@gmail.com>2021-05-14 20:51:33 +1200
committerGitHub <noreply@github.com>2021-05-14 20:51:33 +1200
commit9f91fb64479d3df14489378a6b4fb3ffa7d12f2d (patch)
tree702ec73b3745420750d05644c639f357492e57a1 /Source/Core/InputCommon/ControllerEmu/ControlGroup
parent099bf16326c1549246fd1bd976fb1242e7ba0875 (diff)
parentf3ffac00583bd03d0620226392a2b15f3cfd273b (diff)
Merge pull request #9688 from Filoppi/input_cleanup
Input cleanup
Diffstat (limited to 'Source/Core/InputCommon/ControllerEmu/ControlGroup')
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.cpp4
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.h4
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/Attachments.h7
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/Buttons.h2
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/ControlGroup.cpp2
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp2
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.h3
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp4
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.h4
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUGyroscope.cpp2
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/ModifySettingsButton.cpp30
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/ModifySettingsButton.h12
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/Slider.cpp2
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/Slider.h2
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/Tilt.cpp4
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/Tilt.h4
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/Triggers.cpp2
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/Triggers.h2
18 files changed, 49 insertions, 43 deletions
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.cpp b/Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.cpp
index 881be39471..36733c9f7e 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.cpp
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.cpp
@@ -32,7 +32,7 @@ AnalogStick::AnalogStick(const char* const name_, const char* const ui_name_,
AddInput(Translate, _trans("Modifier"));
}
-AnalogStick::ReshapeData AnalogStick::GetReshapableState(bool adjusted)
+AnalogStick::ReshapeData AnalogStick::GetReshapableState(bool adjusted) const
{
const ControlState y = controls[0]->GetState() - controls[1]->GetState();
const ControlState x = controls[3]->GetState() - controls[2]->GetState();
@@ -46,7 +46,7 @@ AnalogStick::ReshapeData AnalogStick::GetReshapableState(bool adjusted)
return Reshape(x, y, modifier);
}
-AnalogStick::StateData AnalogStick::GetState()
+AnalogStick::StateData AnalogStick::GetState() const
{
return GetReshapableState(true);
}
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.h b/Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.h
index ac0266f7c1..a5ea05a211 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.h
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.h
@@ -18,10 +18,10 @@ public:
AnalogStick(const char* name, std::unique_ptr<StickGate>&& stick_gate);
AnalogStick(const char* name, const char* ui_name, std::unique_ptr<StickGate>&& stick_gate);
- ReshapeData GetReshapableState(bool adjusted) final override;
+ ReshapeData GetReshapableState(bool adjusted) const final override;
ControlState GetGateRadiusAtAngle(double ang) const override;
- StateData GetState();
+ StateData GetState() const;
private:
std::unique_ptr<StickGate> m_stick_gate;
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Attachments.h b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Attachments.h
index f92bd8b1fd..77d44df093 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Attachments.h
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Attachments.h
@@ -10,6 +10,7 @@
#include <vector>
#include "Common/CommonTypes.h"
+#include "Core/HW/WiimoteEmu/ExtensionPort.h"
#include "InputCommon/ControllerEmu/ControlGroup/ControlGroup.h"
#include "InputCommon/ControllerEmu/ControllerEmu.h"
#include "InputCommon/ControllerEmu/Setting/NumericSetting.h"
@@ -34,7 +35,11 @@ public:
private:
SettingValue<int> m_selection_value;
- NumericSetting<int> m_selection_setting = {&m_selection_value, {""}, 0, 0, 0};
+ // This is here and not added to the list of numeric_settings because it's serialized differently,
+ // by string (to be independent from the enum), and visualized differently in the UI.
+ // For the rest, it's treated similarly to other numeric_settings in the group.
+ NumericSetting<int> m_selection_setting = {
+ &m_selection_value, {""}, 0, 0, WiimoteEmu::ExtensionNumber::MAX - 1};
std::vector<std::unique_ptr<EmulatedController>> m_attachments;
};
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Buttons.h b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Buttons.h
index b10677a615..707c93fa81 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Buttons.h
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Buttons.h
@@ -20,7 +20,7 @@ public:
Buttons(const std::string& ini_name, const std::string& group_name);
template <typename C>
- void GetState(C* const buttons, const C* bitmasks)
+ void GetState(C* const buttons, const C* bitmasks) const
{
for (auto& control : controls)
*buttons |= *(bitmasks++) * control->GetState<bool>();
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/ControlGroup.cpp b/Source/Core/InputCommon/ControllerEmu/ControlGroup/ControlGroup.cpp
index 2862445392..22f2973d32 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/ControlGroup.cpp
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/ControlGroup.cpp
@@ -44,7 +44,7 @@ void ControlGroup::AddDeadzoneSetting(SettingValue<double>* value, double maximu
// i18n: The percent symbol.
_trans("%"),
// i18n: Refers to the dead-zone setting of gamepad inputs.
- _trans("Input strength to ignore.")},
+ _trans("Input strength to ignore and remap.")},
0, 0, maximum_deadzone);
}
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp
index fa379624db..4dbb5a11ed 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp
@@ -64,7 +64,7 @@ Cursor::Cursor(std::string name_, std::string ui_name_)
AddSetting(&m_autohide_setting, {_trans("Auto-Hide")}, false);
}
-Cursor::ReshapeData Cursor::GetReshapableState(bool adjusted)
+Cursor::ReshapeData Cursor::GetReshapableState(bool adjusted) const
{
const ControlState y = controls[0]->GetState() - controls[1]->GetState();
const ControlState x = controls[3]->GetState() - controls[2]->GetState();
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.h b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.h
index 562313bb45..a6b38fb4bb 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.h
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.h
@@ -25,9 +25,10 @@ public:
Cursor(std::string name, std::string ui_name);
- ReshapeData GetReshapableState(bool adjusted) final override;
+ ReshapeData GetReshapableState(bool adjusted) const final override;
ControlState GetGateRadiusAtAngle(double ang) const override;
+ // Modifies the state
StateData GetState(bool adjusted);
// Yaw movement in radians.
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp
index af9246c54d..457b36205b 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp
@@ -65,7 +65,7 @@ Force::Force(const std::string& name_) : ReshapableInput(name_, name_, GroupType
90, 1, 180);
}
-Force::ReshapeData Force::GetReshapableState(bool adjusted)
+Force::ReshapeData Force::GetReshapableState(bool adjusted) const
{
const ControlState y = controls[0]->GetState() - controls[1]->GetState();
const ControlState x = controls[3]->GetState() - controls[2]->GetState();
@@ -77,7 +77,7 @@ Force::ReshapeData Force::GetReshapableState(bool adjusted)
return Reshape(x, y);
}
-Force::StateData Force::GetState(bool adjusted)
+Force::StateData Force::GetState(bool adjusted) const
{
const auto state = GetReshapableState(adjusted);
ControlState z = controls[4]->GetState() - controls[5]->GetState();
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.h b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.h
index ae9cabe340..983f668d78 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.h
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.h
@@ -19,12 +19,12 @@ public:
explicit Force(const std::string& name);
- ReshapeData GetReshapableState(bool adjusted) final override;
+ ReshapeData GetReshapableState(bool adjusted) const final override;
ControlState GetGateRadiusAtAngle(double ang) const final override;
ControlState GetDefaultInputRadiusAtAngle(double angle) const final override;
- StateData GetState(bool adjusted = true);
+ StateData GetState(bool adjusted = true) const;
// Velocities returned in m/s.
ControlState GetSpeed() const;
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUGyroscope.cpp b/Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUGyroscope.cpp
index b5408cfe34..95c74b1896 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUGyroscope.cpp
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUGyroscope.cpp
@@ -40,7 +40,7 @@ IMUGyroscope::IMUGyroscope(std::string name_, std::string ui_name_)
// i18n: "°/s" is the symbol for degrees (angular measurement) divided by seconds.
_trans("°/s"),
// i18n: Refers to the dead-zone setting of gyroscope input.
- _trans("Angular velocity to ignore.")},
+ _trans("Angular velocity to ignore and remap.")},
2, 0, 180);
AddSetting(&m_calibration_period_setting,
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/ModifySettingsButton.cpp b/Source/Core/InputCommon/ControllerEmu/ControlGroup/ModifySettingsButton.cpp
index 6dc200d1e1..1cf2b5a579 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/ModifySettingsButton.cpp
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/ModifySettingsButton.cpp
@@ -26,52 +26,52 @@ ModifySettingsButton::ModifySettingsButton(std::string button_name)
void ModifySettingsButton::AddInput(std::string button_name, bool toggle)
{
ControlGroup::AddInput(Translate, std::move(button_name));
- threshold_exceeded.emplace_back(false);
- associated_settings.emplace_back(false);
- associated_settings_toggle.emplace_back(toggle);
+ m_threshold_exceeded.emplace_back(false);
+ m_associated_settings.emplace_back(false);
+ m_associated_settings_toggle.emplace_back(toggle);
}
-void ModifySettingsButton::GetState()
+void ModifySettingsButton::UpdateState()
{
for (size_t i = 0; i < controls.size(); ++i)
{
const bool state = controls[i]->GetState<bool>();
- if (!associated_settings_toggle[i])
+ if (!m_associated_settings_toggle[i])
{
// not toggled
- associated_settings[i] = state;
+ m_associated_settings[i] = state;
}
else
{
// toggle (loading savestates does not en-/disable toggle)
// after we passed the threshold, we en-/disable. but after that, we don't change it
// anymore
- if (!threshold_exceeded[i] && state)
+ if (!m_threshold_exceeded[i] && state)
{
- associated_settings[i] = !associated_settings[i];
+ m_associated_settings[i] = !m_associated_settings[i];
- if (associated_settings[i])
+ if (m_associated_settings[i])
OSD::AddMessage(controls[i]->ui_name + ": on");
else
OSD::AddMessage(controls[i]->ui_name + ": off");
- threshold_exceeded[i] = true;
+ m_threshold_exceeded[i] = true;
}
if (!state)
- threshold_exceeded[i] = false;
+ m_threshold_exceeded[i] = false;
}
}
}
-const std::vector<bool>& ModifySettingsButton::isSettingToggled() const
+const std::vector<bool>& ModifySettingsButton::IsSettingToggled() const
{
- return associated_settings_toggle;
+ return m_associated_settings_toggle;
}
-const std::vector<bool>& ModifySettingsButton::getSettingsModifier() const
+const std::vector<bool>& ModifySettingsButton::GetSettingsModifier() const
{
- return associated_settings;
+ return m_associated_settings;
}
} // namespace ControllerEmu
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/ModifySettingsButton.h b/Source/Core/InputCommon/ControllerEmu/ControlGroup/ModifySettingsButton.h
index 667f3e5c7a..b060aa0caa 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/ModifySettingsButton.h
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/ModifySettingsButton.h
@@ -18,14 +18,14 @@ public:
void AddInput(std::string button_name, bool toggle = false);
- void GetState();
+ void UpdateState();
- const std::vector<bool>& isSettingToggled() const;
- const std::vector<bool>& getSettingsModifier() const;
+ const std::vector<bool>& IsSettingToggled() const;
+ const std::vector<bool>& GetSettingsModifier() const;
private:
- std::vector<bool> threshold_exceeded; // internal calculation (if "state" was above threshold)
- std::vector<bool> associated_settings_toggle; // is setting toggled or hold?
- std::vector<bool> associated_settings; // result
+ std::vector<bool> m_threshold_exceeded; // internal calculation (if "state" was above threshold)
+ std::vector<bool> m_associated_settings_toggle; // is setting toggled or hold?
+ std::vector<bool> m_associated_settings; // result
};
} // namespace ControllerEmu
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Slider.cpp b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Slider.cpp
index bd70c64b53..d8aeea4eee 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Slider.cpp
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Slider.cpp
@@ -29,7 +29,7 @@ Slider::Slider(const std::string& name_) : Slider(name_, name_)
{
}
-Slider::StateData Slider::GetState()
+Slider::StateData Slider::GetState() const
{
const ControlState deadzone = m_deadzone_setting.GetValue() / 100;
const ControlState state = controls[1]->GetState() - controls[0]->GetState();
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Slider.h b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Slider.h
index de969f59b5..930241d7fe 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Slider.h
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Slider.h
@@ -23,7 +23,7 @@ public:
Slider(const std::string& name_, const std::string& ui_name_);
explicit Slider(const std::string& name_);
- StateData GetState();
+ StateData GetState() const;
private:
SettingValue<double> m_deadzone_setting;
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Tilt.cpp b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Tilt.cpp
index 69739bc330..053d0bf429 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Tilt.cpp
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Tilt.cpp
@@ -42,7 +42,7 @@ Tilt::Tilt(const std::string& name_) : ReshapableInput(name_, name_, GroupType::
7, 1, 50);
}
-Tilt::ReshapeData Tilt::GetReshapableState(bool adjusted)
+Tilt::ReshapeData Tilt::GetReshapableState(bool adjusted) const
{
const ControlState y = controls[0]->GetState() - controls[1]->GetState();
const ControlState x = controls[3]->GetState() - controls[2]->GetState();
@@ -56,7 +56,7 @@ Tilt::ReshapeData Tilt::GetReshapableState(bool adjusted)
return Reshape(x, y, modifier);
}
-Tilt::StateData Tilt::GetState()
+Tilt::StateData Tilt::GetState() const
{
return GetReshapableState(true);
}
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Tilt.h b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Tilt.h
index dc4c2364de..cb50c5eb73 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Tilt.h
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Tilt.h
@@ -19,14 +19,14 @@ public:
explicit Tilt(const std::string& name);
- ReshapeData GetReshapableState(bool adjusted) final override;
+ ReshapeData GetReshapableState(bool adjusted) const final override;
ControlState GetGateRadiusAtAngle(double angle) const final override;
// Tilt is using the gate radius to adjust the tilt angle so we must provide an unadjusted value
// for the default input radius.
ControlState GetDefaultInputRadiusAtAngle(double angle) const final override;
- StateData GetState();
+ StateData GetState() const;
// Return peak rotational velocity (for a complete turn) in radians/sec
ControlState GetMaxRotationalVelocity() const;
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Triggers.cpp b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Triggers.cpp
index bdfec69808..7aaac42b72 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Triggers.cpp
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Triggers.cpp
@@ -21,7 +21,7 @@ Triggers::Triggers(const std::string& name_) : ControlGroup(name_, GroupType::Tr
AddDeadzoneSetting(&m_deadzone_setting, 50);
}
-Triggers::StateData Triggers::GetState()
+Triggers::StateData Triggers::GetState() const
{
const size_t trigger_count = controls.size();
const ControlState deadzone = m_deadzone_setting.GetValue() / 100;
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Triggers.h b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Triggers.h
index 8b72d6738b..5d75ff09bc 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Triggers.h
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Triggers.h
@@ -26,7 +26,7 @@ public:
explicit Triggers(const std::string& name);
- StateData GetState();
+ StateData GetState() const;
private:
SettingValue<double> m_deadzone_setting;