Example #1
0
        /// <summary>
        /// 更新UI使用的数据
        /// </summary>
        /// <param name="uiMsg">数据</param>
        public void SendMessage(UIMsgData uiMsg)
        {
            //所有的消息会被派发给子窗口
//            var keys = subWindowsMap.Keys.ToList();
//            for (int i = 0; i < keys.Count; i++)
//            {
//                var k = keys[i];
//                subWindowsMap[k].SendMessage(uiMsg);
//            }
            //通知子窗口
            foreach (var subWin in subWindowsMap.Values)
            {
                subWin.SendMessage(uiMsg);
            }

            //TODO: 执行完Invoke会导致 map的堆栈出问题,
            MethodInfo method = null;
            var        key    = uiMsg.GetType();
            bool       flag   = this.msgCallbackMap.TryGetValue(key, out method);

            if (flag)
            {
                method.Invoke(this, new object[] { uiMsg });
            }
        }
Example #2
0
        /// <summary>
        /// 显示窗口
        /// </summary>
        /// <param name="uiIndex">窗口枚举</param>
        public void ShowWindow(Enum index, UIMsgData uiMsgData = null, bool resetMask = true, UILayer layer = UILayer.Bottom)
        {
            int uiIndex = index.GetHashCode();

            if (windowMap.ContainsKey(uiIndex))
            {
                var v = windowMap[uiIndex] as IComponent;
                if (!v.IsOpen && v.IsLoad)
                {
                    switch (layer)
                    {
                    case UILayer.Bottom:
                        v.Transform.SetParent(this.Bottom, false);
                        break;

                    case UILayer.Center:
                        v.Transform.SetParent(this.Center, false);
                        break;

                    case UILayer.Top:
                        v.Transform.SetParent(this.Top, false);
                        break;

                    default:
                        break;
                    }

                    v.Transform.SetAsLastSibling();
                    v.Open(uiMsgData);
                    //effect
                }
                else
                {
                    Debug.LogErrorFormat("UI处于[unload,lock,open]状态之一:{0}", uiIndex);
                }

                AddToHistory(index.GetHashCode());
            }
            else
            {
                Debug.LogErrorFormat("未加载UI:{0}", uiIndex);
            }
        }
Example #3
0
        /// <summary>
        /// 显示窗口
        /// </summary>
        /// <param name="index"></param>
        /// <param name="uiMsgData"></param>
        /// <param name="resetMask"></param>
        /// <param name="layer"></param>
        /// <param name="isAddToHistory"></param>
        private void ShowWindow(int uiIdx, UIMsgData uiMsgData = null, bool resetMask = true, UILayer layer = UILayer.Bottom, bool isAddToHistory = true)
        {
            if (windowMap.ContainsKey(uiIdx))
            {
                var win    = windowMap[uiIdx];
                var winCom = win as IComponent;

                if (!winCom.IsOpen && winCom.IsLoad)
                {
                    switch (layer)
                    {
                    case UILayer.Bottom:
                        winCom.Transform.SetParent(this.Bottom, false);
                        break;

                    case UILayer.Center:
                        winCom.Transform.SetParent(this.Center, false);
                        break;

                    case UILayer.Top:
                        winCom.Transform.SetParent(this.Top, false);
                        break;
                    }

                    winCom.Transform.SetAsLastSibling();
                    win.Open(uiMsgData);
                    //effect
                }
                else
                {
                    Debug.LogErrorFormat("UI处于[unload,lock,open]状态之一:{0}", uiIdx);
                }

                if (isAddToHistory)
                {
                    AddToHistory(uiIdx);
                }
            }
            else
            {
                Debug.LogErrorFormat("未加载UI:{0}", uiIdx);
            }
        }
Example #4
0
        /// <summary>
        /// 外部推送ui数据
        /// </summary>
        /// <param name="uiIndex"></param>
        /// <param name="uiMsg"></param>
        public void SendMessage(Enum index, UIMsgData uiMsg)
        {
            var     uiIndex = index.GetHashCode();
            IWindow win;

            if (windowMap.TryGetValue(uiIndex, out win))
            {
                win.SendMessage(uiMsg);
                return;
            }

            //存入缓存
            List <UIMsgData> list = null;

            uiDataCacheMap.TryGetValue(uiIndex, out list);
            //
            if (list == null)
            {
                list = new List <UIMsgData>();
                uiDataCacheMap[uiIndex] = list;
            }

            list.Add(uiMsg);
        }
Example #5
0
 /// <summary>
 /// 打开
 /// </summary>
 virtual public void Open(UIMsgData uiMsg = null)
 {
     this.IsOpen = true;
     this.Transform.gameObject.SetActive(true);
 }
Example #6
0
 /// <summary>
 /// 打开
 /// 这里是IWindow的接口
 /// </summary>
 /// <param name="uiMsg"></param>
 public override void Open(UIMsgData uiMsg = null)
 {
     base.Open(uiMsg);
     this.State.TriggerEvent <OnWindowOpen>();
 }
Example #7
0
        /// <summary>
        /// 显示窗口
        /// </summary>
        /// <param name="uiIndex">窗口枚举</param>
        public void ShowWindow(Enum uiEnumIdx, UIMsgData uiMsgData = null, bool resetMask = true, UILayer layer = UILayer.Bottom, bool isAddToHistory = true)
        {
            int uiIdx = uiEnumIdx.GetHashCode();

            this.ShowWindow(uiIdx, uiMsgData, resetMask, layer, isAddToHistory);
        }