Example #1
0
        /// <summary>
        /// Returns an array of events in the event queue.
        /// It does not remove them from the event queue.
        /// </summary>
        /// <param name="eventMask">Mask of events to find in queue</param>
        /// <param name="numberOfEvents">Number of events to find in queue</param>
        /// <returns>Array of events in queue.</returns>
        public static SdlEventArgs[] Peek(EventMask eventMask, int numberOfEvents)
        {
            Sdl.SDL_Event[] events = new Sdl.SDL_Event[numberOfEvents];
            Sdl.SDL_PumpEvents();
            int result =
                Sdl.SDL_PeepEvents(
                    events,
                    events.Length,
                    Sdl.SDL_PEEKEVENT,
                    (int)eventMask);

            if (result == (int)SdlFlag.Error)
            {
                throw SdlException.Generate();
            }
            SdlEventArgs[] eventsArray = new SdlEventArgs[result];
            for (int i = 0; i < eventsArray.Length; i++)
            {
                if (events[i].type == (byte)EventTypes.UserEvent)
                {
                    eventsArray[i] = (UserEventArgs)userEvents[events[i].user.code];
                }
                else
                {
                    eventsArray[i] = SdlEventArgs.CreateEventArgs(events[i]);
                }
            }
            return(eventsArray);
        }
Example #2
0
 /// <summary>
 /// Adds an event to the Event queue.
 /// </summary>
 /// <param name="sdlEvent">Event to add to queue</param>
 public static void Add(SdlEventArgs sdlEvent)
 {
     //			SdlEventArgs[] events = new SdlEventArgs[1];
     //			events[0] = sdlEvent;
     //			Add(events);
     if (sdlEvent == null)
     {
         throw new ArgumentNullException("sdlEvent");
     }
     Sdl.SDL_Event evt = sdlEvent.EventStruct;
     if (Sdl.SDL_PushEvent(out evt) != (int)SdlFlag.Success)
     {
         //throw SdlException.Generate();
     }
 }
Example #3
0
        /// <summary>
        /// Retrieve events of a certain type
        /// </summary>
        /// <param name="eventMask">Event to retrieve</param>
        /// <param name="numberOfEvents">Number of events to retrieve</param>
        /// <returns>Array containing events</returns>
        public static SdlEventArgs[] Retrieve(EventMask eventMask, int numberOfEvents)
        {
            Sdl.SDL_PumpEvents();

            Sdl.SDL_Event[] events = new Sdl.SDL_Event[numberOfEvents];

            int result = Sdl.SDL_PeepEvents(
                events,
                events.Length,
                Sdl.SDL_GETEVENT,
                (int)eventMask
                );

            if (result == (int)SdlFlag.Error)
            {
                throw SdlException.Generate();
            }

            SdlEventArgs[] eventsArray = new SdlEventArgs[result];
            for (int i = 0; i < eventsArray.Length; i++)
            {
                if (events[i].type == (byte)EventTypes.UserEvent)
                {
                    eventsArray[i] = (UserEventArgs)userEvents[events[i].user.code];
                    userEvents.Remove(events[i].user.code);
                }
                else
                {
                    eventsArray[i] = SdlEventArgs.CreateEventArgs(events[i]);
                }
            }

            return eventsArray;
        }
Example #4
0
 /// <summary>
 /// Raises Event and places it on the event queue
 /// </summary>
 /// <param name="sdlEvent">Event to be raised</param>
 public static void AddEvent(SdlEventArgs sdlEvent)
 {
     Events.Add(sdlEvent);
 }
Example #5
0
 /// <summary>
 /// Adds an array of events to the event queue.
 /// </summary>
 /// <param name="sdlEvents">Array of events to add to queue.</param>
 /// <returns></returns>
 public static void Add(SdlEventArgs[] sdlEvents)
 {
     if (sdlEvents == null)
     {
         throw new ArgumentNullException("sdlEvents");
     }
     //Sdl.SDL_Event[] events = new Sdl.SDL_Event[sdlEvents.Length];
     for (int i = 0; i < sdlEvents.Length; i++)
     {
         Add(sdlEvents[i]);
     }
     //
     //			int result =
     //				Sdl.SDL_PeepEvents(
     //				events,
     //				events.Length,
     //				Sdl.SDL_ADDEVENT,
     //				(int)EventMask.None);
     //
     //			if (result == (int)SdlFlag.Error)
     //			{
     //				if (quitFlag == false)
     //				{
     //					throw SdlException.Generate();
     //				}
     //			}
 }
Example #6
0
 /// <summary>
 /// Adds an event to the Event queue.
 /// </summary>
 /// <param name="sdlEvent">Event to add to queue</param>
 public static void Add(SdlEventArgs sdlEvent)
 {
     //			SdlEventArgs[] events = new SdlEventArgs[1];
     //			events[0] = sdlEvent;
     //			Add(events);
     if (sdlEvent == null)
     {
         throw new ArgumentNullException("sdlEvent");
     }
     Sdl.SDL_Event evt = sdlEvent.EventStruct;
     if (Sdl.SDL_PushEvent(out evt) != (int)SdlFlag.Success)
     {
         //throw SdlException.Generate();
     }
 }
Example #7
0
 /// <summary>
 /// Raises Event and places it on the event queue
 /// </summary>
 /// <param name="sdlEvent">Event to be raised</param>
 public static void AddEvent(SdlEventArgs sdlEvent)
 {
     Events.Add(sdlEvent);
 }