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;
-
+ // decrement number of lives (also for intermissions; will be added later)
game_bd.global_lives--;
}
else
{
- RequestQuitGame(FALSE);
-
- return;
+ // new BD game with multiple lives started, so set initial number of lives and global score
+ game_bd.global_lives = level.native_bd_level->caveset->initial_lives;
+ game_bd.global_score = 0;
}
}
- else
- {
- if (!checkRestartGame("Restart game?"))
- return;
- }
StartGameActions(network.enabled, setup.autorecord, level.random_seed);
}