equal
deleted
inserted
replaced
4 procedure connectOfficialServer; |
4 procedure connectOfficialServer; |
5 |
5 |
6 procedure initModule; |
6 procedure initModule; |
7 procedure freeModule; |
7 procedure freeModule; |
8 procedure sendNet(s: shortstring); |
8 procedure sendNet(s: shortstring); |
|
9 procedure sendNetLn(s: shortstring); |
9 |
10 |
10 implementation |
11 implementation |
11 uses SDLh, uFLIPC, uFLTypes, uFLUICallback, uFLNetTypes, uFLUtils; |
12 uses SDLh, uFLIPC, uFLTypes, uFLUICallback, uFLNetTypes, uFLUtils; |
12 |
13 |
13 const endCmd: string = #10 + #10; |
14 const endCmd: string = #10 + #10; |
79 procedure handler_MS; |
80 procedure handler_MS; |
80 var cmd: TCmdParamS; |
81 var cmd: TCmdParamS; |
81 f: boolean; |
82 f: boolean; |
82 begin |
83 begin |
83 sendUI(mtNetData, @state.cmd, sizeof(state.cmd)); |
84 sendUI(mtNetData, @state.cmd, sizeof(state.cmd)); |
84 writeln('handler_MS'); |
|
85 cmd.cmd:= Succ(state.cmd); |
85 cmd.cmd:= Succ(state.cmd); |
86 |
86 |
87 repeat |
87 repeat |
88 cmd.str1:= getShortString; |
88 cmd.str1:= getShortString; |
89 f:= cmd.str1[0] <> #0; |
89 f:= cmd.str1[0] <> #0; |
97 writeln('handler_S'); |
97 writeln('handler_S'); |
98 handleTail() |
98 handleTail() |
99 end; |
99 end; |
100 |
100 |
101 procedure handler_SL; |
101 procedure handler_SL; |
102 begin |
102 var cmd: TCmdParamSL; |
103 writeln('handler_SL'); |
103 begin |
|
104 cmd.cmd:= state.cmd; |
|
105 cmd.str1:= getShortString; |
|
106 cmd.str2:= getShortString; // FIXME should be long string |
|
107 sendUI(mtNetData, @cmd, sizeof(cmd)); |
104 handleTail() |
108 handleTail() |
105 end; |
109 end; |
106 |
110 |
107 procedure handler_SMS; |
111 procedure handler_SMS; |
108 begin |
112 begin |
193 end; |
197 end; |
194 |
198 |
195 getNextChar:= state.buf[state.bufpos]; |
199 getNextChar:= state.buf[state.bufpos]; |
196 end; |
200 end; |
197 |
201 |
198 function netWriter(sock: PTCPSocket): LongInt; cdecl; export; |
|
199 begin |
|
200 netWriter:= 0; |
|
201 end; |
|
202 |
|
203 function netReader(data: pointer): LongInt; cdecl; export; |
202 function netReader(data: pointer): LongInt; cdecl; export; |
204 var c: char; |
203 var c: char; |
205 ipaddr: TIPAddress; |
204 ipaddr: TIPAddress; |
206 begin |
205 begin |
207 netReader:= 0; |
206 netReader:= 0; |
208 |
207 |
209 if SDLNet_ResolveHost(ipaddr, PChar('netserver.hedgewars.org'), 46631) = 0 then |
208 if SDLNet_ResolveHost(ipaddr, PChar('netserver.hedgewars.org'), 46631) = 0 then |
210 sock:= SDLNet_TCP_Open(ipaddr); |
209 sock:= SDLNet_TCP_Open(ipaddr); |
211 |
|
212 SDL_CreateThread(@netWriter, 'netWriter', sock); |
|
213 |
210 |
214 repeat |
211 repeat |
215 c:= getNextChar; |
212 c:= getNextChar; |
216 //writeln('>>>>> ', c, ' [', letters[state.l], '] ', commands[state.l]); |
213 //writeln('>>>>> ', c, ' [', letters[state.l], '] ', commands[state.l]); |
217 if c = #0 then |
214 if c = #0 then |
236 handleTail() |
233 handleTail() |
237 end |
234 end |
238 end |
235 end |
239 until state.netState = netDisconnected; |
236 until state.netState = netDisconnected; |
240 |
237 |
|
238 SDLNet_TCP_Close(sock); |
241 sock:= nil; |
239 sock:= nil; |
242 |
240 |
243 writeln('[NET] netReader: disconnected'); |
241 writeln('[NET] netReader: disconnected'); |
244 end; |
242 end; |
245 |
243 |
246 procedure sendNet(s: shortstring); |
244 procedure sendNet(s: shortstring); |
247 begin |
245 begin |
248 writeln('[NET] Send: ', s); |
246 writeln('[NET] Send: ', s); |
249 ipcToNet(s + endCmd); |
247 ipcToNet(s + endCmd); |
|
248 end; |
|
249 |
|
250 procedure sendNetLn(s: shortstring); |
|
251 begin |
|
252 writeln('[NET] Send: ', s); |
|
253 ipcToNet(s + #10); |
250 end; |
254 end; |
251 |
255 |
252 function getShortString: shortstring; |
256 function getShortString: shortstring; |
253 var s: shortstring; |
257 var s: shortstring; |
254 c: char; |
258 c: char; |
284 |
288 |
285 state.l:= 0; |
289 state.l:= 0; |
286 state.netState:= netConnecting; |
290 state.netState:= netConnecting; |
287 |
291 |
288 netReaderThread:= SDL_CreateThread(@netReader, 'netReader', nil); |
292 netReaderThread:= SDL_CreateThread(@netReader, 'netReader', nil); |
|
293 SDL_DetachThread(netReaderThread) |
289 end; |
294 end; |
290 |
295 |
291 procedure initModule; |
296 procedure initModule; |
292 begin |
297 begin |
293 sock:= nil; |
298 sock:= nil; |