using GFramework.Game.Abstractions.ui; using GFramework.Godot.extensions; using Godot; namespace GFramework.Godot.ui; /// /// 控制 UI 页面行为的泛型行为类, /// 支持所有继承自 CanvasItem 的节点 /// /// CanvasItem 类型的视图节点 public class CanvasItemPageBehavior(T owner) : IPageBehavior where T : CanvasItem { private readonly IUiPage? _page = owner as IUiPage; /// /// 页面视图对象 /// public object View => owner; /// /// 获取页面是否存活状态 /// public bool IsAlive => owner.IsValidNode(); /// /// 页面进入时调用 /// /// 页面进入参数 public void OnEnter(IUiPageEnterParam? param) { _page?.OnEnter(param); } /// /// 页面退出时调用 /// public void OnExit() { _page?.OnExit(); owner.QueueFreeX(); } /// /// 页面暂停时调用 /// public void OnPause() { _page?.OnPause(); // 暂停节点的处理、物理处理和输入处理 owner.SetProcess(false); owner.SetPhysicsProcess(false); owner.SetProcessInput(false); } /// /// 页面恢复时调用 /// public void OnResume() { _page?.OnResume(); // 恢复节点的处理、物理处理和输入处理 owner.SetProcess(true); owner.SetPhysicsProcess(true); owner.SetProcessInput(true); } /// /// 页面隐藏时调用 /// public void OnHide() { _page?.OnHide(); owner.Hide(); } /// /// 页面显示时调用 /// public void OnShow() { _page?.OnShow(); owner.Show(); OnResume(); } }