# HG changeset patch # User unc0rr # Date 1449435941 -10800 # Node ID 2bf0491d5e88c5d6abc937d4b1b169b0f93abf9f # Parent 42a9dd7b724caa6960af01781032394771040030 Client flags handling implementation start diff -r 42a9dd7b724c -r 2bf0491d5e88 hedgewars/uFLNetProtocol.pas --- a/hedgewars/uFLNetProtocol.pas Sun Dec 06 20:36:21 2015 +0300 +++ b/hedgewars/uFLNetProtocol.pas Mon Dec 07 00:05:41 2015 +0300 @@ -269,18 +269,46 @@ sendUI(mtLobbyChatLine, @s[1], length(s)); end; +var flags: array[TClientFlag] of LongInt; + isFlagsLine: boolean; procedure handler_CLIENT_FLAGS(var p: TCmdParamS); +var f: TClientFlag; begin + for f:= Low(TClientFlag) to High(TClientFlag) do + flags[f]:= 0; + + isFlagsLine:= true; end; procedure handler_CLIENT_FLAGS_s(var s: TCmdParamS); +var isRemoval: boolean; + flagValue, i: LongInt; begin + if isFlagsLine then + begin + if s.str[1] = '+' then flagValue:= 1 else flagValue:= -1; + for i:= 2 to Length(s.str1) do + case s.str[1] of + 'r': flags[cfReady]:= flagValue; + 'u': flags[cfRegistered]:= flagValue; + 'i': flags[cfInRoom]:= flagValue; + 'c': flags[cfContributor]:= flagValue; + 'g': flags[cfInGame]:= flagValue; + 'h': flags[cfRoomAdmin]:= flagValue; + 'a': flags[cfServerAdmin]:= flagValue; + end; + + isFlagsLine:= false; + end else + begin + + end end; procedure handler_CONNECTED(var p: TCmdParami); begin sendUI(mtConnected, nil, 0); - writeln('Server features version ', p.param1); + //writeln('Server features version ', p.param1); sendNet('PROTO' + #10 + '51'); sendNet('NICK' + #10 + 'qmlfrontend'); end; diff -r 42a9dd7b724c -r 2bf0491d5e88 hedgewars/uFLTypes.pas --- a/hedgewars/uFLTypes.pas Sun Dec 06 20:36:21 2015 +0300 +++ b/hedgewars/uFLTypes.pas Mon Dec 07 00:05:41 2015 +0300 @@ -16,6 +16,8 @@ TFLIBEvent = (flibGameFinished); + TClientFlag = (cfReady, cfRegistered, cfInRoom, cfContributor, cfInGame, cfRoomAdmin, cfServerAdmin); + TIPCMessage = record str: shortstring; len: Longword;