rnd-20020403-1-src
[rocksndiamonds.git] / src / events.c
index ccab40eedbbd44190ca7d1e7d776238cb5a161b3..a4b60829e90a139f35aeff1bc19a9cbfab278b3e 100644 (file)
@@ -222,38 +222,7 @@ void SleepWhileUnmapped()
 void HandleExposeEvent(ExposeEvent *event)
 {
 #ifndef TARGET_SDL
-  int x = event->x, y = event->y;
-  int width = event->width, height = event->height;
-
-  if (setup.direct_draw && game_status==PLAYING)
-  {
-    int xx,yy;
-    int x1 = (x-SX)/TILEX, y1 = (y-SY)/TILEY;
-    int x2 = (x-SX+width)/TILEX, y2 = (y-SY+height)/TILEY;
-
-    SetDrawtoField(DRAW_BACKBUFFER);
-
-    for(xx=0; xx<SCR_FIELDX; xx++)
-      for(yy=0; yy<SCR_FIELDY; yy++)
-       if (xx>=x1 && xx<=x2 && yy>=y1 && yy<=y2)
-         DrawScreenField(xx,yy);
-    DrawAllPlayers();
-
-    SetDrawtoField(DRAW_DIRECT);
-  }
-
-  if (setup.soft_scrolling && game_status == PLAYING)
-  {
-    int fx = FX, fy = FY;
-
-    fx += (ScreenMovDir & (MV_LEFT|MV_RIGHT) ? ScreenGfxPos : 0);
-    fy += (ScreenMovDir & (MV_UP|MV_DOWN)    ? ScreenGfxPos : 0);
-
-    BlitBitmap(fieldbuffer, backbuffer, fx,fy, SXSIZE,SYSIZE, SX,SY);
-  }
-
-  BlitBitmap(drawto, window, x,y, width,height, x,y);
-
+  RedrawPlayfield(FALSE, event->x, event->y, event->width, event->height);
   FlushDisplay();
 #endif
 }
@@ -508,6 +477,7 @@ void HandleKey(Key key, int key_status)
   /* allow quick escape to the main menu with the Escape key */
   if (key == KSYM_Escape &&
       game_status != MAINMENU &&
+      game_status != PLAYING &&
       game_status != LEVELED &&
       game_status != CHOOSELEVEL &&
       game_status != SETUP)
@@ -517,6 +487,14 @@ void HandleKey(Key key, int key_status)
     return;
   }
 
+  /* special shortcuts for quick game tape saving and loading */
+  if (game_status == MAINMENU || game_status == PLAYING)
+  {
+    if (key == setup.shortcut.save_game)
+      TapeQuickSave();
+    else if (key == setup.shortcut.load_game)
+      TapeQuickLoad();
+  }
 
 
 #ifndef DEBUG
@@ -615,6 +593,9 @@ void HandleKey(Key key, int key_status)
     {
       switch(key)
       {
+        case KSYM_Escape:
+         RequestQuitGame();
+         break;
 
 #ifdef DEBUG
        case KSYM_0: