Exemplo n.º 1
0
        public bool Handle(INetworkEventContext context, IEventEngine <INetworkEventContext> eventEngine, Event @event)
        {
            foreach (var child in _node.Children.Select(x => x.UntypedValue).OfType <IEventListener <INetworkEventContext> >())
            {
                if (child.Handle(context, eventEngine, @event))
                {
                    return(true);
                }
            }

            return(false);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Handles network events from an event engine.  This implementation propagates events through the
        /// component hierarchy to components that implement <see cref="INetworkedComponent"/>.
        /// </summary>
        /// <param name="context">The current game context.</param>
        /// <param name="eventEngine">The event engine from which the event was fired.</param>
        /// <param name="event">The network event that is to be handled.</param>
        /// <returns>Whether or not the event was consumed.</returns>
        public virtual bool Handle(INetworkEventContext context, IEventEngine <INetworkEventContext> eventEngine, Event @event)
        {
            var networkEvent = @event as NetworkMessageReceivedEvent;

            if (networkEvent == null)
            {
                return(false);
            }

            var state = new EventState
            {
                Consumed = false
            };

            if (networkEvent.GameContext != null)
            {
                _handleMessageRecievedClient.Invoke(
                    networkEvent.GameContext,
                    networkEvent.UpdateContext,
                    networkEvent.Dispatcher,
                    networkEvent.Client,
                    networkEvent.Payload,
                    networkEvent.ProtocolID,
                    state);
            }

            if (networkEvent.ServerContext != null && !state.Consumed)
            {
                _handleMessageRecievedServer.Invoke(
                    networkEvent.ServerContext,
                    networkEvent.UpdateContext,
                    networkEvent.Dispatcher,
                    networkEvent.Client,
                    networkEvent.Payload,
                    networkEvent.ProtocolID,
                    state);
            }

            return(state.Consumed);
        }