/// <summary> 显示蒙版 </summary>
        public static void ShowWithLayer(Uri uri, int layerIndex = 0)
        {
            Application.Current.Dispatcher.Invoke(() =>
            {
                IWindowBase window = Application.Current.MainWindow as IWindowBase;

                window?.ShowWithLayer(uri);
            });
        }
        /// <summary> 关闭蒙版 </summary>
        public static void CloseWithLayer(int layerIndex = 0)
        {
            Application.Current.Dispatcher.Invoke(() =>
            {
                IWindowBase window = Application.Current.MainWindow as IWindowBase;

                window?.CloseWithLayer();
            });
        }
        /// <summary> 输出消息和操作按钮 </summary>
        public static void ShowSnackMessage(string message, object actionContent, Action actionHandler)
        {
            Application.Current.Dispatcher.Invoke(() =>
            {
                IWindowBase window = Application.Current.MainWindow as IWindowBase;

                if (window != null)
                {
                    window.AddSnackMessage(message, actionContent, actionHandler);
                }
            });
        }
        public static void ShowSnackMessageWithNotice(string message)
        {
            Application.Current.Dispatcher.Invoke(() =>
            {
                IWindowBase window = Application.Current.MainWindow as IWindowBase;

                if (window != null)
                {
                    window.AddSnackMessage($"友情提示:[" + DateTime.Now.ToString("HH:mm:ss]  " + message));
                }
            });
        }
        /// <summary> 显示气泡消息 </summary>
        public static void ShowNotifyMessage(string message, string title = null, NotifyBalloonIcon tipIcon = NotifyBalloonIcon.Info, int timeout = 1000)
        {
            Application.Current.Dispatcher.Invoke(() =>
            {
                IWindowBase window = Application.Current.MainWindow as IWindowBase;

                if (window != null)
                {
                    window.ShowNotifyMessage(title, message, tipIcon, timeout);
                }
            });
        }
        public static void ShowSnackMessage(string message)
        {
            Application.Current.Dispatcher.Invoke(() =>
            {
                IWindowBase window = Application.Current.MainWindow as IWindowBase;

                if (window != null)
                {
                    window.AddSnackMessage(message);
                }
            });
        }
Exemple #7
0
        /// <summary> 输出消息、按钮和参数 </summary>
        public static void ShowWindowNotifyMessage(MessageBase message)
        {
            Application.Current.Dispatcher.Invoke(() =>
            {
                IWindowBase window = Application.Current.MainWindow as IWindowBase;

                if (window != null)
                {
                    window.ShowWindowNotifyMessage(message);
                }
            });
        }
    private IWindowBase CreateWindow(UGUI_TYPE uiType)
    {
        UIData uicfg = GetUIDataByUIType(uiType);

        if (uicfg == null)
        {
            Debug.LogErrorFormat("ui type {0} cfg is empty", uiType.ToString());
            return(null);
        }

        GameObject windowObj;

        Debug.LogError("prefa name " + uicfg.PrefabName);
        var prefab = Resources.Load <GameObject>(uicfg.PrefabName); //根据项目具体调整

        windowObj = GameObject.Instantiate(prefab, transform);

        if (windowObj == null)
        {
            Debug.LogErrorFormat("ui type {0} prefab is null", uiType.ToString());
            return(null);
        }
        windowObj.transform.position = Vector3.zero;

        Type scriptType = Type.GetType(uicfg.ScriptName);

        if (scriptType == null || scriptType.GetInterface("IWindowBase") == null)
        {
            Debug.LogErrorFormat("ui type {0} not have IWindowBase attach", uiType.ToString());
            return(null);
        }

        var scaler = windowObj.GetComponent <CanvasScaler>();

        if (scaler != null)
        {
            scaler.uiScaleMode         = CanvasScaler.ScaleMode.ScaleWithScreenSize;
            scaler.screenMatchMode     = CanvasScaler.ScreenMatchMode.Expand; //屏幕的适应方式
            scaler.referenceResolution = new Vector2(1280, 720);
        }

        IWindowBase   uiwindow = windowObj.AddComponent(scriptType) as IWindowBase;
        UIControlData ctrlData = windowObj.GetComponent <UIControlData>();

        if (ctrlData != null)
        {
            ctrlData.BindDataTo(uiwindow);
        }

        windowObj.SetActive(false);
        m_loadedWindow.Add(uiType, uiwindow);
        return(uiwindow);
    }
