Re-allow PadInputType.AnalogStick with reversed ranges

N64 standard controller in virtual pad no longer crashes
This commit is contained in:
YoshiRulz 2019-06-11 05:11:24 +10:00
parent 3a8b3361e3
commit 9b1eaca7be
No known key found for this signature in database
GPG Key ID: C4DE31C245353FB7
2 changed files with 16 additions and 4 deletions

View File

@ -39,6 +39,8 @@ namespace BizHawk.Client.EmuHawk
public float[] RangeX = 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; }
@ -50,7 +52,17 @@ namespace BizHawk.Client.EmuHawk
AnalogStick.YName = !string.IsNullOrEmpty(SecondaryName)
? SecondaryName
: Name.Replace("X", "Y"); // Fallback
if (RangeX[0] > RangeX[2])
{
RangeX = new[] { RangeX[2], RangeX[1], RangeX[0] };
ReverseX = true;
}
AnalogStick.SetRangeX(RangeX);
if (RangeY[0] > RangeY[2])
{
RangeY = new[] { RangeY[2], RangeY[1], RangeY[0] };
ReverseY = true;
}
AnalogStick.SetRangeY(RangeY);
ManualX.Minimum = (decimal)RangeX[0];
@ -264,7 +276,7 @@ namespace BizHawk.Client.EmuHawk
private void SetAnalogMaxFromNumerics()
{
if (!_programmaticallyUpdatingNumerics)
AnalogStick.SetUserRange((sbyte)MaxXNumeric.Value, (sbyte)MaxYNumeric.Value);
AnalogStick.SetUserRange(ReverseX ? -MaxXNumeric.Value : MaxXNumeric.Value, ReverseY ? -MaxYNumeric.Value : MaxYNumeric.Value);
}
}
}

View File

@ -51,10 +51,10 @@ namespace BizHawk.Client.EmuHawk
private sbyte UserRangePercentageX = 100;
private sbyte UserRangePercentageY = 100;
public void SetUserRange(sbyte rx, sbyte ry)
public void SetUserRange(decimal rx, decimal ry)
{
UserRangePercentageX = rx;
UserRangePercentageY = ry;
UserRangePercentageX = (sbyte) rx;
UserRangePercentageY = (sbyte) ry;
Rerange();
Refresh();
}