rust/hedgewars-server/src/handlers/common.rs
changeset 15522 4a0b06b03199
parent 15519 b3157d218ae2
child 15523 f4f6060b536c
equal deleted inserted replaced
15521:1fcce8feace4 15522:4a0b06b03199
    72     ];
    72     ];
    73 
    73 
    74     let server_msg = ServerMessage(server.get_greetings(client).to_string());
    74     let server_msg = ServerMessage(server.get_greetings(client).to_string());
    75 
    75 
    76     let rooms_msg = Rooms(
    76     let rooms_msg = Rooms(
    77         server
    77         server.iter_rooms()
    78             .rooms
    78             .filter(|r| r.protocol_number == client.protocol_number)
    79             .iter()
    79             .flat_map(|r| r.info(r.master_id.map(|id| server.client(id))))
    80             .filter(|(_, r)| r.protocol_number == client.protocol_number)
       
    81             .flat_map(|(_, r)| r.info(r.master_id.map(|id| server.client(id))))
       
    82             .collect(),
    80             .collect(),
    83     );
    81     );
    84 
    82 
    85     response.add(LobbyJoined(nick).send_all().but_self());
    83     response.add(LobbyJoined(nick).send_all().but_self());
    86     response.add(
    84     response.add(
   340     server: &HwServer,
   338     server: &HwServer,
   341     room_id: RoomId,
   339     room_id: RoomId,
   342     to_client: ClientId,
   340     to_client: ClientId,
   343     response: &mut Response,
   341     response: &mut Response,
   344 ) {
   342 ) {
   345     let room = &server.rooms[room_id];
   343     let room = server.room(room_id);
   346     if let Some(id) = room.master_id {
   344     if let Some(id) = room.master_id {
   347         response.add(
   345         response.add(
   348             ClientFlags(
   346             ClientFlags(
   349                 add_flags(&[Flags::RoomMaster]),
   347                 add_flags(&[Flags::RoomMaster]),
   350                 vec![server.client(id).nick.clone()],
   348                 vec![server.client(id).nick.clone()],
   376                 }
   374                 }
   377             }
   375             }
   378         }
   376         }
   379         VoteType::Map(None) => (),
   377         VoteType::Map(None) => (),
   380         VoteType::Map(Some(name)) => {
   378         VoteType::Map(Some(name)) => {
   381             if let Some(location) = server.rooms[room_id].load_config(&name) {
   379             if let Some(location) = server.room_mut(room_id).load_config(&name) {
   382                 response.add(
   380                 response.add(
   383                     server_chat(location.to_string())
   381                     server_chat(location.to_string())
   384                         .send_all()
   382                         .send_all()
   385                         .in_room(room_id),
   383                         .in_room(room_id),
   386                 );
   384                 );
   387                 let room = &server.rooms[room_id];
   385                 let room = &server.room(room_id);
   388                 let room_master = if let Some(id) = room.master_id {
   386                 let room_master = if let Some(id) = room.master_id {
   389                     Some(server.client(id))
   387                     Some(server.client(id))
   390                 } else {
   388                 } else {
   391                     None
   389                     None
   392                 };
   390                 };
   393                 get_room_update(None, room, room_master, response);
   391                 get_room_update(None, room, room_master, response);
   394 
   392 
   395                 for client in server.iter_clients() {
   393                 for client in server.iter_clients() {
   396                     if client.room_id == Some(room_id) {
   394                     if client.room_id == Some(room_id) {
   397                         super::common::get_room_config(&server.rooms[room_id], client.id, response);
   395                         super::common::get_room_config(server.room(room_id), client.id, response);
   398                     }
   396                     }
   399                 }
   397                 }
   400             }
   398             }
   401         }
   399         }
   402         VoteType::Pause => {
   400         VoteType::Pause => {
   403             if let Some(ref mut info) = server.rooms[room_id].game_info {
   401             if let Some(ref mut info) = server.room_mut(room_id).game_info {
   404                 info.is_paused = !info.is_paused;
   402                 info.is_paused = !info.is_paused;
   405                 response.add(
   403                 response.add(
   406                     server_chat("Pause toggled.".to_string())
   404                     server_chat("Pause toggled.".to_string())
   407                         .send_all()
   405                         .send_all()
   408                         .in_room(room_id),
   406                         .in_room(room_id),
   416         }
   414         }
   417         VoteType::NewSeed => {
   415         VoteType::NewSeed => {
   418             let seed = thread_rng().gen_range(0, 1_000_000_000).to_string();
   416             let seed = thread_rng().gen_range(0, 1_000_000_000).to_string();
   419             let cfg = GameCfg::Seed(seed);
   417             let cfg = GameCfg::Seed(seed);
   420             response.add(cfg.to_server_msg().send_all().in_room(room_id));
   418             response.add(cfg.to_server_msg().send_all().in_room(room_id));
   421             server.rooms[room_id].set_config(cfg);
   419             server.room_mut(room_id).set_config(cfg);
   422         }
   420         }
   423         VoteType::HedgehogsPerTeam(number) => {
   421         VoteType::HedgehogsPerTeam(number) => {
   424             let r = &mut server.rooms[room_id];
   422             let r = server.room_mut(room_id);
   425             let nicks = r.set_hedgehogs_number(number);
   423             let nicks = r.set_hedgehogs_number(number);
   426 
   424 
   427             response.extend(
   425             response.extend(
   428                 nicks
   426                 nicks
   429                     .into_iter()
   427                     .into_iter()