static boolean checkTextInputKey(Key key)
{
+ static int game_status_last_static = -1;
+ int game_status_last = game_status_last_static; // game status from previous function call
+
+ game_status_last_static = game_status; // set game status for next function call
+
+ // needed after ending game using restart key without asking in BD engine with last life
+ // (to handle race condition due to handling all key events as key event and text event)
+ if (game_status_last == GAME_MODE_PLAYING)
+ return FALSE;
+
// when playing, only handle raw key events and ignore text input
if (game_status == GAME_MODE_PLAYING)
return FALSE;
return;
}
- if (!checkRestartGame("Restart game?"))
- return;
+ if (level.game_engine_type == GAME_ENGINE_TYPE_BD &&
+ setup.bd_multiple_lives && game_status == GAME_MODE_PLAYING)
+ {
+ if (game_bd.global_lives > 1)
+ {
+ if (!checkRestartGame("Restart game?"))
+ return;
+
+ game_bd.global_lives--;
+ }
+ else
+ {
+ RequestQuitGame(FALSE);
+
+ return;
+ }
+ }
+ else
+ {
+ if (!checkRestartGame("Restart game?"))
+ return;
+ }
StartGameActions(network.enabled, setup.autorecord, level.random_seed);
}