Exemple #9
0
        public static void ShowSnackMessageWithNotice(string message)
        {
            Application.Current.Dispatcher.Invoke(() =>
            {
                IWindowBase window = Application.Current.MainWindow as IWindowBase;

                if (window != null)
                {
                    string info = $"{LanguageService.Instance.GetConfigByKey("Notice")}:[" + DateTime.Now.ToString("HH:mm:ss]  " + message);

                    window.AddSnackMessage(info);
                }
            });
        }
    public void ReleaseWindow(UGUI_TYPE uiType)
    {
        IWindowBase uiwindow = GetUI(uiType);

        if (uiwindow == null)
        {
            return;
        }
        if (uiwindow.Is3D())
        {
        }
        else
        {
            m_root2D.Release(uiwindow);
        }
        m_loadedWindow.Remove(uiType);
    }
Exemple #11
0
    public void Release(IWindowBase window)
    {
        if (window == null)
        {
            return;
        }
        UIBase2D uibase2D = window as UIBase2D;

        uibase2D.OnRelease();
        List <UIBase2D> listwindow = null;

        m_openMap.TryGetValue(uibase2D.Getlayer(), out listwindow);
        if (listwindow != null)
        {
            listwindow.Remove(uibase2D);
        }
        Destroy(uibase2D.gameObject);
    }
Exemple #12
0
    /// <summary>
    /// 对某个子UI重新排序
    /// </summary>
    /// <param name="window"></param>
    public void SortChildLayer(IWindowBase window)
    {
        UIBase2D uibase2D = window as UIBase2D;

        if (uibase2D == null)
        {
            return;
        }

        UGUI_LAYER      layer       = uibase2D.Getlayer();
        List <UIBase2D> listWindows = null;

        if (!m_openMap.TryGetValue(layer, out listWindows))
        {
            listWindows = new List <UIBase2D>();
            m_openMap.Add(layer, listWindows);
        }
        listWindows.Remove(uibase2D);
        listWindows.Add(uibase2D);
        SortLayer(layer, listWindows);
    }
    public void Close(UGUI_TYPE uiType, bool release = false)
    {
        IWindowBase uiwindow = GetUI(uiType);

        if (uiwindow == null)
        {
            return;
        }

        uiwindow.Close();
        if (release)
        {
            if (uiwindow.Is3D())
            {
            }
            else
            {
                m_root2D.Release(uiwindow);
            }
            m_loadedWindow.Remove(uiType);
        }

        if (!uiwindow.Is3D())
        {
            if (!CheckMenuLayerVisiable()) //如果没有全屏 的系统了,就打开mainUI
            {
                SetMainUIActive(true);
            }
        }

        if (m_ParentUI.Count > 0)
        {
            ParentUIStruct parentUI = m_ParentUI.Peek();
            if (parentUI.ChildUI == uiType)
            {
                Open(parentUI.ParentUI); //就是一个固定返回界面,一种父子的关系,尽量少用
                m_ParentUI.Pop();
            }
        }
    }
Exemple #14
0
    public void Add(IWindowBase window)
    {
        if (window == null)
        {
            return;
        }
        UIBase2D uibase2D = window as UIBase2D;

        uibase2D.Initialize();
        uibase2D.transform.SetParent(transform, false);

        UGUI_LAYER      layer       = uibase2D.Getlayer();
        List <UIBase2D> listWindows = null;

        if (!m_openMap.TryGetValue(layer, out listWindows))
        {
            listWindows = new List <UIBase2D>();
            m_openMap.Add(layer, listWindows);
        }
        listWindows.Add(uibase2D);
        SortLayer(layer, listWindows);
    }
Exemple #15
0
 public void Remove(IWindowBase window)
 {
     RemoveImpl(IndexOf(window));
 }
Exemple #16
0
 public TextManagerViewModel(IConfirmer confirmer, IWindowBase window)
 {
     _confirmer = confirmer;
     _window    = window;
 }