rnd-20020417-1-src
[rocksndiamonds.git] / src / events.c
index 4bf6da2d2ece4046f314267a48ae0d589eadee8a..f67bc13ecac7dc8bb5d3aed4e151383cea5b7439 100644 (file)
@@ -176,6 +176,16 @@ void ClearEventQueue()
   }
 }
 
+void ClearPlayerAction()
+{
+  int i;
+
+  /* simulate key release events for still pressed keys */
+  key_joystick_mapping = 0;
+  for (i=0; i<MAX_PLAYERS; i++)
+    stored_player[i].action = 0;
+}
+
 void SleepWhileUnmapped()
 {
   boolean window_unmapped = TRUE;
@@ -269,16 +279,11 @@ void HandleFocusEvent(FocusChangeEvent *event)
 
   if (event->type == EVENT_FOCUSOUT)
   {
-    int i;
-
     KeyboardAutoRepeatOn();
     old_joystick_status = joystick.status;
     joystick.status = JOYSTICK_NOT_AVAILABLE;
 
-    /* simulate key release events for still pressed keys */
-    key_joystick_mapping = 0;
-    for (i=0; i<MAX_PLAYERS; i++)
-      stored_player[i].action = 0;
+    ClearPlayerAction();
   }
   else if (event->type == EVENT_FOCUSIN)
   {
@@ -477,6 +482,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)
@@ -486,6 +492,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
@@ -584,6 +598,9 @@ void HandleKey(Key key, int key_status)
     {
       switch(key)
       {
+        case KSYM_Escape:
+         RequestQuitGame(setup.ask_on_escape);
+         break;
 
 #ifdef DEBUG
        case KSYM_0:
@@ -759,11 +776,9 @@ static int HandleJoystickForAllPlayers()
     joy_action = Joystick(i);
     result |= joy_action;
 
-
     if (!setup.input[i].use_joystick)
       continue;
 
-
     stored_player[i].action = joy_action;
   }