示例#1
0
            public void ForGroupBelow(UIID uiid, System.Action <UIID> action)
            {
                if (action == null)
                {
                    return;
                }

                int  count       = _groups.Count;
                bool readyToExec = false;

                for (int i = count - 1; i >= 0; --i)
                {
                    if (_groups[i].Contains(uiid))
                    {
                        readyToExec = true;
                        continue;
                    }
                    else if (readyToExec)
                    {
                        int uiidCount = _groups[i].Count;
                        for (int k = 0; k < uiidCount; ++k)
                        {
                            action(_groups[i][k]);
                        }

                        break;
                    }
                }
            }
示例#2
0
 public void HideBelow(UIID ui)
 {
     if ((ui.cullSettings & CullSettings.CullBelow) != 0)
     {
         _uiHeap.ForGroupBelow(ui, HideDialog);
     }
 }
示例#3
0
        /// <summary>
        /// 关闭页面
        /// </summary>
        /// <param name="panelName"></param>
        public void ClosePanel(UIID panelName)
        {
            BasePanel basePanel;

            m_DicAllPanel.TryGetValue(panelName, out basePanel);
            if (basePanel == null)
            {
                return;
            }

            switch (basePanel.showMode)
            {
            case UIShowMode.Normal:
                ExitPanel(panelName);
                break;

            case UIShowMode.ReverseChange:
                PopUIPanel();
                break;

            case UIShowMode.HideOther:
                ExitPanelAndDisplayOther(panelName);
                break;
            }
        }
示例#4
0
 public UIData(UIID id, string prefabPath, GameObject uiObject, bool unique)
 {
     ID         = id;
     UIObject   = uiObject;
     PrefabPath = prefabPath;
     bUnique    = unique;
 }
示例#5
0
    /// <summary>
    /// 实例化UI
    /// </summary>
    /// <param name="id"></param>
    /// <param name="action"></param>
    /// <returns></returns>
    public UIBase InstanceWindow(UIID id, Action action = null)
    {
        UIBase UB = GetUIBase(id);

        if (_allWindowsByUIID.ContainsKey(id))
        {
            if (!UB.Repeat)
            {
                DestroyWindow(id);
            }
        }
        if (UIResource.WindowPrefabs.ContainsKey(id))
        {
            string     prefabPath = UIResource.WindowPrefabs[id].Path;
            GameObject prefab     = Resources.Load <GameObject>(prefabPath);
            if (prefab != null)
            {
                GameObject Go = Utility.InstantiateGo(prefab, true);
                UB = Go.GetComponent <UIBase>();
                Utility.AddChildToTarget_UI(UB.RootTransform ?? CavasGo.transform, Go.transform, UB.SiblingIndex);
                UB.GUID = System.Guid.NewGuid().ToString();
            }
        }
        if (UB != null)
        {
            UB.SetState(true);
            _allWindowsByUIID[id]      = UB;
            _allWindowsByGUID[UB.GUID] = UB;
            if (action != null)
            {
                action();
            }
        }
        return(UB);
    }
示例#6
0
    /// <summary>
    /// 销毁UI
    /// </summary>
    /// <param name="id">UIID</param>
    public void DestroyWindow(UIID id, string GUID = null, Action action = null)
    {
        UIBase ui;

        if (GUID == null)
        {
            ui = GetUIBase(id);
        }
        else
        {
            ui = GetUIBase(GUID);
        }
        if (ui != null)
        {
            if (action != null)
            {
                action();
            }
            ui.DestroyUI();
            if (_allWindowsByUIID != null)
            {
                _allWindowsByUIID.Remove(id);
            }
            if (_allWindowsByGUID != null)
            {
                _allWindowsByGUID.Remove(GUID);
            }
        }
        CurrentItem = null;
    }
        public void Show(UIID id)
        {
            GameObject go = GetUIObejct(id);

            if (go == null)
            {
                Debug.LogError("can not find ID:" + id);
            }
            UIBase uiScript = GetUIScript(go, id);

            if (uiScript == null)
            {
                return;
            }

            InitUI(uiScript);
            if (uiScript.Layer == UILayer.BASIC_UI)
            {
                uiScript.State = UIState.SHOW;
                Hide();
            }
            else
            {
                uiScript.State = UIState.SHOW;
            }

            _uiEffectManager.Enter(uiScript.transform);
            _uiStake.Push(uiScript);
        }
示例#8
0
        /// <summary>
        /// HideOther属性的显示UI方法
        /// </summary>
        /// <param name="panelName"></param>
        private void EnterPanelAndHideOther(UIID panelName)
        {
            BasePanel basePanel;
            BasePanel basePanelFromAll;

            m_DicCurrentShowPanel.TryGetValue(panelName, out basePanel);
            if (basePanel != null)
            {
                return;
            }

            foreach (BasePanel panel in m_DicCurrentShowPanel.Values)
            {
                panel.Hide();
            }
            foreach (BasePanel panel in m_StaCurrentPanel)
            {
                panel.Hide();
            }

            m_DicAllPanel.TryGetValue(panelName, out basePanelFromAll);
            if (basePanelFromAll != null)
            {
                m_DicCurrentShowPanel.Add(panelName, basePanelFromAll);
                basePanelFromAll.Display();
            }
        }
