summaryrefslogtreecommitdiff
path: root/src/server/navigation.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/navigation.rs')
-rw-r--r--src/server/navigation.rs32
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
}
}