Lua - joypad.setfrommnemonicstr() - support the notion of pressing the analog stick for 1 frame, rather than sticky behavior

This commit is contained in:
adelikat 2014-05-21 03:25:41 +00:00
parent af9c462826
commit 6f296a5773
3 changed files with 36 additions and 1 deletions

View File

@ -163,6 +163,11 @@ namespace BizHawk.Client.Common
_buttons[button] = controller[button]; _buttons[button] = controller[button];
} }
foreach (var button in controller.FloatOverrides)
{
_floatButtons[button] = controller.GetFloat(button);
}
foreach (var button in controller.InversedButtons) foreach (var button in controller.InversedButtons)
{ {
_buttons[button] ^= true; _buttons[button] ^= true;

View File

@ -82,7 +82,7 @@ namespace BizHawk.Client.Common
foreach (var floatButton in m.Type.FloatControls) foreach (var floatButton in m.Type.FloatControls)
{ {
Global.StickyXORAdapter.SetFloat(floatButton, m.GetFloat(floatButton)); Global.LuaAndAdaptor.SetFloat(floatButton, m.GetFloat(floatButton));
} }
} }

View File

@ -665,6 +665,7 @@ namespace BizHawk.Client.Common
public class OverrideAdaptor : IController public class OverrideAdaptor : IController
{ {
private readonly Dictionary<string, bool> _overrides = new Dictionary<string, bool>(); private readonly Dictionary<string, bool> _overrides = new Dictionary<string, bool>();
private readonly Dictionary<string, float> _floatOverrides = new Dictionary<string, float>();
private readonly List<string> _inverses = new List<string>(); private readonly List<string> _inverses = new List<string>();
public bool this[string button] public bool this[string button]
@ -705,6 +706,17 @@ namespace BizHawk.Client.Common
} }
} }
public IEnumerable<string> FloatOverrides
{
get
{
foreach (var kvp in _floatOverrides)
{
yield return kvp.Key;
}
}
}
public IEnumerable<string> InversedButtons public IEnumerable<string> InversedButtons
{ {
get get
@ -716,8 +728,25 @@ namespace BizHawk.Client.Common
} }
} }
public void SetFloat(string name, float value)
{
if (_floatOverrides.ContainsKey(name))
{
_floatOverrides[name] = value;
}
else
{
_floatOverrides.Add(name, value);
}
}
public float GetFloat(string name) public float GetFloat(string name)
{ {
if (_floatOverrides.ContainsKey(name))
{
return _floatOverrides[name];
}
return 0.0F; return 0.0F;
} }
@ -743,6 +772,7 @@ namespace BizHawk.Client.Common
public void FrameTick() public void FrameTick()
{ {
_overrides.Clear(); _overrides.Clear();
_floatOverrides.Clear();
_inverses.Clear(); _inverses.Clear();
} }
} }