GwWuYou 2baa29aed6 feat(godot): 添加Godot游戏开发相关组件和系统
- 新增架构层支持,包括AbstractArchitecture和ArchitectureAnchorNode
- 实现拖拽功能组件AbstractDragDrop2DComponentBase和AbstractDragDropArea2DComponent
- 添加节点扩展方法类NodeExtensions,提供多种实用的节点操作方法
- 新增资源目录系统AbstractAssetCatalogSystem用于管理游戏资源
- 实现音频管理系统AbstractAudioManagerSystem支持背景音乐和音效播放
- 添加取消注册扩展方法UnRegisterExtension
- 创建GFramework.Game项目模块
- 重构项目结构,聚合核心模块并优化依赖引用
- [no tag]
2025-12-19 22:36:42 +08:00

67 lines
1.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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