gameServer2/src/server/handlers/lobby.rs
changeset 13124 1e39b8749072
parent 12857 bd35cb2302b3
child 13421 cdf69667593b
equal deleted inserted replaced
13123:1ddb8aac5e30 13124:1e39b8749072
     4 use server::actions::Action;
     4 use server::actions::Action;
     5 use server::actions::Action::*;
     5 use server::actions::Action::*;
     6 use protocol::messages::HWProtocolMessage;
     6 use protocol::messages::HWProtocolMessage;
     7 use protocol::messages::HWServerMessage::*;
     7 use protocol::messages::HWServerMessage::*;
     8 
     8 
     9 pub fn handle(server: &mut HWServer, token: usize, poll: &mio::Poll, message: HWProtocolMessage) {
     9 pub fn handle(server: &mut HWServer, token: usize, message: HWProtocolMessage) {
       
    10     use protocol::messages::HWProtocolMessage::*;
    10     match message {
    11     match message {
    11         HWProtocolMessage::Chat(msg) => {
    12         Chat(msg) => {
    12             let chat_msg = ChatMsg(&server.clients[token].nick, &msg).to_raw_protocol();
    13             let chat_msg = ChatMsg(server.clients[token].nick.clone(), msg);
    13             server.react(token, poll, vec![SendAllButMe(chat_msg)]);
    14             server.react(token, vec![SendAllButMe(chat_msg)]);
    14         },
    15         },
    15         HWProtocolMessage::CreateRoom(name, password) => {
    16         CreateRoom(name, password) => {
    16             let room_exists = server.rooms.iter().find(|&(_, r)| r.name == name).is_some();
    17             let room_exists = server.rooms.iter().find(|&(_, r)| r.name == name).is_some();
    17             if room_exists {
    18             if room_exists {
    18                 server.react(token, poll, vec![Warn("Room exists".to_string())]);
    19                 server.react(token, vec![Warn("Room exists".to_string())]);
    19             } else {
    20             } else {
    20                 let flags_msg = ClientFlags("+hr", &[&server.clients[token].nick]).to_raw_protocol();
    21                 let flags_msg = ClientFlags("+hr".to_string(), vec![server.clients[token].nick.clone()]);
    21                 {
    22                 {
    22                     let c = &mut server.clients[token];
    23                     let c = &mut server.clients[token];
    23                     c.is_master = true;
    24                     c.is_master = true;
    24                     c.is_ready = true;
    25                     c.is_ready = true;
    25                     c.is_joined_mid_game = false;
    26                     c.is_joined_mid_game = false;
    26                 }
    27                 }
    27                 server.react(token, poll, vec![
    28                 server.react(token, vec![
    28                     AddRoom(name, password)
    29                     AddRoom(name, password)
    29                     , SendMe(flags_msg)
    30                     , SendMe(flags_msg)
    30                     ]);
    31                     ]);
    31             }
    32             }
    32         },
    33         },
    33         HWProtocolMessage::Join(name, password) => {
    34         Join(name, password) => {
    34 
    35 
    35         },
    36         },
    36         HWProtocolMessage::List => warn!("Deprecated LIST message received"),
    37         List => warn!("Deprecated LIST message received"),
    37         _ => warn!("Incorrect command in lobby state"),
    38         _ => warn!("Incorrect command in lobby state"),
    38     }
    39     }
    39 }
    40 }