/// <summary>
        /// 注册game frame
        /// </summary>
        /// <param name="enumType"></param>
        /// <param name="frameType"></param>
        public void RegisterFrame(GameFrameType enumType, Type frameType)
        {
            if (!frameType.IsAbstract
                //&& frameType.IsSubclassOf(typeof(IGameFrame))
                )
            {
                if (!registeredFrames.ContainsKey(enumType))
                {
                    registeredFrames.Add(enumType, new HashSet <Type>());
                }

                registeredFrames[enumType].Add(frameType);
            }
        }
        public void NotifyNetMessageReceived(MessageReceivedEvent e)
        {
            GameFrameType oldType = CurrentFrameType;

            // 处理收到的网络消息
            foreach (var frame in currentFrames)
            {
                if (!e.Handled)
                {
                    frame.NotifyNetMessageReceived(e);
                }

                // 消息处理的过程中有可能会改变currentFrames,从而导致循环被破坏
                if (CurrentFrameType != oldType)
                {
                    break;
                }
            }
        }
 public GameFrameTransferEvent(GameFrameType frame)
 {
     frameType = frame;
 }
 public void NotifyNetConnectAborted(NetMessageEvent e)
 {
     CurrentFrameType = GameFrameType.AccountLogin;
 }