GeWuYou 2e7fd1fc87 feat(ui): 添加UI路由基类和相关接口定义
- 实现UiRouterBase基类,提供页面栈管理和层级UI管理功能
- 定义IUiPageBehavior接口,规范UI页面生命周期方法和状态管理
- 定义IUiRouter接口,统一UI界面导航和切换操作规范
- 实现页面栈操作功能,包括Push、Pop、Replace、Clear等方法
- 实现层级UI管理功能,支持Overlay、Modal、Toast等浮层显示
- 集成UI过渡管道,支持UI切换动画和逻辑处理
- 添加暂停令牌管理,实现页面可见性驱动的暂停控制
- 实现UI动作捕获和分发机制,支持语义动作处理
2026-04-17 22:00:33 +08:00

112 lines
3.2 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.

using GFramework.Game.Abstractions.Enums;
using GFramework.Game.Abstractions.Routing;
namespace GFramework.Game.Abstractions.UI;
/// <summary>
/// UI页面行为接口定义了UI页面的生命周期方法和状态管理
/// </summary>
public interface IUiPageBehavior : IRoute
{
/// <summary>
/// 获取或设置当前UI句柄。
/// </summary>
/// <value>
/// 表示当前UI句柄的可空类型 <see cref="UiHandle"/>。
/// </value>
/// <remarks>
/// 此属性允许获取或设置与当前上下文关联的UI句柄。若未设置则其值为 null。不可重入的ui句柄通常为null
/// </remarks>
UiHandle? Handle { get; set; }
/// <summary>
/// 获取当前UI层的实例。
/// </summary>
/// <value>
/// 返回与当前上下文关联的 <see cref="UiLayer"/> 实例。
/// </value>
/// <remarks>
/// 此属性用于访问与当前上下文关联的UI层对象通常用于管理UI的层次结构和交互逻辑。
/// </remarks>
UiLayer Layer { get; }
/// <summary>
/// 获取一个布尔值,指示当前操作是否为重入操作。
/// </summary>
/// <remarks>
/// 重入操作通常指在同一个执行上下文中多次调用相同的方法或逻辑。
/// 此属性可用于检测并避免重复执行可能导致异常或不一致状态的操作。
/// </remarks>
bool IsReentrant { get; }
/// <summary>
/// 获取页面视图对象。
/// </summary>
/// <returns>页面视图实例。</returns>
object View { get; }
/// <summary>
/// 获取页面是否处于活动状态
/// </summary>
bool IsAlive { get; }
/// <summary>
/// 获取页面是否可见
/// </summary>
bool IsVisible { get; }
/// <summary>
/// 获取页面是否为模态页面
/// </summary>
bool IsModal { get; }
/// <summary>
/// 获取页面是否阻断下层交互
/// </summary>
bool BlocksInput { get; }
/// <summary>
/// 获取页面当前的输入、阻断与暂停交互配置。
/// </summary>
UiInteractionProfile InteractionProfile { get; }
/// <summary>
/// 页面进入时调用的方法
/// </summary>
/// <param name="param">页面进入时传递的参数,可为空</param>
void OnEnter(IUiPageEnterParam? param);
/// <summary>
/// 页面退出时调用的方法
/// </summary>
void OnExit();
/// <summary>
/// 页面暂停时调用的方法
/// </summary>
void OnPause();
/// <summary>
/// 页面恢复时调用的方法
/// </summary>
void OnResume();
/// <summary>
/// 页面被覆盖时调用(不销毁)
/// </summary>
void OnHide();
/// <summary>
/// 页面重新显示时调用的方法
/// </summary>
void OnShow();
/// <summary>
/// 尝试处理一个经过路由器仲裁后的 UI 语义动作。
/// </summary>
/// <param name="action">当前动作。</param>
/// <returns>如果页面已经显式处理该动作则返回 <see langword="true" />。</returns>
bool TryHandleUiAction(UiInputAction action);
}