hedgewars/uFLNet.pas
branchqmlfrontend
changeset 10900 6a805e822074
parent 10898 f373838129c2
child 10929 8ebf01f75d9f
equal deleted inserted replaced
10898:f373838129c2 10900:6a805e822074
     9 implementation
     9 implementation
    10 uses SDLh;
    10 uses SDLh;
    11 
    11 
    12 var sock: PTCPSocket;
    12 var sock: PTCPSocket;
    13     fds: PSDLNet_SocketSet;
    13     fds: PSDLNet_SocketSet;
    14     buf: shortstring;
    14     netReaderThread: PSDL_Thread;
       
    15     sockbuf: shortstring;
       
    16     sockbufpos: byte;
       
    17 
       
    18 function getNextChar: char;
       
    19 var r: byte;
       
    20 begin
       
    21     if sockbufpos < byte(sockbuf[0]) then
       
    22     begin
       
    23         inc(sockbufpos);
       
    24         getNextChar:= sockbuf[sockbufpos];
       
    25     end else
       
    26     begin
       
    27         r:= SDLNet_TCP_Recv(sock, @sockbuf[1], 255);
       
    28         if r > 0 then
       
    29         begin
       
    30             sockbufpos:= 1;
       
    31             sockbuf[0]:= char(i);
       
    32             getNextChar:= sockbuf[1];
       
    33         end else
       
    34         begin
       
    35             sockbufpos:= 0;
       
    36             sockbuf[0]:= #0;
       
    37             getNextChar:= #0
       
    38         end;
       
    39 end;
    15 
    40 
    16 function netReader(data: pointer): LongInt; cdecl; export;
    41 function netReader(data: pointer): LongInt; cdecl; export;
    17 begin
    42 begin
    18 end;
    43 end;
    19 
    44 
    24         exit;
    49         exit;
    25 
    50 
    26     if SDLNet_ResolveHost(ipaddr, PChar('netserver.hedgewars.org'), 46631) = 0 then
    51     if SDLNet_ResolveHost(ipaddr, PChar('netserver.hedgewars.org'), 46631) = 0 then
    27         sock:= SDLNet_TCP_Open(ipaddr);
    52         sock:= SDLNet_TCP_Open(ipaddr);
    28 
    53 
    29     callbackListenerThread:= SDL_CreateThread(@listener{$IFDEF SDL2}, 'ipcListener'{$ENDIF}, nil);
    54     sockbufpos:= 0;
       
    55     sockbuf:= '';
       
    56     netReaderThread:= SDL_CreateThread(@netReader{$IFDEF SDL2}, 'netReader'{$ENDIF}, nil);
    30 end;
    57 end;
    31 
    58 
    32 procedure initModule;
    59 procedure initModule;
    33 begin
    60 begin
    34     sock:= nil;
    61     sock:= nil;