Ejemplo n.º 1
0
        private void On(PlayerIOMessageEvent e)
        {
            Type handler;

            if (this._messageRegister.TryGetHandler(e.Message.Type, out handler))
            {
                const BindingFlags flags = BindingFlags.NonPublic | BindingFlags.Instance;
                var instance             = (IEvent)Activator.CreateInstance(handler, flags, null,
                                                                            new object[] { this.BotBits, e.Message }, null);

                var playerEvent = instance as ICancellable;
                if (playerEvent != null && playerEvent.Cancelled)
                {
                    new InvalidMessageEvent(this.BotBits, e.Message,
                                            new UnknownPlayerException("The player could not be found."))
                    .RaiseIn(this.BotBits);
                    return;
                }

                instance.RaiseIn(this.BotBits);
            }
            else
            {
                new InvalidMessageEvent(this.BotBits, e.Message,
                                        new UnknownMessageTypeException("The received message type is not supported."))
                .RaiseIn(this.BotBits);
            }
        }
Ejemplo n.º 2
0
        private void OnMessage(PlayerIOMessageEvent e)
        {
            Type handler;

            if (this._messageRegister.TryGetHandler(e.Message.Type, out handler))
            {
                IEvent instance;
                try
                {
                    const BindingFlags flags = BindingFlags.NonPublic | BindingFlags.Instance;
                    instance = (IEvent)Activator.CreateInstance(handler, flags, null,
                                                                new object[] { this.BotBits, e.Message }, null);
                }
                catch (Exception ex)
                {
                    Debug.WriteLine("Error parsing message: {0} \n {1}", e.Message, ex);
                    return;
                }

                var playerEvent = instance as ICancellable;
                if (playerEvent != null && playerEvent.Cancelled)
                {
                    return;
                }

                instance.RaiseIn(this.BotBits);
            }
            else
            {
                new UnknownMessageEvent(this.BotBits, e.Message)
                .RaiseIn(this.BotBits);
            }
        }