hedgewars/uFLNetProtocol.pas
branchqmlfrontend
changeset 11425 2947f06e8533
parent 11424 86c13e5662f1
child 11429 d96a37de1076
equal deleted inserted replaced
11424:86c13e5662f1 11425:2947f06e8533
   126 begin
   126 begin
   127 end;
   127 end;
   128 
   128 
   129 procedure handler_LOBBY_JOINED_s(var s: TCmdParamS);
   129 procedure handler_LOBBY_JOINED_s(var s: TCmdParamS);
   130 begin
   130 begin
   131     if s.str1 = 'qmlfrontend' then 
   131     if s.str1 = 'qmlfrontend' then
   132     begin
   132     begin
   133         sendUI(mtMoveToLobby, nil, 0);
   133         sendUI(mtMoveToLobby, nil, 0);
   134         sendNet('LIST');
   134         sendNet('LIST');
   135     end;
   135     end;
   136 
   136 
   162 
   162 
   163 procedure handler_PROTO(var p: TCmdParami);
   163 procedure handler_PROTO(var p: TCmdParami);
   164 begin
   164 begin
   165 end;
   165 end;
   166 
   166 
   167 type TRoomAction = (raUnknown, raAdd, raUpdate, raRemove);
       
   168 const raRoomInfoLength: array[TRoomAction] of integer = (1, 9, 10, 1);
       
   169 const raRoomAction: array[TRoomAction] of TMessageType = (mtAddRoom, mtAddRoom, mtUpdateRoom, mtRemoveRoom);
       
   170 var roomInfo: string;
   167 var roomInfo: string;
   171     roomLinesCount: integer;
   168     roomLinesCount: integer;
   172     roomAction: TRoomAction;
   169 
   173 
   170 procedure handler_ROOM_ADD(var p: TCmdParam);
   174 procedure handler_ROOM(var p: TCmdParam);
       
   175 begin
   171 begin
   176     roomInfo:= '';
   172     roomInfo:= '';
   177     roomLinesCount:= 0;
   173     roomLinesCount:= 0
   178     roomAction:= raUnknown
   174 end;
   179 end;
   175 
   180 
   176 procedure handler_ROOM_ADD_s(var s: TCmdParamS);
   181 procedure handler_ROOM_s(var s: TCmdParamS);
   177 begin
   182 begin
   178     roomInfo:= roomInfo + s.str1 + #10;
   183     if roomAction = raUnknown then
   179     inc(roomLinesCount);
   184     begin
   180 
   185         if s.str1 = 'ADD' then
   181     if roomLinesCount = 9 then
   186             roomAction:= raAdd
   182     begin
   187         else
   183         sendUI(mtAddRoom, @roomInfo[1], length(roomInfo) - 1);
   188             if s.str1 = 'UPD' then
   184         roomInfo:= '';
   189                 roomAction:= raUpdate
   185         roomLinesCount:= 0
   190             else
       
   191                 if s.str1 = 'DEL' then
       
   192                     roomAction:= raRemove
       
   193     end
       
   194     else begin
       
   195         roomInfo:= roomInfo + s.str1 + #10;
       
   196         inc(roomLinesCount);
       
   197 
       
   198         if roomLinesCount = raRoomInfoLength[roomAction] then
       
   199         begin
       
   200             sendUI(raRoomAction[roomAction], @roomInfo[1], length(roomInfo) - 1);
       
   201             roomLinesCount:= 0;
       
   202             roomInfo:= ''
       
   203         end;
       
   204     end;
   186     end;
       
   187 end;
       
   188 
       
   189 procedure handler_ROOM_DEL(var p: TCmdParamS);
       
   190 begin
       
   191     sendUI(mtRemoveRoom, @p.str1[1], length(p.str1));
       
   192 end;
       
   193 
       
   194 procedure handler_ROOM_UPD(var p: TCmdParam);
       
   195 begin
       
   196     roomInfo:= '';
       
   197     roomLinesCount:= 0
       
   198 end;
       
   199 
       
   200 procedure handler_ROOM_UPD_s(var s: TCmdParamS);
       
   201 begin
       
   202     roomInfo:= roomInfo + s.str1 + #10;
       
   203     inc(roomLinesCount);
       
   204 
       
   205     if roomLinesCount = 10 then
       
   206         sendUI(mtUpdateRoom, @roomInfo[1], length(roomInfo) - 1);
   205 end;
   207 end;
   206 
   208 
   207 procedure handler_ROOMS(var p: TCmdParam);
   209 procedure handler_ROOMS(var p: TCmdParam);
   208 begin
   210 begin
   209     roomInfo:= '';
   211     roomInfo:= '';
   269     PHandler(@handler_JOINED), PHandler(@handler_JOINED_s),
   271     PHandler(@handler_JOINED), PHandler(@handler_JOINED_s),
   270     PHandler(@handler_JOINING), PHandler(@handler_KICKED), PHandler(@handler_LEFT),
   272     PHandler(@handler_JOINING), PHandler(@handler_KICKED), PHandler(@handler_LEFT),
   271     PHandler(@handler_LEFT_s), PHandler(@handler_LOBBY_JOINED),
   273     PHandler(@handler_LEFT_s), PHandler(@handler_LOBBY_JOINED),
   272     PHandler(@handler_LOBBY_JOINED_s), PHandler(@handler_LOBBY_LEFT),
   274     PHandler(@handler_LOBBY_JOINED_s), PHandler(@handler_LOBBY_LEFT),
   273     PHandler(@handler_NICK), PHandler(@handler_NOTICE), PHandler(@handler_PING),
   275     PHandler(@handler_NICK), PHandler(@handler_NOTICE), PHandler(@handler_PING),
   274     PHandler(@handler_PING_s), PHandler(@handler_PROTO), PHandler(@handler_ROOM),
   276     PHandler(@handler_PING_s), PHandler(@handler_PROTO), PHandler(@handler_ROOMS),
   275     PHandler(@handler_ROOM_s), PHandler(@handler_ROOMS), PHandler(@handler_ROOMS_s),
   277     PHandler(@handler_ROOMS_s), PHandler(@handler_ROOM_ADD),
       
   278     PHandler(@handler_ROOM_ADD_s), PHandler(@handler_ROOM_DEL),
       
   279     PHandler(@handler_ROOM_UPD), PHandler(@handler_ROOM_UPD_s),
   276     PHandler(@handler_ROUND_FINISHED), PHandler(@handler_RUN_GAME),
   280     PHandler(@handler_ROUND_FINISHED), PHandler(@handler_RUN_GAME),
   277     PHandler(@handler_SERVER_AUTH), PHandler(@handler_SERVER_MESSAGE),
   281     PHandler(@handler_SERVER_AUTH), PHandler(@handler_SERVER_MESSAGE),
   278     PHandler(@handler_SERVER_VARS), PHandler(@handler_TEAM_ACCEPTED),
   282     PHandler(@handler_SERVER_VARS), PHandler(@handler_TEAM_ACCEPTED),
   279     PHandler(@handler_TEAM_COLOR), PHandler(@handler_TEAM_COLOR_s),
   283     PHandler(@handler_TEAM_COLOR), PHandler(@handler_TEAM_COLOR_s),
   280     PHandler(@handler_WARNING));
   284     PHandler(@handler_WARNING));
   301 begin
   305 begin
   302     if isInRoom then
   306     if isInRoom then
   303     begin
   307     begin
   304         isInRoom:= false;
   308         isInRoom:= false;
   305         s:= 'PART';
   309         s:= 'PART';
   306         if length(msg) > 0 then 
   310         if length(msg) > 0 then
   307             s:= s + #10 + msg;
   311             s:= s + #10 + msg;
   308         sendNet(s);
   312         sendNet(s);
   309         sendUI(mtMoveToLobby, nil, 0);
   313         sendUI(mtMoveToLobby, nil, 0);
   310     end
   314     end
   311 end;
   315 end;