diff --git a/src/game/g_net.pas b/src/game/g_net.pas
index 11acd5f079370213b7f3db2e0c7799149a4670d2..2518bede333e6272e934a02050124f2dbf992a9a 100644 (file)
--- a/src/game/g_net.pas
+++ b/src/game/g_net.pas
@@ -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
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
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;
Result := N;
end;
+
function g_Net_Init(): Boolean;
var
F: TextFile;
g_Net_SaveBanList();
end;
- Result := (enet_initialize() = 0);
+ //Result := (enet_initialize() = 0);
+ Result := enet_init_success;
end;
procedure g_Net_Flush();
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;
begin
g_Net_Cleanup();
- enet_deinitialize();
+ //enet_deinitialize();
NetInitDone := False;
end;
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);
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);
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
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;