mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-05-11 20:38:58 +08:00
- 修复 InputBindingStore 只读查询会污染导出快照的问题 - 修复 Godot 输入绑定导入时未清理残留动作绑定的问题 - 补充输入运行时与 Godot backend 的 XML 契约说明和 README 入口 - 更新 ai-plan 跟踪并补充针对 PR #346 的回归测试
41 lines
1.4 KiB
C#
41 lines
1.4 KiB
C#
// Copyright (c) 2025-2026 GeWuYou
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
using GFramework.Game.Abstractions.Input;
|
|
using GFramework.Game.Abstractions.UI;
|
|
|
|
namespace GFramework.Game.Input;
|
|
|
|
/// <summary>
|
|
/// 提供逻辑动作到 UI 路由语义分发的默认桥接。
|
|
/// </summary>
|
|
public sealed class UiInputDispatcher : IUiInputDispatcher
|
|
{
|
|
private readonly IUiInputActionMap _actionMap;
|
|
private readonly IUiRouter _router;
|
|
|
|
/// <summary>
|
|
/// 初始化 UI 输入分发器。
|
|
/// </summary>
|
|
/// <param name="actionMap">动作映射表。</param>
|
|
/// <param name="router">目标 UI 路由器。</param>
|
|
/// <exception cref="ArgumentNullException">当 <paramref name="actionMap" /> 为 <see langword="null" /> 时抛出。</exception>
|
|
/// <exception cref="ArgumentNullException">当 <paramref name="router" /> 为 <see langword="null" /> 时抛出。</exception>
|
|
public UiInputDispatcher(IUiInputActionMap actionMap, IUiRouter router)
|
|
{
|
|
_actionMap = actionMap ?? throw new ArgumentNullException(nameof(actionMap));
|
|
_router = router ?? throw new ArgumentNullException(nameof(router));
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
public bool TryDispatch(string actionName)
|
|
{
|
|
if (!_actionMap.TryMap(actionName, out var action))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return _router.TryDispatchUiAction(action);
|
|
}
|
|
}
|