X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fnetwork.c;h=742cea5792e6a0cd639b851b12a4c92f2916c329;hb=5eb97ccbaffc671f05dd73bf0548c1666414017e;hp=1c9e0b0d30a10b063a504ddbc5af5fb6ff670f81;hpb=bb8ea93cf34a36020e63e5d4ef4263eeb49fd17c;p=rocksndiamonds.git diff --git a/src/network.c b/src/network.c index 1c9e0b0d..742cea57 100644 --- a/src/network.c +++ b/src/network.c @@ -56,7 +56,7 @@ static boolean stop_network_game = FALSE; static void SendBufferToServer(int size) { - if (!options.network) + if (!network.enabled) return; realbuffer[0] = realbuffer[1] = realbuffer[2] = 0; @@ -544,12 +544,17 @@ static void Handle_OP_STOP_PLAYING() if (game_status == GAME_MODE_PLAYING) { - if (buffer[2] == NETWORK_STOP_BY_PLAYER) - Request("Network game stopped by player!", REQ_CONFIRM); - else if (buffer[2] == NETWORK_STOP_BY_ERROR) - Request("Network game stopped due to internal error!", REQ_CONFIRM); - else - Request("Network game stopped!", REQ_CONFIRM); + int client_nr = buffer[0]; + int index_nr = client_nr - 1; + boolean stopped_by_remote_player = (index_nr != local_player->index_nr); + char *message = (buffer[2] == NETWORK_STOP_BY_PLAYER ? + "Network game stopped by player!" : + buffer[2] == NETWORK_STOP_BY_ERROR ? + "Network game stopped due to internal error!" : + "Network game stopped!"); + + if (buffer[2] != NETWORK_STOP_BY_PLAYER || stopped_by_remote_player) + Request(message, REQ_CONFIRM | REQ_STAY_CLOSED); } SetGameStatus(GAME_MODE_MAIN);