// 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;
///
/// 提供逻辑动作到 UI 路由语义分发的默认桥接。
///
public sealed class UiInputDispatcher : IUiInputDispatcher
{
private readonly IUiInputActionMap _actionMap;
private readonly IUiRouter _router;
///
/// 初始化 UI 输入分发器。
///
/// 动作映射表。
/// 目标 UI 路由器。
/// 当 为 时抛出。
/// 当 为 时抛出。
public UiInputDispatcher(IUiInputActionMap actionMap, IUiRouter router)
{
_actionMap = actionMap ?? throw new ArgumentNullException(nameof(actionMap));
_router = router ?? throw new ArgumentNullException(nameof(router));
}
///
public bool TryDispatch(string actionName)
{
if (!_actionMap.TryMap(actionName, out var action))
{
return false;
}
return _router.TryDispatchUiAction(action);
}
}