gameServer2/src/server/handlers/inroom.rs
changeset 13526 3f69acc7e268
parent 13525 d126d9a646ac
child 13527 e3ae9eea0689
equal deleted inserted replaced
13525:d126d9a646ac 13526:3f69acc7e268
   125         }
   125         }
   126         RoomName(new_name) => {
   126         RoomName(new_name) => {
   127             let actions =
   127             let actions =
   128                 if is_name_illegal(&new_name) {
   128                 if is_name_illegal(&new_name) {
   129                     vec![Warn("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())]
   129                     vec![Warn("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())]
   130                 } else if server.room(client_id).map(|r| r.is_fixed()).unwrap_or(false) {
   130                 } else if server.rooms[room_id].is_fixed() {
   131                     vec![Warn("Access denied.".to_string())]
   131                     vec![Warn("Access denied.".to_string())]
   132                 } else if server.has_room(&new_name) {
   132                 } else if server.has_room(&new_name) {
   133                     vec![Warn("A room with the same name already exists.".to_string())]
   133                     vec![Warn("A room with the same name already exists.".to_string())]
   134                 } else {
   134                 } else {
   135                     let mut old_name = new_name.clone();
   135                     let mut old_name = new_name.clone();
   136                     if let (_, Some(r)) = server.client_and_room(client_id) {
   136                     swap(&mut server.rooms[room_id].name, &mut old_name);
   137                         swap(&mut r.name, &mut old_name);
   137                     vec![SendRoomUpdate(Some(old_name))]
   138                         vec![SendRoomUpdate(Some(old_name))]
       
   139                     } else {
       
   140                         Vec::new()
       
   141                     }
       
   142                 };
   138                 };
   143             server.react(client_id, actions);
   139             server.react(client_id, actions);
   144         },
   140         },
   145         ToggleReady => {
   141         ToggleReady => {
   146             let actions = if let (c, Some(r)) = server.client_and_room(client_id) {
   142             let actions = if let (c, Some(r)) = server.client_and_room(client_id) {
   319             };
   315             };
   320             match error {
   316             match error {
   321                 None => {
   317                 None => {
   322                     let msg = voting_description(&kind);
   318                     let msg = voting_description(&kind);
   323                     let voting = Voting::new(kind, server.room_clients(client_id));
   319                     let voting = Voting::new(kind, server.room_clients(client_id));
   324                     server.room(client_id).unwrap().voting = Some(voting);
   320                     server.rooms[room_id].voting = Some(voting);
   325                     server.react(client_id, vec![
   321                     server.react(client_id, vec![
   326                         server_chat(&msg).send_all().in_room(room_id).action(),
   322                         server_chat(&msg).send_all().in_room(room_id).action(),
   327                         AddVote{ vote: true, is_forced: false}]);
   323                         AddVote{ vote: true, is_forced: false}]);
   328                 }
   324                 }
   329                 Some(msg) => {
   325                 Some(msg) => {
   331                         server_chat(msg).send_self().action()])
   327                         server_chat(msg).send_self().action()])
   332                 }
   328                 }
   333             }
   329             }
   334         }
   330         }
   335         Vote(vote) => {
   331         Vote(vote) => {
   336             let actions = if let (c, Some(r)) = server.client_and_room(client_id) {
   332             server.react(client_id, vec![AddVote{ vote, is_forced: false }]);
   337                 vec![AddVote{ vote, is_forced: false }]
       
   338             } else {
       
   339                 Vec::new()
       
   340             };
       
   341             server.react(client_id, actions);
       
   342         }
   333         }
   343         ForceVote(vote) => {
   334         ForceVote(vote) => {
   344             let actions = if let (c, Some(r)) = server.client_and_room(client_id) {
   335             let is_forced = server.clients[client_id].is_admin();
   345                 vec![AddVote{ vote, is_forced: c.is_admin()} ]
   336             server.react(client_id, vec![AddVote{ vote, is_forced }]);
   346             } else {
       
   347                 Vec::new()
       
   348             };
       
   349             server.react(client_id, actions);
       
   350         }
   337         }
   351         ToggleRestrictJoin | ToggleRestrictTeams | ToggleRegisteredOnly  => {
   338         ToggleRestrictJoin | ToggleRestrictTeams | ToggleRegisteredOnly  => {
   352             if server.clients[client_id].is_master() {
   339             if server.clients[client_id].is_master() {
   353                 server.rooms[room_id].flags.toggle(room_message_flag(&message));
   340                 server.rooms[room_id].flags.toggle(room_message_flag(&message));
   354             }
   341             }
   355             server.react(client_id, vec![SendRoomUpdate(None)]);
   342             server.react(client_id, vec![SendRoomUpdate(None)]);
   356         }
   343         }
   357         StartGame => {
   344         StartGame => {
   358             let actions = if let (_, Some(r)) = server.client_and_room(client_id) {
   345             server.react(client_id, vec![StartRoomGame(room_id)]);
   359                 vec![StartRoomGame(r.id)]
       
   360             } else {
       
   361                 Vec::new()
       
   362             };
       
   363             server.react(client_id, actions);
       
   364         }
   346         }
   365         EngineMessage(em) => {
   347         EngineMessage(em) => {
   366             let mut actions = Vec::new();
   348             let mut actions = Vec::new();
   367             if let (c, Some(r)) = server.client_and_room(client_id) {
   349             if let (c, Some(r)) = server.client_and_room(client_id) {
   368                 if c.teams_in_game > 0 {
   350                 if c.teams_in_game > 0 {