示例#9
0
        /// <summary>
        /// 打开页面
        /// </summary>
        /// <param name="panelName"></param>
        public void ShowPanel(UIID panelName)
        {
            BasePanel basePanel = null;

            basePanel = LoadPanelToAllPanelCache(panelName);
            if (basePanel == null)
            {
                return;
            }

            if (basePanel.IsClearStack)
            {
                ClearStackArray();
            }

            switch (basePanel.showMode)
            {
            case UIShowMode.Normal:
                LoadPanelToCurrentCache(panelName);
                break;

            case UIShowMode.ReverseChange:
                PushPanel2Stack(panelName);
                break;

            case UIShowMode.HideOther:
                EnterPanelAndHideOther(panelName);
                break;
            }
        }
示例#10
0
    public void LoadPage(UIID uid)
    {
        if (ui_dict_all.ContainsKey(uid))
        {
            Debug.LogWarning("UI duplicate: " + uid + " already exists.");
            return;
        }

        if (!ui_config_table.ContainsKey(uid))
        {
            Debug.LogError("Load UI fails: " + uid + " is not found in ui config table.");
            return;
        }

        string path = ui_config_table[uid];
        //UIPage page = Resources.Load<UIPage>(path);
        GameObject assetObj = uiBundle.LoadAsset(uid.ToString() + ".prefab") as GameObject;
        UIPage     page_obj = assetObj.GetComponent <UIPage>();

        if (page_obj == null)
        {
            Debug.LogError("Load UI asset fails: " + uid + " cannot be loaded.");
            return;
        }
        UIPage page = Instantiate(page_obj, this.transform);

        page.Hide();
        ui_dict_all.Add(uid, page);
    }
示例#11
0
        private UIBase ReadyToShowUI(UIID id)
        {
            if (shownUI.ContainsKey(id))
                return null;

            UIBase ui = GetUIBase(id);
            //如果ui没有被打开,则重新创建
            if (!ui)
            {
                if (UIResourceDefine.UIPrefabPath.ContainsKey(id))
                {
                    string prefabPath = UIResourceDefine.UIPrefabPathString + UIResourceDefine.UIPrefabPath[id];
                    GameObject prefab = Resources.Load<GameObject>(prefabPath);
                    if (prefab != null)
                    {
                        GameObject uiObject = (GameObject)GameObject.Instantiate(prefab);
                        uiObject.SetActive(true);
                        ui = uiObject.GetComponent<UIBase>();
                        if (!ui)
                            Debug.LogError(id + " cannot get component <UIBase>");

                        Transform targetRoot = GetTargetRoot(ui.GetUIType());
                        GameUtility.AddChildToTarget(targetRoot, ui.gameObject.transform);

                        allUI[id] = ui;
                    }
                }
            }
            return ui;
        }
示例#12
0
 public void ShowBelow(UIID id)
 {
     if ((id.cullSettings & CullSettings.CullBelow) != 0)
     {
         _uiHeap.ForGroupBelow(id, ShowDialog);
     }
 }
示例#13
0
        /// <summary>
        /// 开始执行加载
        /// </summary>
        /// <param name="load">委托->加载内容</param>
        /// <param name="ID">加载的状态ID</param>
        /// <param name="loadOver">加载完成后执行</param>
        /// <returns></returns>
        public IEnumerator LoadBegin(UIID ID, LoadType loadType, Action load = null, Action <UIID> loadOver = null)
        {
            //transform.SetAsLastSibling();   //设置为最前的层

            switch (loadType)
            {
            case LoadType.Loading:
                if (load != null)
                {
                    load.Invoke();
                }
                yield return(StartCoroutine(UIManager._Instance.CreateUI(ID)));

                if (loadOver != null)
                {
                    loadOver.Invoke(ID);
                }
                break;

            case LoadType.LoadOver:
                if (loadOver != null)
                {
                    loadOver.Invoke(ID);
                }
                break;

            default:
                break;
            }

            //load.Invoke();

            //yield return new WaitForEndOfFrame();
        }
示例#14
0
    protected IUICtrl GetCtrl(UIID id)
    {
        IUICtrl ctrl;

        _register.TryGetValue(id, out ctrl);
        return(ctrl);
    }
示例#15
0
 /// <summary>
 /// 通过ID获取UIBase
 /// </summary>
 /// <param name="id"></param>
 /// <returns></returns>
 public UIBase GetUIBase(UIID id)
 {
     if (_allWindowsByUIID.ContainsKey(id))
     {
         return(_allWindowsByUIID[id]);
     }
     return(null);
 }
示例#16
0
            public void CreateNewTopGroup(UIID ui)
            {
                UIGroup group = new UIGroup();

                group.Add(ui);

                _groups.Add(group);
            }
