gameServer/HWProtoNEState.hs
branchserver_refactor
changeset 4577 2c43cd7d5ce6
parent 4575 4eb51a884f11
child 4579 4e61c2a42121
equal deleted inserted replaced
4575:4eb51a884f11 4577:2c43cd7d5ce6
    18 handleCmd_NotEntered ["NICK", newNick] = do
    18 handleCmd_NotEntered ["NICK", newNick] = do
    19     (ci, irnc) <- ask
    19     (ci, irnc) <- ask
    20     let cl = irnc `client` ci
    20     let cl = irnc `client` ci
    21     if not . B.null $ nick cl then return [ProtocolError "Nickname already chosen"]
    21     if not . B.null $ nick cl then return [ProtocolError "Nickname already chosen"]
    22         else
    22         else
    23         if haveSameNick irnc (nick cl) then return [AnswerClients [sendChan cl] ["WARNING", "Nickname already in use"], ByeClient ""]
    23         if haveSameNick irnc then return [AnswerClients [sendChan cl] ["WARNING", "Nickname already in use"], ByeClient ""]
    24             else
    24             else
    25             if illegalName newNick then return [ByeClient "Illegal nickname"]
    25             if illegalName newNick then return [ByeClient "Illegal nickname"]
    26                 else
    26                 else
    27                 return $
    27                 return $
    28                     ModifyClient (\c -> c{nick = newNick}) :
    28                     ModifyClient (\c -> c{nick = newNick}) :
    29                     AnswerClients [sendChan cl] ["NICK", newNick] :
    29                     AnswerClients [sendChan cl] ["NICK", newNick] :
    30                     [CheckRegistered | clientProto cl /= 0]
    30                     [CheckRegistered | clientProto cl /= 0]
    31     where
    31     where
    32     haveSameNick irnc clNick = isJust $ find (\cl -> newNick == cl) $ map (nick . client irnc) $ allClients irnc
    32     haveSameNick irnc = isJust . find (== newNick) . map (nick . client irnc) $ allClients irnc
    33 
    33 
    34 handleCmd_NotEntered ["PROTO", protoNum] = do
    34 handleCmd_NotEntered ["PROTO", protoNum] = do
    35     (ci, irnc) <- ask
    35     (ci, irnc) <- ask
    36     let cl = irnc `client` ci
    36     let cl = irnc `client` ci
    37     if clientProto cl > 0 then return [ProtocolError "Protocol already known"]
    37     if clientProto cl > 0 then return [ProtocolError "Protocol already known"]