using GFramework.Game.Abstractions.Enums; using GFramework.Game.Abstractions.UI; namespace GFramework.Game.UI; /// /// 为 提供运行时默认值与语义判定。 /// /// /// 该 helper 保留在运行时程序集内,避免把默认策略和输入判定逻辑放回 Abstractions。 /// UI 页面和路由器都应通过这里共享同一套默认语义,避免层级默认值漂移。 /// public static class UiInteractionProfiles { /// /// 获取不捕获动作、也不阻断 World 输入的默认配置。 /// public static UiInteractionProfile Default { get; } = new(); /// /// 获取会捕获取消动作并阻断 World 输入的阻塞型默认配置。 /// public static UiInteractionProfile BlockingCancel { get; } = new() { CapturedActions = UiInputActionMask.Cancel, BlocksWorldPointerInput = true, BlocksWorldActionInput = true }; /// /// 为指定层级生成默认交互配置。 /// /// UI 层级。 /// 该层级的默认交互语义。 public static UiInteractionProfile CreateDefault(UiLayer layer) { return layer switch { UiLayer.Modal or UiLayer.Topmost => BlockingCancel, _ => Default }; } /// /// 判断指定配置是否捕获了目标 UI 语义动作。 /// /// 目标配置。 /// 要查询的动作。 /// 如果配置声明捕获了该动作则返回 public static bool Captures(UiInteractionProfile profile, UiInputAction action) { return action switch { UiInputAction.Cancel => (profile.CapturedActions & UiInputActionMask.Cancel) != UiInputActionMask.None, UiInputAction.Confirm => (profile.CapturedActions & UiInputActionMask.Confirm) != UiInputActionMask.None, _ => false }; } }