X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Finit.c;h=db1070e45d6e0eac883fa6701a1d02ecc1ec7dad;hb=e02ece0bdcbe2a883a0a104d8b33bf435ad169db;hp=8fb9f80df81798f971ea07192ded0064caba7f09;hpb=014f8db5b98964dddaf817ce5cd8cf7930bc7ae4;p=rocksndiamonds.git diff --git a/src/init.c b/src/init.c index 8fb9f80d..db1070e4 100644 --- a/src/init.c +++ b/src/init.c @@ -5605,30 +5605,41 @@ static void InitArtworkDone() InitGlobalAnimations(); } +void InitNetworkSettings() +{ + InitNetworkInfo(options.network || setup.network_mode, + FALSE, + options.serveronly, + options.server_host, + options.server_port); +} + void InitNetworkServer() { -#if defined(NETWORK_AVALIABLE) - int nr_wanted; -#endif + if (!network.enabled || network.connected) + return; - if (setup.network_mode) - options.network = TRUE; + LimitScreenUpdates(FALSE); - if (!options.network) - return; + ClearRectangle(drawto, 0, 0, WIN_XSIZE, WIN_YSIZE); -#if defined(NETWORK_AVALIABLE) - nr_wanted = Request("Choose player", REQ_PLAYER | REQ_STAY_CLOSED); + if (!ConnectToServer(network.server_host, network.server_port)) + { + network.enabled = FALSE; - if (!ConnectToServer(options.server_host, options.server_port)) - Error(ERR_EXIT, "cannot connect to network game server"); + setup.network_mode = FALSE; + } + else + { + SendToServer_PlayerName(setup.player_name); + SendToServer_ProtocolVersion(); + SendToServer_NrWanted(setup.network_player_nr + 1); - SendToServer_PlayerName(setup.player_name); - SendToServer_ProtocolVersion(); + network.connected = TRUE; + } - if (nr_wanted) - SendToServer_NrWanted(nr_wanted); -#endif + /* short time to recognize result of network initialization */ + Delay(1000); } static boolean CheckArtworkConfigForCustomElements(char *filename) @@ -6001,10 +6012,12 @@ void OpenAll() if (options.execute_command) Execute_Command(options.execute_command); - if (options.serveronly) + InitNetworkSettings(); + + if (network.serveronly) { #if defined(PLATFORM_UNIX) - NetworkServer(options.server_port, options.serveronly); + NetworkServer(network.server_port, TRUE); #else Error(ERR_WARN, "networking only supported in Unix version"); #endif @@ -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());