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