Merge
authorunc0rr
Tue, 29 Jan 2013 10:10:23 +0400
changeset 8457 071d118b3283
parent 8455 c86c7d1fc9fc (current diff)
parent 8433 3b318a130a62 (diff)
child 8458 a7ff58c92d2e
Merge
--- a/gameServer/CoreTypes.hs	Mon Jan 28 15:54:40 2013 -0500
+++ b/gameServer/CoreTypes.hs	Tue Jan 29 10:10:23 2013 +0400
@@ -38,7 +38,7 @@
         isAdministrator :: Bool,
         isChecker :: Bool,
         isKickedFromServer :: Bool,
-        clientClan :: Maybe B.ByteString,
+        clientClan :: !(Maybe B.ByteString),
         teamsInGame :: Word
     }
 
@@ -66,6 +66,9 @@
     }
     deriving (Show, Read)
 
+instance Eq TeamInfo where
+    (==) = (==) `on` teamname
+    
 data GameInfo =
     GameInfo
     {
--- a/gameServer/HWProtoInRoomState.hs	Mon Jan 28 15:54:40 2013 -0500
+++ b/gameServer/HWProtoInRoomState.hs	Tue Jan 29 10:10:23 2013 +0400
@@ -97,7 +97,6 @@
 handleCmd_inRoom ["REMOVE_TEAM", tName] = do
         (ci, _) <- ask
         r <- thisRoom
-        clNick <- clientNick
 
         let maybeTeam = findTeam r
         let team = fromJust maybeTeam
@@ -105,18 +104,18 @@
         return $
             if isNothing $ maybeTeam then
                 [Warning $ loc "REMOVE_TEAM: no such team"]
-            else if clNick /= teamowner team then
+            else if ci /= teamownerId team then
                 [ProtocolError $ loc "Not team owner!"]
             else
                 [RemoveTeam tName,
                 ModifyClient
                     (\c -> c{
                         teamsInGame = teamsInGame c - 1,
-                        clientClan = if teamsInGame c == 1 then Nothing else Just $ anotherTeamClan ci r
+                        clientClan = if teamsInGame c == 1 then Nothing else Just $ anotherTeamClan ci team r
                     })
                 ]
     where
-        anotherTeamClan ci = teamcolor . fromJust . find (\t -> teamownerId t == ci) . teams
+        anotherTeamClan ci team = teamcolor . fromMaybe (error "CHECKPOINT 011") . find (\t -> (teamownerId t == ci) && (t /= team)) . teams
         findTeam = find (\t -> tName == teamname t) . teams