using System.Collections.Generic;
namespace AxibugEmuOnline.Client.InputDevices
{
public abstract class InputDevice_D
{
public string UniqueName => m_resolver.GetDeviceName(this);
/// 指示该设备是否在线
public bool Online => m_resolver.CheckOnline(this);
/// 指示该设备当前帧是否有任意控件被激发
public bool AnyKeyDown { get; private set; }
/// 获得输入解决器
internal InputResolver Resolver => m_resolver;
protected Dictionary m_controlMapper = new Dictionary();
protected InputResolver m_resolver;
public InputDevice_D(InputResolver resolver)
{
m_resolver = resolver;
foreach (var control in DefineControls())
{
m_controlMapper.Add(control.ControlName, control);
}
}
public void Update()
{
AnyKeyDown = false;
foreach (var control in m_controlMapper.Values)
{
control.Update();
if (control.Start)
{
AnyKeyDown = true;
}
}
}
/// 用于列出这个输入设备的所有输入控件实例
///
protected abstract List DefineControls();
/// 通过控件名称,找到对应的控件
///
///
public InputControl_D FindControlByName(string controlName)
{
m_controlMapper.TryGetValue(controlName, out var key);
return key;
}
}
}