Clean up callback spaghetti when resetting `VirtualPadAnalogStick`

This commit is contained in:
YoshiRulz 2022-05-07 17:04:52 +10:00
parent 41de03e31c
commit b7ffa811bf
No known key found for this signature in database
GPG Key ID: C4DE31C245353FB7
2 changed files with 4 additions and 7 deletions

View File

@ -129,15 +129,12 @@ namespace BizHawk.Client.EmuHawk
public void ClearCallback() public void ClearCallback()
{ {
ManualX.Value = 0; AnalogStick.Clear(fromCallback: true);
ManualY.Value = 0; SetNumericsFromAnalog();
manualR.Value = 0;
manualTheta.Value = 0;
_inputManager.AutofireStickyXorAdapter.SetSticky(AnalogStick.XName, false); _inputManager.AutofireStickyXorAdapter.SetSticky(AnalogStick.XName, false);
_inputManager.StickyXorAdapter.Unset(AnalogStick.XName); _inputManager.StickyXorAdapter.Unset(AnalogStick.XName);
_inputManager.AutofireStickyXorAdapter.SetSticky(AnalogStick.YName, false); _inputManager.AutofireStickyXorAdapter.SetSticky(AnalogStick.YName, false);
_inputManager.StickyXorAdapter.Unset(AnalogStick.YName); _inputManager.StickyXorAdapter.Unset(AnalogStick.YName);
AnalogStick.HasValue = false;
} }
public void Clear() => AnalogStick.Clear(); public void Clear() => AnalogStick.Clear();

View File

@ -257,12 +257,12 @@ namespace BizHawk.Client.EmuHawk
Refresh(); Refresh();
} }
public void Clear() public void Clear(bool fromCallback = false)
{ {
if (!HasValue && X == 0 && Y == 0) return; if (!HasValue && X == 0 && Y == 0) return;
X = Y = 0; X = Y = 0;
HasValue = false; HasValue = false;
ClearCallback?.Invoke(); if (!fromCallback) ClearCallback?.Invoke();
Refresh(); Refresh();
} }