77 newTeamHHNum r = min 4 (canAddNumber r) |
77 newTeamHHNum r = min 4 (canAddNumber r) |
78 |
78 |
79 handleCmd_inRoom ["REMOVE_TEAM", name] = do |
79 handleCmd_inRoom ["REMOVE_TEAM", name] = do |
80 (ci, rnc) <- ask |
80 (ci, rnc) <- ask |
81 let r = room rnc $ clientRoom rnc ci |
81 let r = room rnc $ clientRoom rnc ci |
82 clNick <- clientNick |
82 clNick <- clientNick |
83 |
83 |
84 let maybeTeam = findTeam r |
84 let maybeTeam = findTeam r |
85 let team = fromJust maybeTeam |
85 let team = fromJust maybeTeam |
86 |
86 |
87 return $ |
87 return $ |
88 if isNothing $ findTeam r then |
88 if isNothing $ findTeam r then |
89 [Warning "REMOVE_TEAM: no such team"] |
89 [Warning "REMOVE_TEAM: no such team"] |
90 else if clNick /= teamowner team then |
90 else if clNick /= teamowner team then |
91 [ProtocolError "Not team owner!"] |
91 [ProtocolError "Not team owner!"] |
92 else |
92 else |
93 [RemoveTeam name, |
93 [RemoveTeam name, |
94 ModifyClient |
94 ModifyClient |
95 (\c -> c{ |
95 (\c -> c{ |
96 teamsInGame = teamsInGame c - 1, |
96 teamsInGame = teamsInGame c - 1, |
97 clientClan = if teamsInGame client == 1 then undefined else anotherTeamClan ci r |
97 clientClan = if teamsInGame c == 1 then undefined else anotherTeamClan ci r |
98 }) |
98 }) |
99 ] |
99 ] |
100 where |
100 where |
101 anotherTeamClan ci = teamcolor . fromJust . find (\t -> teamownerId t == ci) . teams |
101 anotherTeamClan ci = teamcolor . fromJust . find (\t -> teamownerId t == ci) . teams |
|
102 findTeam = find (\t -> name == teamname t) . teams |
102 |
103 |
103 {- |
104 {- |
104 |
105 |
105 handleCmd_inRoom clID clients rooms ["HH_NUM", teamName, numberStr] |
106 handleCmd_inRoom clID clients rooms ["HH_NUM", teamName, numberStr] |
106 | not $ isMaster client = [ProtocolError "Not room master"] |
107 | not $ isMaster client = [ProtocolError "Not room master"] |