using System;
using AlicizaX.Timer.Runtime;
using Cysharp.Threading.Tasks;
using UnityEngine;
namespace AlicizaX.UI.Runtime
{
///
/// UI 模块接口:负责 UI 的创建、显示、关闭与查询。
/// 支持异步与同步(预加载)两种打开方式。
///
public interface IUIModule : IModule, IModuleUpdate
{
///
/// 初始化 UI 模块。
///
/// UI 根节点(通常为 Canvas 根)
/// 摄像机是否正交模式
void Initialize(Transform root, bool isOrthographic);
///
/// UI 摄像机
///
Camera UICamera { get; set; }
///
/// UI 根节点
///
Transform UICanvasRoot { get; set; }
// ───────────────────────────────────────────────
// Show 系列:异步为主,同步为辅
// ───────────────────────────────────────────────
///
/// 异步显示 UI(推荐方式)
///
UniTask ShowUI(params object[] userDatas) where T : UIBase;
///
/// 异步显示 UI(使用字符串类型名)
///
UniTask? ShowUI(string type, params object[] userDatas);
///
/// 同步显示 UI(仅限资源已预加载时使用,避免死锁)
///
T ShowUISync(params object[] userDatas) where T : UIBase;
// ───────────────────────────────────────────────
// Close / Get 系列
// ───────────────────────────────────────────────
///
/// 关闭指定类型 UI。
///
void CloseUI(bool force = false) where T : UIBase;
///
/// 关闭指定类型 UI。
///
void CloseUI(RuntimeTypeHandle handle, bool force = false);
///
/// 获取当前已打开的指定类型 UI。
///
T GetUI() where T : UIBase;
// ───────────────────────────────────────────────
// 内部注入
// ───────────────────────────────────────────────
///
/// 由框架内部注入计时模块。
///
protected internal void SetTimerManager(ITimerModule timerModule);
}
}