GFramework/GFramework.Game.Abstractions/ui/IUiTransitionHandler.cs
GeWuYou 8fd7e2e952 feat(ui): 添加UI页面生命周期和路由管理相关接口及实现
- 定义了IPageBehavior接口,提供UI页面的生命周期方法如OnEnter、OnExit、OnPause、OnResume等
- 创建了IUiFactory接口用于创建UI页面实例,以及IUiPage接口定义页面基本操作
- 添加了IUiPageEnterParam接口用于定义页面跳转参数数据结构
- 实现了IUiRouter接口提供页面栈管理功能,支持Push、Pop、Replace、Clear等操作
- 创建了UI切换处理器相关接口和实现,包括IUiTransitionHandler和UiTransitionPipeline
- 添加了UI切换事件系统,支持BeforeChange和AfterChange两个执行阶段
- 实现了日志记录处理器LoggingTransitionHandler用于记录UI切换信息
- 定义了多种UI切换策略枚举如UiTransitionPolicy、UiTransitionType等
- 提供了UI注册表接口用于管理UI实例的注册和获取功能
2026-01-15 08:44:56 +08:00

39 lines
1.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 System.Threading;
using System.Threading.Tasks;
using GFramework.Game.Abstractions.enums;
namespace GFramework.Game.Abstractions.ui;
/// <summary>
/// UI切换处理器接口定义UI切换扩展点的处理逻辑
/// </summary>
public interface IUiTransitionHandler
{
/// <summary>
/// 处理器优先级,数值越小越先执行
/// </summary>
int Priority { get; }
/// <summary>
/// 处理器适用的阶段,默认为所有阶段
/// 可以使用Flags枚举指定多个阶段
/// </summary>
UITransitionPhases Phases { get; }
/// <summary>
/// 判断是否应该处理当前事件
/// 可以根据事件类型、UI key等信息进行条件过滤
/// </summary>
/// <param name="event">UI切换事件</param>
/// <param name="phases">当前阶段</param>
/// <returns>是否处理</returns>
bool ShouldHandle(UiTransitionEvent @event, UITransitionPhases phases);
/// <summary>
/// 处理UI切换事件
/// </summary>
/// <param name="event">UI切换事件</param>
/// <param name="cancellationToken">取消令牌</param>
/// <returns>异步任务</returns>
Task HandleAsync(UiTransitionEvent @event, CancellationToken cancellationToken);
}