gameServer/HWProtoInRoomState.hs
changeset 5030 42746c5d4a80
parent 4989 4771fed9272e
child 5098 cb9cf41a208c
equal deleted inserted replaced
5028:3c43f00b0743 5030:42746c5d4a80
    71                 ]
    71                 ]
    72         where
    72         where
    73         canAddNumber r = 48 - (sum . map hhnum $ teams r)
    73         canAddNumber r = 48 - (sum . map hhnum $ teams r)
    74         findTeam = find (\t -> tName == teamname t) . teams
    74         findTeam = find (\t -> tName == teamname t) . teams
    75         newTeam ci clNick r = TeamInfo ci clNick tName color grave fort voicepack flag dif (newTeamHHNum r) (hhsList hhsInfo)
    75         newTeam ci clNick r = TeamInfo ci clNick tName color grave fort voicepack flag dif (newTeamHHNum r) (hhsList hhsInfo)
    76         dif = case B.readInt difStr of
    76         dif = readInt_ difStr
    77                     Just (i, t) | B.null t -> fromIntegral i
       
    78                     _ -> 0
       
    79         hhsList [] = []
    77         hhsList [] = []
    80         hhsList [_] = error "Hedgehogs list with odd elements number"
    78         hhsList [_] = error "Hedgehogs list with odd elements number"
    81         hhsList (n:h:hhs) = HedgehogInfo n h : hhsList hhs
    79         hhsList (n:h:hhs) = HedgehogInfo n h : hhsList hhs
    82         newTeamHHNum r = min 4 (canAddNumber r)
    80         newTeamHHNum r = min 4 (canAddNumber r)
    83 
    81 
   120             [ProtocolError "Not room master"]
   118             [ProtocolError "Not room master"]
   121         else if hhNumber < 1 || hhNumber > 8 || isNothing maybeTeam || hhNumber > canAddNumber r + hhnum team then
   119         else if hhNumber < 1 || hhNumber > 8 || isNothing maybeTeam || hhNumber > canAddNumber r + hhnum team then
   122             []
   120             []
   123         else
   121         else
   124             [ModifyRoom $ modifyTeam team{hhnum = hhNumber},
   122             [ModifyRoom $ modifyTeam team{hhnum = hhNumber},
   125             AnswerClients others ["HH_NUM", teamName, B.pack $ show hhNumber]]
   123             AnswerClients others ["HH_NUM", teamName, showB hhNumber]]
   126     where
   124     where
   127         hhNumber = case B.readInt numberStr of
   125         hhNumber = readInt_ numberStr
   128                            Just (i, t) | B.null t -> fromIntegral i
       
   129                            _ -> 0
       
   130         findTeam = find (\t -> teamName == teamname t) . teams
   126         findTeam = find (\t -> teamName == teamname t) . teams
   131         canAddNumber = (-) 48 . sum . map hhnum . teams
   127         canAddNumber = (-) 48 . sum . map hhnum . teams
   132 
   128 
   133 
   129 
   134 
   130 
   259 handleCmd_inRoom ["TEAMCHAT", msg] = do
   255 handleCmd_inRoom ["TEAMCHAT", msg] = do
   260     cl <- thisClient
   256     cl <- thisClient
   261     chans <- roomSameClanChans
   257     chans <- roomSameClanChans
   262     return [AnswerClients chans ["EM", engineMsg cl]]
   258     return [AnswerClients chans ["EM", engineMsg cl]]
   263     where
   259     where
   264         engineMsg cl = toEngineMsg $ "b" `B.append` nick cl `B.append` "(team): " `B.append` msg `B.append` "\x20\x20"
   260         engineMsg cl = toEngineMsg $ B.concat ["b", nick cl, "(team): ", msg, "\x20\x20"]
   265 
   261 
   266 handleCmd_inRoom _ = return [ProtocolError "Incorrect command (state: in room)"]
   262 handleCmd_inRoom _ = return [ProtocolError "Incorrect command (state: in room)"]