ControllerInterface: Rename full surface analog inputs to be more visually dissimilar from their underlying inputs. e.g. "Full Axis X+".
This commit is contained in:
parent
241166a1a5
commit
be897b41a7
|
@ -55,7 +55,7 @@ Device::Input* Device::FindInput(const std::string& name) const
|
||||||
{
|
{
|
||||||
for (Input* input : m_inputs)
|
for (Input* input : m_inputs)
|
||||||
{
|
{
|
||||||
if (input->GetName() == name)
|
if (input->IsMatchingName(name))
|
||||||
return input;
|
return input;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,18 +66,42 @@ Device::Output* Device::FindOutput(const std::string& name) const
|
||||||
{
|
{
|
||||||
for (Output* output : m_outputs)
|
for (Output* output : m_outputs)
|
||||||
{
|
{
|
||||||
if (output->GetName() == name)
|
if (output->IsMatchingName(name))
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Device::Control::IsMatchingName(const std::string& name) const
|
||||||
|
{
|
||||||
|
return GetName() == name;
|
||||||
|
}
|
||||||
|
|
||||||
ControlState Device::FullAnalogSurface::GetState() const
|
ControlState Device::FullAnalogSurface::GetState() const
|
||||||
{
|
{
|
||||||
return (1 + std::max(0.0, m_high.GetState()) - std::max(0.0, m_low.GetState())) / 2;
|
return (1 + std::max(0.0, m_high.GetState()) - std::max(0.0, m_low.GetState())) / 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string Device::FullAnalogSurface::GetName() const
|
||||||
|
{
|
||||||
|
// E.g. "Full Axis X+"
|
||||||
|
return "Full " + m_high.GetName();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Device::FullAnalogSurface::IsMatchingName(const std::string& name) const
|
||||||
|
{
|
||||||
|
if (Control::IsMatchingName(name))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
// Old naming scheme was "Axis X-+" which is too visually similar to "Axis X+".
|
||||||
|
// This has caused countless problems for users with mysterious misconfigurations.
|
||||||
|
// We match this old name to support old configurations.
|
||||||
|
const auto old_name = m_low.GetName() + *m_high.GetName().rbegin();
|
||||||
|
|
||||||
|
return old_name == name;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// DeviceQualifier :: ToString
|
// DeviceQualifier :: ToString
|
||||||
//
|
//
|
||||||
|
|
|
@ -46,6 +46,10 @@ public:
|
||||||
virtual ~Control() {}
|
virtual ~Control() {}
|
||||||
virtual Input* ToInput() { return nullptr; }
|
virtual Input* ToInput() { return nullptr; }
|
||||||
virtual Output* ToOutput() { return nullptr; }
|
virtual Output* ToOutput() { return nullptr; }
|
||||||
|
|
||||||
|
// May be overridden to allow multiple valid names.
|
||||||
|
// Useful for backwards-compatible configurations when names change.
|
||||||
|
virtual bool IsMatchingName(const std::string& name) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -114,12 +118,13 @@ protected:
|
||||||
void AddInput(Input* const i);
|
void AddInput(Input* const i);
|
||||||
void AddOutput(Output* const o);
|
void AddOutput(Output* const o);
|
||||||
|
|
||||||
class FullAnalogSurface : public Input
|
class FullAnalogSurface final : public Input
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
FullAnalogSurface(Input* low, Input* high) : m_low(*low), m_high(*high) {}
|
FullAnalogSurface(Input* low, Input* high) : m_low(*low), m_high(*high) {}
|
||||||
ControlState GetState() const override;
|
ControlState GetState() const override;
|
||||||
std::string GetName() const override { return m_low.GetName() + *m_high.GetName().rbegin(); }
|
std::string GetName() const override;
|
||||||
|
bool IsMatchingName(const std::string& name) const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Input& m_low;
|
Input& m_low;
|
||||||
|
|
Loading…
Reference in New Issue