using System; using System.Collections.Generic; using BizHawk.Common; using BizHawk.Emulation.Common; namespace BizHawk.Client.Common { /// /// A basic implementation of IController /// public class SimpleController : IController { public ControllerDefinition Definition { get; set; } protected WorkingDictionary Buttons = new WorkingDictionary(); protected WorkingDictionary Floats = new WorkingDictionary(); public virtual void Clear() { Buttons = new WorkingDictionary(); Floats = new WorkingDictionary(); } public virtual bool this[string button] { get { return Buttons[button]; } set { Buttons[button] = value; } } public virtual bool IsPressed(string button) { return this[button]; } public float GetFloat(string name) { return Floats[name]; } public IEnumerable> BoolButtons() { return Buttons; } public virtual void LatchFrom(IController source) { foreach (var button in source.Definition.BoolButtons) { Buttons[button] = source.IsPressed(button); } } public void AcceptNewFloats(IEnumerable> newValues) { foreach (var sv in newValues) { Floats[sv.Item1] = sv.Item2; } } } }