improved startup speed by optimizing parsing of parameter values
[rocksndiamonds.git] / src / events.c
index d912e8206f80834dda3e85e2cebcff2f6d729e2f..3a303fa5e5fc20155b1e179401e3e79b9ed881e6 100644 (file)
@@ -1386,6 +1386,10 @@ static boolean checkTextInputKey(Key key)
   if (game_status == GAME_MODE_PLAYING)
     return FALSE;
 
+  // ignore raw keys as text input when not in text input mode
+  if (KSYM_RAW(key) && !textinput_status)
+    return FALSE;
+
   // else handle all printable keys as text input
   return KSYM_PRINTABLE(key);
 }
@@ -1855,19 +1859,15 @@ static void HandleKeysSpecial(Key key)
     {
       DumpTape(&tape);
     }
+    else if (strSuffix(cheat_input, ":undo-tape") ||
+            strSuffix(cheat_input, ":ut"))
+    {
+      UndoTape();
+    }
     else if (strSuffix(cheat_input, ":fix-tape") ||
             strSuffix(cheat_input, ":ft"))
     {
-      /* fix single-player tapes that contain player input for more than one
-        player (due to a bug in 3.3.1.2 and earlier versions), which results
-        in playing levels with more than one player in multi-player mode,
-        even though the tape was originally recorded in single-player mode */
-
-      // remove player input actions for all players but the first one
-      for (i = 1; i < MAX_PLAYERS; i++)
-       tape.player_participates[i] = FALSE;
-
-      tape.changed = TRUE;
+      FixTape_ForceSinglePlayer();
     }
     else if (strSuffix(cheat_input, ":save-native-level") ||
             strSuffix(cheat_input, ":snl"))