1 #include "SDL.h"
2 #include <stdlib.h>
3 #include "../engine/kyra.h"
4 
5 
6 using namespace grinliz;
7 
8 #define SDL_TIMER_EVENT ( SDL_USEREVENT + 0 )
9 const int TIMER_INTERVAL = 80;
10 
11 const int SCREENX = 640;
12 const int SCREENY = 480;
13 
14 
TimerCallback(Uint32 interval)15 Uint32 TimerCallback(Uint32 interval)
16 {
17 	SDL_Event event;
18 	event.type = SDL_TIMER_EVENT;
19 
20 	SDL_PeepEvents( &event, 1, SDL_ADDEVENT, 0 );
21 	return TIMER_INTERVAL;
22 }
23 
24 
main(int argc,char * argv[])25 int main( int argc, char *argv[] )
26 {
27 	// code_d A random number generator.
28 	Random random;
29 
30 	SDL_Surface* screen;
31 
32 	const SDL_version* sdlVersion = SDL_Linked_Version();
33 	if ( sdlVersion->minor < 2 )
34 	{
35 		printf( "SDL version must be at least 1.2.0" );
36 		exit( 254 );
37 	}
38 
39 	/* Initialize the SDL library */
40 	if ( SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER|SDL_INIT_NOPARACHUTE) < 0 ) {
41 		printf( "Couldn't initialize SDL: %s\n",SDL_GetError());
42 		exit(255);
43 	}
44 
45 	/* Create a display for the image */
46 	screen = SDL_SetVideoMode( SCREENX, SCREENY, 0, SDL_SWSURFACE );
47 	if ( screen == NULL ) {
48 		exit(3);
49 	}
50 
51 	KrEngine* engine = new KrEngine( screen );
52 	engine->Draw();
53 
54 	SDL_Event event;
55 	bool done = false;
56 
57 	// Start timing!
58 	SDL_SetTimer( TIMER_INTERVAL, TimerCallback );
59 
60 	while( !done && SDL_WaitEvent(&event) )
61 	{
62 		if ( event.type == SDL_QUIT )
63 			break;
64 
65 		switch(event.type)
66 		{
67 			case SDL_KEYDOWN:
68 			{
69 				done = true;
70 			}
71 			break;
72 
73 			case SDL_TIMER_EVENT:
74 			{
75 				// code_d Walk the list and move the particles
76 				engine->Draw();
77 			}
78 			break;
79 
80 			default:
81 				break;
82 		}
83 
84 	}
85 
86 	delete engine;
87 
88 	SDL_Quit();
89 	return 0;
90 }
91