equal
deleted
inserted
replaced
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; |