X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_net.pas;h=5b4f71cc082792b254e52657eb4aef42fe0a0fcf;hb=1c9b34fa8d6a2bdd52cc3d0d2bf916c13d7b9bbf;hp=11acd5f079370213b7f3db2e0c7799149a4670d2;hpb=2304c541d7bdbf7de389437482ecdff37fc7fbd5;p=d2df-sdl.git diff --git a/src/game/g_net.pas b/src/game/g_net.pas index 11acd5f..5b4f71c 100644 --- a/src/game/g_net.pas +++ b/src/game/g_net.pas @@ -147,9 +147,9 @@ var NetPongSock: ENetSocket = ENET_SOCKET_NULL; NetUseMaster: Boolean = True; - NetSlistAddr: ENetAddress; NetSlistIP: string = 'mpms.doom2d.org'; NetSlistPort: Word = 25665; + NetSlistList: string = ''; NetClientIP: string = '127.0.0.1'; NetClientPort: Word = 25666; @@ -244,6 +244,10 @@ function g_Net_RequestResFileInfo (resIndex: LongInt; out tf: TNetFileTransfer): function g_Net_AbortResTransfer (var tf: TNetFileTransfer): Boolean; function g_Net_ReceiveResourceFile (resIndex: LongInt; var tf: TNetFileTransfer; strm: TStream): Integer; +function g_Net_IsNetworkAvailable (): Boolean; +procedure g_Net_InitLowLevel (); +procedure g_Net_DeinitLowLevel (); + implementation @@ -257,10 +261,32 @@ const FILE_CHUNK_SIZE = 8192; var + enet_init_success: Boolean = false; g_Net_DownloadTimeout: Single; trans_omsg: TMsg; +function g_Net_IsNetworkAvailable (): Boolean; +begin + result := enet_init_success; +end; + +procedure g_Net_InitLowLevel (); +begin + if enet_init_success then raise Exception.Create('wuta?!'); + enet_init_success := (enet_initialize() = 0); +end; + +procedure g_Net_DeinitLowLevel (); +begin + if enet_init_success then + begin + enet_deinitialize(); + enet_init_success := false; + end; +end; + + //************************************************************************** // // SERVICE FUNCTIONS @@ -332,6 +358,7 @@ begin e_LogWritefln('disconnected client #%d due to file transfer error', [nc.ID], TMsgType.Warning); enet_peer_disconnect(nc.Peer, NET_DISC_FILE_TIMEOUT); clearNetClientTransfers(nc); + g_Net_Slist_ServerPlayerLeaves(); end; @@ -1285,6 +1312,7 @@ begin Result := N; end; + function g_Net_Init(): Boolean; var F: TextFile; @@ -1318,7 +1346,8 @@ begin g_Net_SaveBanList(); end; - Result := (enet_initialize() = 0); + //Result := (enet_initialize() = 0); + Result := enet_init_success; end; procedure g_Net_Flush(); @@ -1385,8 +1414,7 @@ begin NetPeer := nil; NetHost := nil; - g_Net_Slist_NetworkStopped(); - //g_Net_Slist_Disconnect(false); // do not spam console + g_Net_Slist_ServerClosed(); NetMyID := -1; NetPlrUID1 := -1; NetPlrUID2 := -1; @@ -1414,7 +1442,7 @@ procedure g_Net_Free(); begin g_Net_Cleanup(); - enet_deinitialize(); + //enet_deinitialize(); NetInitDone := False; end; @@ -1521,8 +1549,7 @@ begin end; clearNetClients(false); // don't clear array - //if (g_Net_Slist_IsConnectionActive) then g_Net_Slist_Disconnect; - g_Net_Slist_NetworkStopped(); + g_Net_Slist_ServerClosed(); if NetPongSock <> ENET_SOCKET_NULL then enet_socket_destroy(NetPongSock); @@ -1592,7 +1619,6 @@ begin NetOut.Write(Byte(Ord('F'))); NetOut.Write(NetPort); NetOut.Write(ClTime); - //g_Net_Slist_WriteInfo(); TMasterHost.writeInfo(NetOut); NPl := 0; if gPlayer1 <> nil then Inc(NPl); @@ -1620,12 +1646,8 @@ begin IP := ''; Result := 0; - if NetUseMaster then - begin - //g_Net_Slist_Check; - g_Net_Slist_Pulse(); - end; - g_Net_Host_CheckPings; + if NetUseMaster then g_Net_Slist_Pulse(); + g_Net_Host_CheckPings(); while (enet_host_service(NetHost, @NetEvent, 0) > 0) do begin @@ -1729,11 +1751,7 @@ begin g_Console_Add(_lc[I_NET_MSG] + Format(_lc[I_NET_MSG_HOST_DISC], [ID])); Dec(NetClientCount); - if NetUseMaster then - begin - //g_Net_Slist_Update; - g_Net_Slist_Pulse(); - end; + if NetUseMaster then g_Net_Slist_ServerPlayerLeaves(); end; end; end;