using UnityEngine;
namespace BaseGames.UI
{
///
/// 面板栈管理接口。所有需要操作 UI 面板的组件应依赖此接口而非直接引用
/// ,从而保持可测试性和解耦合。
///
public interface IUIManager
{
/// 通过枚举 ID 打开已注册面板。
void OpenPanel(PanelId id);
/// 打开指定 GameObject 面板并压栈;已在栈中则忽略(O(1) 判断)。
void OpenPanel(GameObject panel);
/// 关闭栈顶面板并恢复上一层;上一层若实现 则自动恢复焦点。
void CloseTopPanel();
/// 运行时注册或覆盖面板绑定(如场景加载后动态添加的面板)。
void RegisterPanel(PanelId id, GameObject root);
}
}