// 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 语义动作的默认映射实现。
///
///
/// 默认映射只负责桥接现有 `UiInputAction` 语义,并通过字符串别名兼容 Godot 常见 `ui_*` 动作命名。
/// 更复杂的项目级 action map 可以通过自定义实现覆盖该行为。
///
public sealed class UiInputActionMap : IUiInputActionMap
{
private static readonly IReadOnlyDictionary DefaultMappings =
new Dictionary(StringComparer.OrdinalIgnoreCase)
{
["cancel"] = UiInputAction.Cancel,
["ui_cancel"] = UiInputAction.Cancel,
["confirm"] = UiInputAction.Confirm,
["ui_accept"] = UiInputAction.Confirm,
["submit"] = UiInputAction.Confirm
};
///
public bool TryMap(string actionName, out UiInputAction action)
{
if (string.IsNullOrWhiteSpace(actionName))
{
action = UiInputAction.None;
return false;
}
return DefaultMappings.TryGetValue(actionName, out action);
}
}