Re-allow PadInputType.AnalogStick with reversed ranges
N64 standard controller in virtual pad no longer crashes
This commit is contained in:
parent
3a8b3361e3
commit
9b1eaca7be
|
@ -39,6 +39,8 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
public float[] RangeX = new float[] { -128f, 0.0f, 127f };
|
public float[] RangeX = new float[] { -128f, 0.0f, 127f };
|
||||||
public float[] RangeY = new float[] { -128f, 0.0f, 127f };
|
public float[] RangeY = new float[] { -128f, 0.0f, 127f };
|
||||||
|
private bool ReverseX;
|
||||||
|
private bool ReverseY;
|
||||||
|
|
||||||
public string SecondaryName { get; set; }
|
public string SecondaryName { get; set; }
|
||||||
|
|
||||||
|
@ -50,7 +52,17 @@ namespace BizHawk.Client.EmuHawk
|
||||||
AnalogStick.YName = !string.IsNullOrEmpty(SecondaryName)
|
AnalogStick.YName = !string.IsNullOrEmpty(SecondaryName)
|
||||||
? SecondaryName
|
? SecondaryName
|
||||||
: Name.Replace("X", "Y"); // Fallback
|
: Name.Replace("X", "Y"); // Fallback
|
||||||
|
if (RangeX[0] > RangeX[2])
|
||||||
|
{
|
||||||
|
RangeX = new[] { RangeX[2], RangeX[1], RangeX[0] };
|
||||||
|
ReverseX = true;
|
||||||
|
}
|
||||||
AnalogStick.SetRangeX(RangeX);
|
AnalogStick.SetRangeX(RangeX);
|
||||||
|
if (RangeY[0] > RangeY[2])
|
||||||
|
{
|
||||||
|
RangeY = new[] { RangeY[2], RangeY[1], RangeY[0] };
|
||||||
|
ReverseY = true;
|
||||||
|
}
|
||||||
AnalogStick.SetRangeY(RangeY);
|
AnalogStick.SetRangeY(RangeY);
|
||||||
|
|
||||||
ManualX.Minimum = (decimal)RangeX[0];
|
ManualX.Minimum = (decimal)RangeX[0];
|
||||||
|
@ -264,7 +276,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
private void SetAnalogMaxFromNumerics()
|
private void SetAnalogMaxFromNumerics()
|
||||||
{
|
{
|
||||||
if (!_programmaticallyUpdatingNumerics)
|
if (!_programmaticallyUpdatingNumerics)
|
||||||
AnalogStick.SetUserRange((sbyte)MaxXNumeric.Value, (sbyte)MaxYNumeric.Value);
|
AnalogStick.SetUserRange(ReverseX ? -MaxXNumeric.Value : MaxXNumeric.Value, ReverseY ? -MaxYNumeric.Value : MaxYNumeric.Value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,10 +51,10 @@ namespace BizHawk.Client.EmuHawk
|
||||||
private sbyte UserRangePercentageX = 100;
|
private sbyte UserRangePercentageX = 100;
|
||||||
private sbyte UserRangePercentageY = 100;
|
private sbyte UserRangePercentageY = 100;
|
||||||
|
|
||||||
public void SetUserRange(sbyte rx, sbyte ry)
|
public void SetUserRange(decimal rx, decimal ry)
|
||||||
{
|
{
|
||||||
UserRangePercentageX = rx;
|
UserRangePercentageX = (sbyte) rx;
|
||||||
UserRangePercentageY = ry;
|
UserRangePercentageY = (sbyte) ry;
|
||||||
Rerange();
|
Rerange();
|
||||||
Refresh();
|
Refresh();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue