using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
namespace TyphoonUI
{
///
/// UI管理器
///
public static class UIManger
{
///
/// 实现类
///
private static UIManagerImpl Impl => UIManagerImpl.Instance;
///
/// UICamera
///
public static UICamera UICamera => Impl.UICamera;
///
/// EventSystem
///
public static EventSystem EventSystem => Impl.EventSystem;
///
/// 画布
///
public static Dictionary Canvases => Impl.Canvases;
///
/// 层级面板集合
///
public static Dictionary> LayerPanels => Impl.LayerPanels;
///
/// UI面板
///
public static Dictionary Panels => Impl.Panels;
///
/// UI绑定器
///
public static AbstractBinding Binding => Impl.Binding;
///
/// UI 资源包
///
public static Dictionary UIPackages => Impl.UIPackages;
///
/// 是否有实例
///
public static bool HasInstance() => UIManagerImpl.HasInstance();
///
/// 初始化
///
public static void Initialize() => Impl.Initialize();
///
/// 获取层级画布
///
/// 层级
public static UICanvas GetCanvas(CanvasLayer layer) => Impl.GetCanvas(layer);
///
/// 获取资源预制物
///
/// ui包
/// 资源名
public static GameObject GetSourcePrefab(string package, string sourceName) =>
Impl.GetSourcePrefab(package, sourceName);
///
/// 实例面板
///
/// 面板类
public static T CreatePanel() where T : UIPanel => Impl.CreatePanel();
///
/// 实例化组件
///
/// 组件类
public static T CreateComponent() where T : UIComponent => Impl.CreateComponent();
///
/// 实例化组件
///
/// 父节点
/// 组件类型
///
public static T CreateComponent(Transform parent) where T : UIComponent => Impl.CreateComponent(parent);
///
/// 构建UI组件
///
/// UiObject 视图节点
///
///
public static T CreateComponent(GameObject viewObjectRoot) where T : UIComponent =>
UIManagerImpl.CreateComponent(viewObjectRoot);
///
/// 打开面板,如果未实例化会自动创建,注意UIPackage资源先注入
///
/// 传递的数据
/// 面板类型
public static void OpenPanel(object data = null) where T : UIPanel => Impl.OpenPanel(data);
///
/// 关闭面板
///
/// 传递的数据
/// 面板类型
public static void ClosePanel(object data = null) where T : UIPanel => Impl.ClosePanel(data);
///
/// 关闭所有面板
///
/// 忽略的层级
/// 忽略的面板
public static void CloseAll(CanvasLayer[] ignoreLayers = null, string[] panels = null) =>
Impl.CloseAll(ignoreLayers, panels);
///
/// 销毁面板
///
/// 面板类
/// 销毁成功返回true,失败或不存在可销毁实例返回false
public static bool DestroyPanel() where T : UIPanel => Impl.DestroyPanel();
///
/// 销毁面板
///
/// 面板类名(FullName)
/// 销毁成功返回true,失败或不存在可销毁实例返回false
public static bool DestroyPanel(string panelScript) => Impl.DestroyPanel(panelScript);
///
/// 获取面板
///
///
public static T GetPanel() where T : UIPanel => Impl.GetPanel();
///
/// 获取面板
///
/// 面吧类名(FullName)
///
public static UIPanel GetPanel(string panelScript) => Impl.GetPanel(panelScript);
///
/// 是否存在面板
///
/// 面板类型
public static bool HasPanel() where T : UIPanel => Impl.HasPanel();
///
/// 是否存在面板
///
/// 面板类名(FullName)
///
public static bool HasPanel(string panelScript) => Impl.HasPanel(panelScript);
///
/// 获取层级画布下的面板
///
/// 画布层级
public static List GetCanvasPanels(CanvasLayer layer) => Impl.GetCanvasPanels(layer);
///
/// 注入资源包
///
/// ui资源包
public static void LoadPackage(UIPackage package) => Impl.LoadPackage(package);
///
/// 卸载资源
///
/// ui资源包
public static void UnloadPackage(string packageName) => Impl.UnloadPackage(packageName);
///
/// 获取资源包
///
/// ui资源包
public static UIPackage GetPackage(string packageName) => Impl.GetPackage(packageName);
///
/// 层级画布面板排序(按binding item优先级)
///
public static void SortCanvasPanelsInHierarchy(CanvasLayer canvasLayer) =>
Impl.SortCanvasPanelsInHierarchy(canvasLayer);
///
/// 通知语言发生变化
///
public static void NoticeLanguageChanged() => Impl.NoticeLanguageChanged();
}
}