if (game_status != GAME_MODE_PLAYING)
return;
- if (!network_player_action_received)
+ /* check if network player actions still missing and game still running */
+ if (!network_player_action_received && !checkGameEnded())
return; /* failed to get network player actions in time */
/* do not yet reset "network_player_action_received" (for tape.pausing) */
stored_player[i].effective_action = stored_player[i].action;
}
- if (network_playing)
+ if (network_playing && !checkGameEnded())
SendToServer_MovePlayer(summarized_player_action);
// summarize all actions at local players mapped input device position
{
game.restart_game_message = NULL;
- if (Request(message, REQ_ASK | REQ_STAY_CLOSED))
+ boolean has_started_game = hasStartedNetworkGame();
+ int request_mode = (has_started_game ? REQ_ASK : REQ_CONFIRM);
+
+ if (Request(message, request_mode | REQ_STAY_CLOSED) && has_started_game)
{
StartGameActions(network.enabled, setup.autorecord, level.random_seed);
}
}
if (last_game_over != game_over)
- game.restart_game_message = "Game over! Play it again?";
+ game.restart_game_message = (hasStartedNetworkGame() ?
+ "Game over! Play it again?" :
+ "Game over!");
last_game_over = game_over;
}