equal
deleted
inserted
replaced
9 }, |
9 }, |
10 server::{ |
10 server::{ |
11 core::HWServer, |
11 core::HWServer, |
12 coretypes, |
12 coretypes, |
13 coretypes::{ClientId, GameCfg, RoomId, VoteType, Voting, MAX_HEDGEHOGS_PER_TEAM}, |
13 coretypes::{ClientId, GameCfg, RoomId, VoteType, Voting, MAX_HEDGEHOGS_PER_TEAM}, |
14 room::{HWRoom, RoomFlags}, |
14 room::{HWRoom, RoomFlags, MAX_TEAMS_IN_ROOM}, |
15 }, |
15 }, |
16 utils::is_name_illegal, |
16 utils::is_name_illegal, |
17 }; |
17 }; |
18 use base64::{decode, encode}; |
18 use base64::{decode, encode}; |
19 use log::*; |
19 use log::*; |
131 } |
131 } |
132 .send_all() |
132 .send_all() |
133 .in_room(room_id), |
133 .in_room(room_id), |
134 ); |
134 ); |
135 } |
135 } |
|
136 TeamChat(msg) => { |
|
137 let room = &server.rooms[room_id]; |
|
138 if let Some(ref info) = room.game_info { |
|
139 if let Some(clan_color) = room.find_team_color(client_id) { |
|
140 let client = &server.clients[client_id]; |
|
141 let engine_msg = |
|
142 to_engine_msg(format!("b{}]{}\x20\x20", client.nick, msg).bytes()); |
|
143 let team = room.clan_team_owners(clan_color).collect(); |
|
144 response.add(ForwardEngineMessage(vec![engine_msg]).send_many(team)) |
|
145 } |
|
146 } |
|
147 } |
136 Fix => { |
148 Fix => { |
137 if client.is_admin() { |
149 if client.is_admin() { |
138 room.set_is_fixed(true); |
150 room.set_is_fixed(true); |
139 room.set_join_restriction(false); |
151 room.set_join_restriction(false); |
140 room.set_team_add_restriction(false); |
152 room.set_team_add_restriction(false); |
147 } |
159 } |
148 } |
160 } |
149 Greeting(text) => { |
161 Greeting(text) => { |
150 if client.is_admin() || client.is_master() && !room.is_fixed() { |
162 if client.is_admin() || client.is_master() && !room.is_fixed() { |
151 room.greeting = text; |
163 room.greeting = text; |
|
164 } |
|
165 } |
|
166 MaxTeams(count) => { |
|
167 if !client.is_master() { |
|
168 response.add(Warning("You're not the room master!".to_string()).send_self()); |
|
169 } else if count < 2 || count > MAX_TEAMS_IN_ROOM { |
|
170 response |
|
171 .add(Warning("/maxteams: specify number from 2 to 8".to_string()).send_self()); |
|
172 } else { |
|
173 server.rooms[room_id].max_teams = count; |
152 } |
174 } |
153 } |
175 } |
154 RoomName(new_name) => { |
176 RoomName(new_name) => { |
155 if is_name_illegal(&new_name) { |
177 if is_name_illegal(&new_name) { |
156 response.add(Warning("Illegal room name! A room name must be between 1-40 characters long, must not have a trailing or leading space and must not have any of these characters: $()*+?[]^{|}".to_string()).send_self()); |
178 response.add(Warning("Illegal room name! A room name must be between 1-40 characters long, must not have a trailing or leading space and must not have any of these characters: $()*+?[]^{|}".to_string()).send_self()); |
190 if room.is_fixed() && room.ready_players_number == room.players_number { |
212 if room.is_fixed() && room.ready_players_number == room.players_number { |
191 super::common::start_game(server, room_id, response); |
213 super::common::start_game(server, room_id, response); |
192 } |
214 } |
193 } |
215 } |
194 AddTeam(mut info) => { |
216 AddTeam(mut info) => { |
195 if room.teams.len() >= room.team_limit as usize { |
217 if room.teams.len() >= room.max_teams as usize { |
196 response.add(Warning("Too many teams!".to_string()).send_self()); |
218 response.add(Warning("Too many teams!".to_string()).send_self()); |
197 } else if room.addable_hedgehogs() == 0 { |
219 } else if room.addable_hedgehogs() == 0 { |
198 response.add(Warning("Too many hedgehogs!".to_string()).send_self()); |
220 response.add(Warning("Too many hedgehogs!".to_string()).send_self()); |
199 } else if room.find_team(|t| t.name == info.name) != None { |
221 } else if room.find_team(|t| t.name == info.name) != None { |
200 response.add( |
222 response.add( |