# HG changeset patch # User unc0rr # Date 1351800580 -14400 # Node ID 6b074de32beadd30b9e5c6addcd6a2c465cc2bee # Parent c7d258a4358ef7b2b718d56560313ed52b761e14 Send ROOM UPD message when team is added/deleted from room, and when game starts or finishes diff -r c7d258a4358e -r 6b074de32bea gameServer/Actions.hs --- a/gameServer/Actions.hs Thu Nov 01 08:59:16 2012 -0400 +++ b/gameServer/Actions.hs Fri Nov 02 00:09:40 2012 +0400 @@ -62,6 +62,7 @@ | ModifyRoom (RoomInfo -> RoomInfo) | ModifyServerInfo (ServerInfo -> ServerInfo) | AddRoom B.ByteString B.ByteString + | SendUpdateOnThisRoom | CheckRegistered | ClearAccountsCache | ProcessAccountInfo AccountInfo @@ -319,6 +320,16 @@ io $ removeRoom rnc ri +processAction SendUpdateOnThisRoom = do + Just clId <- gets clientIndex + proto <- client's clientProto + rnc <- gets roomsClients + ri <- io $ clientRoomM rnc clId + rm <- io $ room'sM rnc id ri + chans <- liftM (map sendChan) $! sameProtoClientsS proto + processAction $ AnswerClients chans ("ROOM" : "UPD" : name rm : roomInfo (name rm) rm) + + processAction UnreadyRoomClients = do ri <- clientRoomA roomPlayers <- roomClientsS ri @@ -348,6 +359,7 @@ } ) : UnreadyRoomClients + : SendUpdateOnThisRoom : answerRemovedTeams diff -r c7d258a4358e -r 6b074de32bea gameServer/HWProtoInRoomState.hs --- a/gameServer/HWProtoInRoomState.hs Thu Nov 01 08:59:16 2012 -0400 +++ b/gameServer/HWProtoInRoomState.hs Fri Nov 02 00:09:40 2012 +0400 @@ -72,6 +72,7 @@ [Warning "restricted"] else [ModifyRoom (\r -> r{teams = teams r ++ [newTeam ci clNick r teamColor]}), + SendUpdateOnThisRoom, ModifyClient (\c -> c{teamsInGame = teamsInGame c + 1, clientClan = Just teamColor}), AnswerClients clChan ["TEAM_ACCEPTED", tName], AnswerClients othChans $ teamToNet $ newTeam ci clNick rm teamColor, @@ -106,6 +107,7 @@ [ProtocolError "Not team owner!"] else [RemoveTeam tName, + SendUpdateOnThisRoom, ModifyClient (\c -> c{ teamsInGame = teamsInGame c - 1, @@ -194,6 +196,7 @@ } ) , AnswerClients chans ["RUN_GAME"] + , SendUpdateOnThisRoom , AnswerClients chans $ "CLIENT_FLAGS" : "+g" : nicks , ModifyRoomClients (\c -> c{isInGame = True}) ]