diff --git a/src/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/components/AnalogStickPanel.cs b/src/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/components/AnalogStickPanel.cs index 949ed4d211..a21ce7d810 100644 --- a/src/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/components/AnalogStickPanel.cs +++ b/src/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/components/AnalogStickPanel.cs @@ -63,10 +63,17 @@ namespace BizHawk.Client.EmuHawk public void Init(StickyXorAdapter stickyXorAdapter, string nameX, AxisSpec rangeX, string nameY, AxisSpec rangeY) { _stickyXorAdapter = stickyXorAdapter; + + var scaleBase = Math.Min(Size.Width, Size.Height) - 10.0; // be circular when control is stretched + Name = XName = nameX; _fullRangeX = rangeX; + ScaleX = scaleBase / rangeX.Range.Count(); + YName = nameY; _fullRangeY = rangeY; + ScaleY = scaleBase / rangeY.Range.Count(); + Rerange(); } @@ -93,12 +100,9 @@ namespace BizHawk.Client.EmuHawk SetAnalog(); } - /// - /// never tested, assuming it works --zeromus - /// - private const float ScaleX = 0.60f; - /// - private const float ScaleY = 0.60f; + private double ScaleX = 0.6; + + private double ScaleY = 0.6; /// /// min + (max - i) == max - (i - min) == min + max - i @@ -140,7 +144,6 @@ namespace BizHawk.Client.EmuHawk public AnalogStickPanel() { - Size = new Size(PixelSizeX + 1, PixelSizeY + 1); SetStyle(ControlStyles.AllPaintingInWmPaint, true); SetStyle(ControlStyles.UserPaint, true); SetStyle(ControlStyles.OptimizedDoubleBuffer, true); diff --git a/src/BizHawk.Common/Extensions/NumberExtensions.cs b/src/BizHawk.Common/Extensions/NumberExtensions.cs index de6eb56362..6d86c46aac 100644 --- a/src/BizHawk.Common/Extensions/NumberExtensions.cs +++ b/src/BizHawk.Common/Extensions/NumberExtensions.cs @@ -122,7 +122,9 @@ namespace BizHawk.Common.NumberExtensions return val; } - + + public static int RoundToInt(this double d) => (int) Math.Round(d); + public static int RoundToInt(this float f) => (int) Math.Round(f); /// 2^-53