namespace GFramework.Godot.system;
///
/// 输入映射类,管理所有的输入动作及其绑定
///
public class InputMap
{
private readonly Dictionary _actions = new();
///
/// 添加输入动作
///
/// 输入动作
public void AddAction(InputAction action)
{
_actions[action.Name] = action;
}
///
/// 移除输入动作
///
/// 动作名称
public void RemoveAction(string actionName)
{
_actions.Remove(actionName);
}
///
/// 获取输入动作
///
/// 动作名称
/// 输入动作,如果不存在则返回null
public InputAction GetAction(string actionName)
{
return _actions.GetValueOrDefault(actionName);
}
///
/// 获取所有输入动作
///
/// 输入动作列表
public IEnumerable GetAllActions()
{
return _actions.Values;
}
///
/// 检查是否存在指定名称的动作
///
/// 动作名称
/// 存在返回true,否则返回false
public bool ContainsAction(string actionName)
{
return _actions.ContainsKey(actionName);
}
///
/// 根据按键查找绑定的动作
///
/// 按键码
/// 绑定到该按键的所有动作
public IEnumerable FindActionsByBinding(string keyCode)
{
return _actions.Values.Where(action =>
action.CurrentBindings.Contains(keyCode));
}
}