diff -r 86c13e5662f1 -r 2947f06e8533 hedgewars/uFLNetProtocol.pas --- a/hedgewars/uFLNetProtocol.pas Sat Nov 21 23:56:41 2015 +0300 +++ b/hedgewars/uFLNetProtocol.pas Sun Nov 22 18:06:32 2015 +0300 @@ -128,7 +128,7 @@ procedure handler_LOBBY_JOINED_s(var s: TCmdParamS); begin - if s.str1 = 'qmlfrontend' then + if s.str1 = 'qmlfrontend' then begin sendUI(mtMoveToLobby, nil, 0); sendNet('LIST'); @@ -164,44 +164,46 @@ begin end; -type TRoomAction = (raUnknown, raAdd, raUpdate, raRemove); -const raRoomInfoLength: array[TRoomAction] of integer = (1, 9, 10, 1); -const raRoomAction: array[TRoomAction] of TMessageType = (mtAddRoom, mtAddRoom, mtUpdateRoom, mtRemoveRoom); var roomInfo: string; roomLinesCount: integer; - roomAction: TRoomAction; -procedure handler_ROOM(var p: TCmdParam); +procedure handler_ROOM_ADD(var p: TCmdParam); begin roomInfo:= ''; - roomLinesCount:= 0; - roomAction:= raUnknown + roomLinesCount:= 0 end; -procedure handler_ROOM_s(var s: TCmdParamS); +procedure handler_ROOM_ADD_s(var s: TCmdParamS); begin - if roomAction = raUnknown then + roomInfo:= roomInfo + s.str1 + #10; + inc(roomLinesCount); + + if roomLinesCount = 9 then begin - if s.str1 = 'ADD' then - roomAction:= raAdd - else - if s.str1 = 'UPD' then - roomAction:= raUpdate - else - if s.str1 = 'DEL' then - roomAction:= raRemove - end - else begin - roomInfo:= roomInfo + s.str1 + #10; - inc(roomLinesCount); + sendUI(mtAddRoom, @roomInfo[1], length(roomInfo) - 1); + roomInfo:= ''; + roomLinesCount:= 0 + end; +end; + +procedure handler_ROOM_DEL(var p: TCmdParamS); +begin + sendUI(mtRemoveRoom, @p.str1[1], length(p.str1)); +end; - if roomLinesCount = raRoomInfoLength[roomAction] then - begin - sendUI(raRoomAction[roomAction], @roomInfo[1], length(roomInfo) - 1); - roomLinesCount:= 0; - roomInfo:= '' - end; - end; +procedure handler_ROOM_UPD(var p: TCmdParam); +begin + roomInfo:= ''; + roomLinesCount:= 0 +end; + +procedure handler_ROOM_UPD_s(var s: TCmdParamS); +begin + roomInfo:= roomInfo + s.str1 + #10; + inc(roomLinesCount); + + if roomLinesCount = 10 then + sendUI(mtUpdateRoom, @roomInfo[1], length(roomInfo) - 1); end; procedure handler_ROOMS(var p: TCmdParam); @@ -271,8 +273,10 @@ PHandler(@handler_LEFT_s), PHandler(@handler_LOBBY_JOINED), PHandler(@handler_LOBBY_JOINED_s), PHandler(@handler_LOBBY_LEFT), PHandler(@handler_NICK), PHandler(@handler_NOTICE), PHandler(@handler_PING), - PHandler(@handler_PING_s), PHandler(@handler_PROTO), PHandler(@handler_ROOM), - PHandler(@handler_ROOM_s), PHandler(@handler_ROOMS), PHandler(@handler_ROOMS_s), + PHandler(@handler_PING_s), PHandler(@handler_PROTO), PHandler(@handler_ROOMS), + PHandler(@handler_ROOMS_s), PHandler(@handler_ROOM_ADD), + PHandler(@handler_ROOM_ADD_s), PHandler(@handler_ROOM_DEL), + PHandler(@handler_ROOM_UPD), PHandler(@handler_ROOM_UPD_s), PHandler(@handler_ROUND_FINISHED), PHandler(@handler_RUN_GAME), PHandler(@handler_SERVER_AUTH), PHandler(@handler_SERVER_MESSAGE), PHandler(@handler_SERVER_VARS), PHandler(@handler_TEAM_ACCEPTED), @@ -303,7 +307,7 @@ begin isInRoom:= false; s:= 'PART'; - if length(msg) > 0 then + if length(msg) > 0 then s:= s + #10 + msg; sendNet(s); sendUI(mtMoveToLobby, nil, 0);