X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Finit.c;h=965706fed1c51d46e25e5f60856ef691c318bfe3;hp=8dec027785859377910914d56630c8a05aeeadd9;hb=5449f78b713cb033281266bbb9f46a1de4b8f89e;hpb=5eb97ccbaffc671f05dd73bf0548c1666414017e diff --git a/src/init.c b/src/init.c index 8dec0277..965706fe 100644 --- a/src/init.c +++ b/src/init.c @@ -5051,6 +5051,9 @@ void Execute_Command(char *command) { Error(ERR_EXIT_HELP, "unrecognized command '%s'", command); } + + /* disable networking if any valid command was recognized */ + options.network = setup.network_mode = FALSE; } static void InitSetup() @@ -5087,7 +5090,6 @@ static void InitPlayerInfo() } local_player->connected_locally = TRUE; - local_player->connected_network = TRUE; } static void InitArtworkInfo() @@ -5616,17 +5618,28 @@ void InitNetworkSettings() void InitNetworkServer() { - if (!network.enabled) + if (!network.enabled || network.connected) return; -#if defined(NETWORK_AVALIABLE) + LimitScreenUpdates(FALSE); + if (!ConnectToServer(network.server_host, network.server_port)) - Error(ERR_EXIT, "cannot connect to network game server"); + { + network.enabled = FALSE; - SendToServer_PlayerName(setup.player_name); - SendToServer_ProtocolVersion(); - SendToServer_NrWanted(setup.network_player_nr + 1); -#endif + setup.network_mode = FALSE; + } + else + { + SendToServer_PlayerName(setup.player_name); + SendToServer_ProtocolVersion(); + SendToServer_NrWanted(setup.network_player_nr + 1); + + network.connected = TRUE; + } + + /* short time to recognize result of network initialization */ + Delay_WithScreenUpdates(1000); } static boolean CheckArtworkConfigForCustomElements(char *filename) @@ -6089,6 +6102,8 @@ void OpenAll() return; } + InitNetworkServer(); + SetGameStatus(GAME_MODE_MAIN); FadeSetEnterScreen(); @@ -6101,8 +6116,6 @@ void OpenAll() DrawMainMenu(); - InitNetworkServer(); - #if 0 Error(ERR_DEBUG, "::: SDL_GetBasePath() == '%s'", SDL_GetBasePath());