gameServer/HWProtoInRoomState.hs
branchserver_refactor
changeset 4614 26661bf28dd5
parent 4337 85e02b1a8e8f
child 4904 0eab727d4717
equal deleted inserted replaced
4612:e82758d6f924 4614:26661bf28dd5
     1 {-# LANGUAGE OverloadedStrings #-}
     1 {-# LANGUAGE OverloadedStrings #-}
     2 module HWProtoInRoomState where
     2 module HWProtoInRoomState where
     3 
     3 
     4 import qualified Data.Foldable as Foldable
       
     5 import qualified Data.Map as Map
     4 import qualified Data.Map as Map
     6 import Data.Sequence(Seq, (|>), (><), fromList, empty)
     5 import Data.Sequence((|>), empty)
     7 import Data.List
     6 import Data.List
     8 import Data.Maybe
     7 import Data.Maybe
     9 import qualified Data.ByteString.Char8 as B
     8 import qualified Data.ByteString.Char8 as B
    10 import Control.Monad
     9 import Control.Monad
    11 import Control.Monad.Reader
    10 import Control.Monad.Reader
   232         if not $ isMaster cl then
   231         if not $ isMaster cl then
   233             [ProtocolError "Not room master"]
   232             [ProtocolError "Not room master"]
   234         else
   233         else
   235             [ModifyRoom (\r -> r{isRestrictedTeams = not $ isRestrictedTeams r})]
   234             [ModifyRoom (\r -> r{isRestrictedTeams = not $ isRestrictedTeams r})]
   236 
   235 
   237 {-
   236 
   238 handleCmd_inRoom clID clients rooms ["KICK", kickNick] =
   237 handleCmd_inRoom ["KICK", kickNick] = do
   239     [KickRoomClient kickID | isMaster client && not noSuchClient && (kickID /= clID) && (roomID client == roomID kickClient)]
   238     (thisClientId, rnc) <- ask
   240     where
   239     maybeClientId <- clientByNick kickNick
   241         client = clients IntMap.! clID
   240     master <- liftM isMaster thisClient
   242         maybeClient = Foldable.find (\cl -> kickNick == nick cl) clients
   241     let kickId = fromJust maybeClientId
   243         noSuchClient = isNothing maybeClient
   242     let sameRoom = (clientRoom rnc thisClientId) == (clientRoom rnc kickId)
   244         kickClient = fromJust maybeClient
   243     return
   245         kickID = clientUID kickClient
   244         [KickRoomClient kickId | master && isJust maybeClientId && (kickId /= thisClientId) && sameRoom]
   246 
   245 
   247 
   246 
   248 handleCmd_inRoom clID clients _ ["TEAMCHAT", msg] =
   247 handleCmd_inRoom ["TEAMCHAT", msg] = do
   249     [AnswerSameClan ["EM", engineMsg]]
   248     cl <- thisClient
   250     where
   249     chans <- roomSameClanChans
   251         client = clients IntMap.! clID
   250     return [AnswerClients chans ["EM", engineMsg cl]]
   252         engineMsg = toEngineMsg $ 'b' : ((nick client) ++ "(team): " ++ msg ++ "\x20\x20")
   251     where
   253 -}
   252         engineMsg cl = toEngineMsg $ "b" `B.append` (nick cl) `B.append` "(team): " `B.append` msg `B.append` "\x20\x20"
       
   253 
   254 handleCmd_inRoom _ = return [ProtocolError "Incorrect command (state: in room)"]
   254 handleCmd_inRoom _ = return [ProtocolError "Incorrect command (state: in room)"]