using GFramework.Core.Abstractions.system; using GFramework.Game.Abstractions.enums; namespace GFramework.Game.Abstractions.ui; /// /// UI路由管理器接口,用于管理UI界面的导航和切换操作 /// public interface IUiRouter : ISystem { /// /// 获取当前UI栈深度 /// int Count { get; } /// /// 绑定UI根节点 /// /// UI根节点接口实例 void BindRoot(IUiRoot root); /// /// 将指定的UI界面压入路由栈,显示新的UI界面 /// /// UI界面的唯一标识符 /// 进入界面的参数,可为空 /// 界面切换策略,默认为Exclusive(独占) void Push(string uiKey, IUiPageEnterParam? param = null, UiTransitionPolicy policy = UiTransitionPolicy.Exclusive); /// /// 将已存在的UI页面压入路由栈 /// 用于预挂载节点或调试场景 /// /// 已创建的UI页面行为实例 /// 进入界面的参数,可为空 /// 界面切换策略,默认为Exclusive(独占) void Push(IUiPageBehavior page, IUiPageEnterParam? param = null, UiTransitionPolicy policy = UiTransitionPolicy.Exclusive); /// /// 弹出路由栈顶的UI界面,返回到上一个界面 /// /// 界面弹出策略,默认为Destroy(销毁) void Pop(UiPopPolicy policy = UiPopPolicy.Destroy); /// /// 替换当前UI界面为指定的新界面 /// /// 新UI界面的唯一标识符 /// 进入界面的参数,可为空 /// 界面弹出策略,默认为销毁当前界面 /// 界面过渡策略,默认为独占模式 void Replace( string uiKey, IUiPageEnterParam? param = null, UiPopPolicy popPolicy = UiPopPolicy.Destroy, UiTransitionPolicy pushPolicy = UiTransitionPolicy.Exclusive ); /// /// 清空所有UI界面,重置路由状态 /// void Clear(); /// /// 注册UI切换处理器 /// /// 处理器实例 /// 执行选项 void RegisterHandler(IUiTransitionHandler handler, UiTransitionHandlerOptions? options = null); /// /// 注销UI切换处理器 /// /// 处理器实例 void UnregisterHandler(IUiTransitionHandler handler); /// /// 获取当前栈顶UI的Key /// /// 当前UI Key,如果栈为空返回空字符串 string PeekKey(); /// /// 获取当前栈顶的UI页面行为对象 /// /// 栈顶的IUiPageBehavior对象,如果栈为空则返回null IUiPageBehavior Peek(); /// /// 判断指定UI是否为当前栈顶UI /// bool IsTop(string uiKey); /// /// 判断指定UI是否存在于UI栈中 /// bool Contains(string uiKey); }