Virtual Notch settings and UI for octagonal stick

This commit is contained in:
Nick Michael
2020-10-29 22:11:34 +00:00
parent ab8a128588
commit 55dd3d7337
7 changed files with 108 additions and 2 deletions

View File

@ -65,6 +65,12 @@ OctagonAnalogStick::OctagonAnalogStick(const char* name_, const char* ui_name_,
ControlState gate_radius)
: AnalogStick(name_, ui_name_, std::make_unique<ControllerEmu::OctagonStickGate>(gate_radius))
{
AddVirtualNotchSetting(&m_virtual_notch_setting, 45);
}
ControlState OctagonAnalogStick::GetVirtualNotchSize() const
{
return m_virtual_notch_setting.GetValue() * MathUtil::TAU / 360;
}
} // namespace ControllerEmu

View File

@ -33,6 +33,11 @@ class OctagonAnalogStick : public AnalogStick
public:
OctagonAnalogStick(const char* name, ControlState gate_radius);
OctagonAnalogStick(const char* name, const char* ui_name, ControlState gate_radius);
ControlState GetVirtualNotchSize() const override;
private:
SettingValue<double> m_virtual_notch_setting;
};
} // namespace ControllerEmu

View File

@ -28,6 +28,17 @@ ControlGroup::ControlGroup(std::string name_, std::string ui_name_, const GroupT
{
}
void ControlGroup::AddVirtualNotchSetting(SettingValue<double>* value, double max_virtual_notch_deg)
{
AddSetting(value,
{_trans("Virtual Notches"),
// i18n: The degrees symbol.
_trans("°"),
// i18n: Snap the thumbstick position to the nearest octagonal axis.
_trans("Snap the thumbstick position to the nearest octagonal axis.")},
0, 0, max_virtual_notch_deg);
}
void ControlGroup::AddDeadzoneSetting(SettingValue<double>* value, double maximum_deadzone)
{
AddSetting(value,

View File

@ -82,6 +82,8 @@ public:
std::make_unique<NumericSetting<T>>(value, details, default_value_, min_value, max_value));
}
void AddVirtualNotchSetting(SettingValue<double>* value, double max_virtual_notch_deg);
void AddDeadzoneSetting(SettingValue<double>* value, double maximum_deadzone);
template <typename T>