# HG changeset patch # User unc0rr # Date 1403553008 -14400 # Node ID 9558b03807794dd332019f45bf6e4d0f36d9120a # Parent 05a5762ab12cb2dbab4cea633a2bc8d19e423d42 Inform engine if player is back after being disconnected diff -r 05a5762ab12c -r 9558b0380779 doc/protocol.txt --- a/doc/protocol.txt Mon Jun 23 22:22:29 2014 +0400 +++ b/doc/protocol.txt Mon Jun 23 23:50:08 2014 +0400 @@ -18,12 +18,14 @@ 'E' + <текст> сообщение об ошибке ',' /skip 't' + № /taunt № + 'g' + teams of user 'nick' are controlled again (synced msg) фронтенд клиенту: 'e' + <команда> выполнить "/<команда>" 'T' + {L,N,D} тип игры (локальная, сетевая, просмотр демо) 'W' + <текст> сообщение о нефатальной ошибке 'F' + команда team вылетела в сетевой игре + 'G' + user 'nick' is back (unsynced msg) 'o' stop syncing, game over! Клиент фронтенду: diff -r 05a5762ab12c -r 9558b0380779 gameServer/HWProtoLobbyState.hs --- a/gameServer/HWProtoLobbyState.hs Mon Jun 23 22:22:29 2014 +0400 +++ b/gameServer/HWProtoLobbyState.hs Mon Jun 23 23:50:08 2014 +0400 @@ -61,6 +61,7 @@ let owner = find isMaster jRoomClients let chans = map sendChan (cl : jRoomClients) let isBanned = host cl `elem` roomBansList jRoom + let hasTeamsInGame = (isJust $ gameInfo jRoom) && (or . map (\t -> teamowner t == nick cl) . teamsAtStart . fromJust $ gameInfo jRoom) return $ if isNothing maybeRI then [Warning $ loc "No such room"] @@ -87,6 +88,7 @@ ++ answerTeams cl jRoom ++ watchRound cl jRoom chans ++ [AnswerClients [sendChan cl] ["CHAT", "[greeting]", greeting jRoom] | greeting jRoom /= ""] + ++ if hasTeamsInGame then ["EM", toEngineMsg $ 'G' `B.cons` nick cl] else [] where sendStateFlags cl clients = AnswerClients [sendChan cl] . concat . intersperse [""] . filter (not . null) . concat $