rnd-20070401-2-src
[rocksndiamonds.git] / src / tools.c
index ba774925f95d7128c5a3c9c8be3f48cbdf8b9aa8..3dfdfa922cc9ff4bbe3e53135011600a232c7056 100644 (file)
@@ -662,25 +662,46 @@ void FadeCrossSaveBackbuffer()
   BlitBitmap(backbuffer, bitmap_db_cross, 0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0);
 }
 
+static void FadeSetLeaveNext(struct TitleFadingInfo fading_leave, boolean set)
+{
+  static struct TitleFadingInfo fading_leave_stored;
+
+  if (set)
+    fading_leave_stored = fading_leave;
+  else
+    fading = fading_leave_stored;
+}
+
 void FadeSetEnterMenu()
 {
   fading = menu.enter_menu;
+
+  FadeSetLeaveNext(fading, TRUE);      /* (keep same fade mode) */
 }
 
 void FadeSetLeaveMenu()
 {
   fading = menu.leave_menu;
+
+  FadeSetLeaveNext(fading, TRUE);      /* (keep same fade mode) */
 }
 
-void FadeSetStartItem()
+void FadeSetEnterScreen()
 {
-  fading = menu.start_item;
+  fading = menu.enter_screen[game_status];
+
+  FadeSetLeaveNext(menu.leave_screen[game_status], TRUE);      /* store */
+}
+
+void FadeSetLeaveScreen()
+{
+  FadeSetLeaveNext(menu.leave_screen[game_status], FALSE);     /* recall */
 }
 
 void FadeSetFromType(int type)
 {
   if (type & TYPE_ENTER_SCREEN)
-    FadeSetStartItem();
+    FadeSetEnterScreen();
   else if (type & TYPE_ENTER)
     FadeSetEnterMenu();
   else if (type & TYPE_LEAVE)
@@ -2917,6 +2938,11 @@ boolean Request(char *text, unsigned int req_state)
        case EVENT_KEYPRESS:
          switch (GetEventKey((KeyEvent *)&event, TRUE))
          {
+           case KSYM_space:
+             if (req_state & REQ_CONFIRM)
+               result = 1;
+             break;
+
            case KSYM_Return:
              result = 1;
              break;
@@ -2928,6 +2954,7 @@ boolean Request(char *text, unsigned int req_state)
            default:
              break;
          }
+
          if (req_state & REQ_PLAYER)
            result = 0;
          break;