示例#17
0
 public void ShowUI(UIID id)
 {
     UIBase uibase = ReadyToShowUI(id);
     if (uibase != null)
     {
         DoShowUI(uibase, id);
     }
 }
示例#18
0
    public static UIID Generate(CullSettings cullSettings = CullSettings.NoCullNoClear)
    {
        UIID created = new UIID(NEXT, cullSettings);

        ++NEXT;

        return(created);
    }
示例#19
0
        private void UpdateCameraRenderSettings(UIID uiid)
        {
            CameraClearFlags clearFlags = (uiid.cullSettings & CullSettings.ClearCamera) == 0 ? CameraClearFlags.SolidColor : CameraClearFlags.Depth;

            if (uiCamera.clearFlags != clearFlags)
            {
                uiCamera.clearFlags = clearFlags;
            }
        }
示例#20
0
 public UIPage GetPage(UIID uid)
 {
     if (!ui_dict_all.ContainsKey(uid))
     {
         Debug.LogError("Get ui fails: " + uid + " is not exist in game.");
         return(null);
     }
     return(ui_dict_all[uid]);
 }
示例#21
0
 public TaskData(int id, string name, string desc, string iconPath, UIID uiName, string title)
 {
     ID       = id;
     Name     = name;
     Desc     = desc;
     IconPath = iconPath;
     UIName   = uiName;
     Title    = title;
 }
示例#22
0
 /// <summary>
 /// 显示界面
 /// </summary>
 protected virtual void RealShowUI(UIBase baseUI, UIID id)
 {
     baseUI.ShowUI();
     shownUIs[id] = baseUI;
     if (baseUI.uiData.uiType == UIType.Normal)
     {
         lastShownNormalUI = curShownNormalUI;
         curShownNormalUI  = baseUI;
     }
 }
示例#23
0
        public AbstractPanel GetPanelLoaded(UIID uiID)
        {
            AbstractPanel panel = null;

            if (m_AllPanelMap.TryGetValue(uiID, out panel))
            {
                return(panel);
            }
            return(null);
        }
示例#24
0
 public void HidePage(UIID uid)
 {
     if (!ui_dict_show.ContainsKey(uid))
     {
         Debug.LogError("Hide ui fails: " + uid + " is not exist in game.");
         return;
     }
     ui_dict_show[uid].Hide();
     ui_dict_show.Remove(uid);
 }
示例#25
0
        public virtual T GetGameUIScript <T>(UIID id) where T : UIBase
        {
            UIBase baseUI = GetGameUI(id);

            if (baseUI != null)
            {
                return((T)baseUI);
            }
            return((T)((object)null));
        }
示例#26
0
        public bool Remove(UIID id)
        {
            bool removed = _uiHeap.Remove(id);

            if (_uiHeap.IsEmpty())
            {
                HideCanvasIfNeeded();
            }

            return(removed);
        }
示例#27
0
        public bool Remove(UIID ui)
        {
            IEnumerator <UISortingLayer.Layers> layerIter = UISortingLayer.GetEnumerator();

            do
            {
                Remove(layerIter.Current, ui);
            }while(layerIter.MoveNext());

            return(false);
        }
示例#28
0
 public void AddToTopGroup(UIID ui)
 {
     if (_groups.Count > 0)
     {
         _groups[_groups.Count - 1].Add(ui);
     }
     else
     {
         CreateNewTopGroup(ui);
     }
 }
示例#29
0
        public UIView FindUI(UIID uiId)
        {
            UIPanelBase thisPanel;

            if (m_CachePanel.TryGetValue(uiId, out thisPanel))
            {
                return(thisPanel.m_UIView);
            }

            return(null);
        }
示例#30
0
        public void CloseUI(UIID uiId)
        {
            UIPanelBase thisPanel;

            if (m_ShowingPanel.TryGetValue(uiId, out thisPanel))
            {
                thisPanel.Close();
                m_ShowingPanel.Remove(uiId);
                m_CachePanel.Add(uiId, thisPanel);
            }
        }
示例#31
0
        private BasePanel LoadPanelToAllPanelCache(UIID panelName)
        {
            BasePanel returnPanel = null;

            m_DicAllPanel.TryGetValue(panelName, out returnPanel);
            if (returnPanel == null)
            {
                returnPanel = LoadPanel(panelName);
            }
            return(returnPanel);
        }
示例#32
0
 public void CloseTo(UIID id, long cnt)
 {
     foreach (UIData data in _UIStack)
     {
         count--;
         data.UIObject.SetActive(false);
         if (data.ID == id && data.count == cnt)
         {
             break;
         }
     }
 }
示例#33
0
 void DoShowUI(UIBase ui, UIID id)
 {
     ui.ShowUI();
     shownUI[id] = ui;
 }
示例#34
0
 /// <summary>
 /// 获取UIBase
 /// </summary>
 /// <param name="id"></param>
 /// <returns></returns>
 private UIBase GetUIBase(UIID id)
 {
     if (allUI.ContainsKey(id))
         return allUI[id];
     else
         return null;
 }