diff options
Diffstat (limited to 'src/server/navigation.rs')
| -rw-r--r-- | src/server/navigation.rs | 32 | 
1 files changed, 17 insertions, 15 deletions
| diff --git a/src/server/navigation.rs b/src/server/navigation.rs index 2a2f105..461a2b8 100644 --- a/src/server/navigation.rs +++ b/src/server/navigation.rs @@ -9,10 +9,9 @@ use mass::{Mass, MassType};  use server::connection::ServerConnection;  impl ServerConnection { -    pub fn server_navigation(&mut self, masses : &mut HashMap<String, Mass>) -> bool { +    pub fn server_navigation(&mut self, masses : &mut HashMap<String, Mass>) {          let mut ship = masses.remove(&self.name).unwrap();          let ship_clone = ship.clone(); -        let mut connection_good = true;          if let MassType::Ship{ref mut navigation, ..} = ship.mass_type {              let mut navigation = navigation.as_mut().unwrap(); @@ -21,23 +20,26 @@ impl ServerConnection {                                                                                    distance(ship_clone.position, mass.position) < navigation.range)                                                                                    .collect();              within_range.insert(&self.name, &ship_clone); -            let send = serde_json::to_string(&within_range).unwrap() + "\n"; -            match self.stream.write(send.as_bytes()) { -                Ok(_result) => (), -                Err(_error) => connection_good = false, -            } -            let mut recv = String::new(); -            match self.buff_r.read_line(&mut recv) { -                Ok(_result) => (), -                Err(_error) => (), -            } -            if !recv.is_empty() { -                navigation.give_target(recv.replace("\n", "")); +            if self.open { +                let send = serde_json::to_string(&within_range).unwrap() + "\n"; + +                match self.stream.write(send.as_bytes()) { +                    Ok(_result) => (), +                    Err(_error) => self.open = false, +                }; + +                let mut recv = String::new(); +                match self.buff_r.read_line(&mut recv) { +                    Ok(_result) => (), +                    Err(_error) => (), +                } +                if !recv.is_empty() { +                    navigation.give_target(recv.replace("\n", "")); +                }              }          }          masses.insert(self.name.clone(), ship); -        connection_good      }  } | 
