/* Simple program:  Create a blank window, wait for keypress, quit.

   Please see the SDL documentation for details on using the SDL API:
   /Developer/Documentation/SDL/docs.html
*/

#define KEY_A			0x1
#define KEY_1			0x2
#define MOUSEMOVE		0x4
#define MOUSEPRESS		0x8

#include 
#include 
#include 
#include 

#include "SDL.h"

int main(int argc, char *argv[])
{
	Uint32 initflags = SDL_INIT_VIDEO;  /* See documentation for details */
	SDL_Surface *screen;
	Uint8  video_bpp = 0;
	Uint32 videoflags = SDL_SWSURFACE;
	int    done;
        SDL_Event event;

	/* Initialize the SDL library */
	if ( SDL_Init(initflags) < 0 ) {
		fprintf(stderr, "Couldn't initialize SDL: %s\n",
			SDL_GetError());
		exit(1);
	}

	/* Set 640x480 video mode */
	screen=SDL_SetVideoMode(640,480, video_bpp, videoflags);
        if (screen == NULL) {
		fprintf(stderr, "Couldn't set 640x480x%d video mode: %s\n",
                        video_bpp, SDL_GetError());
		SDL_Quit();
		exit(2);
	}

	Uint32 keycombo = 0;
	Uint32 keymatch = 0;
	keymatch |= KEY_A;
	keymatch |= KEY_1;


	done = 0;
	while ( !done ) 
	{

		/* Check for events */
		while ( SDL_PollEvent(&event) )
		 {
			switch (event.type) 
			{

				case SDL_MOUSEMOTION:
					keycombo |= MOUSEMOVE;
					break;
				case SDL_MOUSEBUTTONDOWN:
					keycombo |= MOUSEPRESS;
					break;
				case SDL_KEYDOWN:
					switch( event.key.keysym.sym )
					{
						case SDLK_a:
							keycombo |= KEY_A;
						break;
						case SDLK_1:
							keycombo |= KEY_1;
						break;
						default: break;
					}
				break;
					/* Any keypress quits the app... */
				case SDL_QUIT:
					done = 1;
					break;
				default:
					break;
			}
		}	
//			printf("%x\n", (((const Uint32)keycombo ^ (const Uint32)keymatch)));
	/*	if(keycombo)
		{
			printf("if(%x == %x)\n", keycombo, keymatch);
			if(keycombo & keymatch)
			{
				printf("YAY\n");
			}
		}
		*/
		/*int i;
		for(i = 1; i < 16; i*= 2)
		{
			if(keycombo & i) 
			{
				if(keymatch & i)
				{
					printf("found ui event %d\n", i >> 1);
				}
			}
		}*/

	//	if(!(keycombo ^ (KEY_A | KEY_1))) printf("A + 1\n");
	//	if(keycombo & KEY_A) printf("A key was detected\n");
	//	if(keycombo & KEY_1) printf("1 key was detected\n");
	//	if(keycombo & MOUSEMOVE) printf("Mousemove was detected\n");
	//	if(keycombo & MOUSEPRESS) printf("Mousepress was detected\n");
		//if(keycombo )
		//{
			if((keycombo & keymatch) != 0) printf("we has win!\n");
			
		//}
		keycombo = 0;
		keymatch = 0;
	}
	
	/* Clean up the SDL library */
	SDL_Quit();
	return(0);
}