--- a/rust/hedgewars-server/src/server/handlers/inroom.rs Thu Apr 11 01:42:14 2019 +0300
+++ b/rust/hedgewars-server/src/server/handlers/inroom.rs Thu Apr 11 19:30:22 2019 +0300
@@ -11,7 +11,7 @@
core::HWServer,
coretypes,
coretypes::{ClientId, GameCfg, RoomId, VoteType, Voting, MAX_HEDGEHOGS_PER_TEAM},
- room::{HWRoom, RoomFlags},
+ room::{HWRoom, RoomFlags, MAX_TEAMS_IN_ROOM},
},
utils::is_name_illegal,
};
@@ -133,6 +133,18 @@
.in_room(room_id),
);
}
+ TeamChat(msg) => {
+ let room = &server.rooms[room_id];
+ if let Some(ref info) = room.game_info {
+ if let Some(clan_color) = room.find_team_color(client_id) {
+ let client = &server.clients[client_id];
+ let engine_msg =
+ to_engine_msg(format!("b{}]{}\x20\x20", client.nick, msg).bytes());
+ let team = room.clan_team_owners(clan_color).collect();
+ response.add(ForwardEngineMessage(vec![engine_msg]).send_many(team))
+ }
+ }
+ }
Fix => {
if client.is_admin() {
room.set_is_fixed(true);
@@ -151,6 +163,16 @@
room.greeting = text;
}
}
+ MaxTeams(count) => {
+ if !client.is_master() {
+ response.add(Warning("You're not the room master!".to_string()).send_self());
+ } else if count < 2 || count > MAX_TEAMS_IN_ROOM {
+ response
+ .add(Warning("/maxteams: specify number from 2 to 8".to_string()).send_self());
+ } else {
+ server.rooms[room_id].max_teams = count;
+ }
+ }
RoomName(new_name) => {
if is_name_illegal(&new_name) {
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());
@@ -192,7 +214,7 @@
}
}
AddTeam(mut info) => {
- if room.teams.len() >= room.team_limit as usize {
+ if room.teams.len() >= room.max_teams as usize {
response.add(Warning("Too many teams!".to_string()).send_self());
} else if room.addable_hedgehogs() == 0 {
response.add(Warning("Too many hedgehogs!".to_string()).send_self());