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;
}
}
}
}