/// <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; }