# HG changeset patch
# User unc0rr
# Date 1337890002 -14400
# Node ID cfee057128969556897eef835f4122d343e0a301
# Parent  fa2d09868ac64eb7cac4d10134b474962528b876
 - Restore pre-r9257cf8e7af2  behavior
 - Get rid of leftTeams, send REMOVE_TEAM immediately instead

diff -r fa2d09868ac6 -r cfee05712896 gameServer/Actions.hs
--- a/gameServer/Actions.hs	Wed May 23 16:51:37 2012 -0400
+++ b/gameServer/Actions.hs	Fri May 25 00:06:42 2012 +0400
@@ -312,18 +312,17 @@
     ri <- clientRoomA
     thisRoomChans <- liftM (map sendChan) $ roomClientsS ri
     clNick <- client's nick
-    answerRemovedTeams <- io $ 
-         room'sM rnc (map (\t -> AnswerClients thisRoomChans ["REMOVE_TEAM", t]) . leftTeams . fromJust . gameInfo) ri
     
-    mapM_ processAction $ SaveReplay
-        : ModifyRoom
+    mapM_ processAction [
+        SaveReplay
+        , ModifyRoom
             (\r -> r{
                 gameInfo = Nothing,
                 readyPlayers = 0
                 }
             )
-        : UnreadyRoomClients
-        : answerRemovedTeams
+        , UnreadyRoomClients
+        ]
 
         
 processAction (SendTeamRemovalMessage teamName) = do
@@ -332,9 +331,8 @@
         AnswerClients chans ["EM", rmTeamMsg],
         ModifyRoom (\r -> r{
                 gameInfo = liftM (\g -> g{
-                teamsInGameNumber = teamsInGameNumber g - 1
-                , roundMsgs = roundMsgs g Seq.|> rmTeamMsg
-                , leftTeams = teamName : leftTeams g
+                    teamsInGameNumber = teamsInGameNumber g - 1
+                    , roundMsgs = roundMsgs g Seq.|> rmTeamMsg
                 }) $ gameInfo r
             })
         ]
@@ -353,16 +351,10 @@
     ri <- clientRoomA
     inGame <- io $ room'sM rnc (isJust . gameInfo) ri
     chans <- othersChans
-    if not $ inGame then
-            mapM_ processAction [
-                ModifyRoom (\r -> r{teams = Prelude.filter (\t -> teamName /= teamname t) $ teams r})
-                , AnswerClients chans ["REMOVE_TEAM", teamName]
-                ]
-        else
-            mapM_ processAction [
-                ModifyRoom (\r -> r{teams = Prelude.filter (\t -> teamName /= teamname t) $ teams r})
-                , SendTeamRemovalMessage teamName
-                ]
+    mapM_ processAction $ 
+        ModifyRoom (\r -> r{teams = Prelude.filter (\t -> teamName /= teamname t) $ teams r})
+        : AnswerClients chans ["REMOVE_TEAM", teamName]
+        : [SendTeamRemovalMessage teamName | inGame]
 
 
 processAction (RemoveClientTeams clId) = do
diff -r fa2d09868ac6 -r cfee05712896 gameServer/CoreTypes.hs
--- a/gameServer/CoreTypes.hs	Wed May 23 16:51:37 2012 -0400
+++ b/gameServer/CoreTypes.hs	Fri May 25 00:06:42 2012 +0400
@@ -67,7 +67,6 @@
     GameInfo
     {
         roundMsgs :: Seq B.ByteString,
-        leftTeams :: [B.ByteString],
         teamsAtStart :: [TeamInfo],
         teamsInGameNumber :: Int,
         allPlayersHaveRegisteredAccounts :: Bool,
@@ -79,7 +78,6 @@
 newGameInfo = 
     GameInfo
         Data.Sequence.empty
-        []
 
 data RoomInfo =
     RoomInfo