]> git.itanic.dy.fi Git - sdl-planets/commitdiff
main.c: Move event handling in a separate function
authorTimo Kokkonen <kaapeli@itanic.dy.fi>
Sat, 20 Mar 2010 11:11:31 +0000 (13:11 +0200)
committerTimo Kokkonen <kaapeli@itanic.dy.fi>
Sat, 20 Mar 2010 11:11:31 +0000 (13:11 +0200)
Signed-off-by: Timo Kokkonen <kaapeli@itanic.dy.fi>
main.c

diff --git a/main.c b/main.c
index 85d43562e23445483ae7c72821d6654d494dedbb..f9c587576b6b7e1a6023e90864cde1580430c654 100644 (file)
--- a/main.c
+++ b/main.c
@@ -23,11 +23,79 @@ static void clear_buf(SDL_Surface *screen)
                buf[i] = 0;
 }
 
+static int poll_events(SDL_Surface **screen, struct camera *cam)
+{
+       SDL_Event event;
+
+       while (SDL_PollEvent(&event)) {
+               switch (event.type) {
+               case SDL_KEYDOWN:
+                       switch (event.key.keysym.sym) {
+                       case SDLK_ESCAPE:
+                               printf("\nExiting. Good bye!\n");
+                               return 1;
+                       case SDLK_LEFT:
+                               cam->speed.x = -CAM_SPEED;
+                               break;
+                       case SDLK_RIGHT:
+                               cam->speed.x = CAM_SPEED;
+                               break;
+                       case SDLK_UP:
+                               cam->speed.y = -CAM_SPEED;
+                               break;
+                       case SDLK_DOWN:
+                               cam->speed.y = CAM_SPEED;
+                               break;
+                       case SDLK_PLUS:
+                               cam->zoom_rate = CAM_ZOOM_RATE;
+                               break;
+                       case SDLK_MINUS:
+                               cam->zoom_rate = 1 / CAM_ZOOM_RATE;
+                               break;
+                       default:
+                               break;
+                       }
+                       break;
+               case SDL_KEYUP:
+                       switch (event.key.keysym.sym) {
+                       case SDLK_LEFT:
+                               cam->speed.x = 0;
+                               break;
+                       case SDLK_RIGHT:
+                               cam->speed.x = 0;
+                               break;
+                       case SDLK_UP:
+                               cam->speed.y = 0;
+                               break;
+                       case SDLK_DOWN:
+                               cam->speed.y = 0;
+                               break;
+                       case SDLK_PLUS:
+                               cam->zoom_rate = 1;
+                               break;
+                       case SDLK_MINUS:
+                               cam->zoom_rate = 1;
+                               break;
+                       default:
+                               break;
+                       }
+                       break;
+               case SDL_VIDEORESIZE:
+                       *screen = SDL_SetVideoMode(event.resize.w,
+                                                  event.resize.h,
+                                                  32,
+                                                  screen[0]->flags);
+                       break;
+               }
+       }
+
+       return 0;
+}
+
 static void loop(SDL_Surface *screen, int num_of_planets)
 {
        struct planet *planet, *pl1, *pl2;
        struct camera camera;
-       SDL_Event event;
        int i, planets;
        int old_ticks, ticks, framecount = 0, last_fps_time = 0;
        int last_framecount = 0;
@@ -79,70 +147,8 @@ static void loop(SDL_Surface *screen, int num_of_planets)
 
                move_camera(&camera, time);
 
-               while (SDL_PollEvent(&event)) {
-                       switch (event.type) {
-                       case SDL_KEYDOWN:
-                               switch (event.key.keysym.sym) {
-                               case SDLK_ESCAPE:
-                                       printf("\nExiting. Good bye!\n");
-                                       return;
-                               case SDLK_LEFT:
-                                       camera.speed.x = -CAM_SPEED;
-                                       break;
-                               case SDLK_RIGHT:
-                                       camera.speed.x = CAM_SPEED;
-                                       break;
-                               case SDLK_UP:
-                                       camera.speed.y = -CAM_SPEED;
-                                       break;
-                               case SDLK_DOWN:
-                                       camera.speed.y = CAM_SPEED;
-                                       break;
-                               case SDLK_PLUS:
-                                       camera.zoom_rate = CAM_ZOOM_RATE;
-                                       break;
-                               case SDLK_MINUS:
-                                       camera.zoom_rate = 1 / CAM_ZOOM_RATE;
-                                       break;
-                               default:
-                                       break;
-                               }
-                               break;
-                       case SDL_KEYUP:
-                               switch (event.key.keysym.sym) {
-                               case SDLK_ESCAPE:
-                                       printf("\nExiting. Good bye!\n");
-                                       return;
-                               case SDLK_LEFT:
-                                       camera.speed.x = 0;
-                                       break;
-                               case SDLK_RIGHT:
-                                       camera.speed.x = 0;
-                                       break;
-                               case SDLK_UP:
-                                       camera.speed.y = 0;
-                                       break;
-                               case SDLK_DOWN:
-                                       camera.speed.y = 0;
-                                       break;
-                               case SDLK_PLUS:
-                                       camera.zoom_rate = 1;
-                                       break;
-                               case SDLK_MINUS:
-                                       camera.zoom_rate = 1;
-                                       break;
-                               default:
-                                       break;
-                               }
-                               break;
-                       case SDL_VIDEORESIZE:
-                               screen = SDL_SetVideoMode(event.resize.w,
-                                                         event.resize.h,
-                                                         32,
-                                                         screen->flags);
-                               break;
-                       }
-               }
+               if (poll_events(&screen, &camera))
+                       return;
 
                old_ticks = ticks;
                ticks = SDL_GetTicks();