Fix finding player's another clan
authorunc0rr
Fri, 25 Jan 2013 12:59:06 +0400 (2013-01-25)
changeset 8431 74c2c95ab07b
parent 8430 5a5c34a75e1a
child 8433 3b318a130a62
Fix finding player's another clan
gameServer/CoreTypes.hs
gameServer/HWProtoInRoomState.hs
--- a/gameServer/CoreTypes.hs	Wed Jan 23 16:35:26 2013 -0500
+++ b/gameServer/CoreTypes.hs	Fri Jan 25 12:59:06 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	Wed Jan 23 16:35:26 2013 -0500
+++ b/gameServer/HWProtoInRoomState.hs	Fri Jan 25 12:59:06 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,7 +104,7 @@
         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,
@@ -116,7 +115,7 @@
                     })
                 ]
     where
-        anotherTeamClan ci = teamcolor . fromJust . find (\t -> teamownerId t == ci) . teams
+        anotherTeamClan ci = teamcolor . fromJust . find (\t -> (teamownerId t == ci) && (t /= team)) . teams
         findTeam = find (\t -> tName == teamname t) . teams