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