From aeaaefd2706479378a24c1ab6d1dc8f74d557e78 Mon Sep 17 00:00:00 2001 From: tom barrett Date: Tue, 17 Apr 2018 04:17:29 -0500 Subject: -moved over to if let to get less indentation --- src/server/navigation.rs | 63 ++++++++++++++++++++++-------------------------- 1 file changed, 29 insertions(+), 34 deletions(-) (limited to 'src/server/navigation.rs') diff --git a/src/server/navigation.rs b/src/server/navigation.rs index 1d332f9..7f4a1bc 100644 --- a/src/server/navigation.rs +++ b/src/server/navigation.rs @@ -16,45 +16,40 @@ impl ServerConnection { let ship = masses.get_mut(&self.name).unwrap(); let ship_position = ship.position; - match ship.mass_type { - MassType::Ship{ref mut modules, ..} => { - match modules.get_mut("Navigation").unwrap().module_type { - ModuleType::Navigation{ref mut target_name, ref mut start, ref mut status, ref range, ..} => { - match target_name.clone() { - Some(name) => { - let target = masses_clone.get(&name).unwrap(); - if distance(target.position, ship.position) > *range { - *target_name = None; - } - }, - _ => (), - } - - let within_range : HashMap<&String, &Mass> = masses_clone.iter().filter(|&(_, mass)| - distance(ship_position, mass.position) < *range) - .collect(); + if let MassType::Ship{ref mut modules, ..} = ship.mass_type { + let mut navigation = modules.get_mut("Navigation").unwrap(); + if let ModuleType::Navigation{ref mut target_name, ref mut start, ref mut status, ref range, ..} = navigation.module_type { - let send = serde_json::to_string(&within_range).unwrap() + "\n"; - match self.stream.write(send.as_bytes()) { - Ok(_result) => (), - Err(_error) => return false, + match target_name.clone() { + Some(name) => { + let target = masses_clone.get(&name).unwrap(); + if distance(target.position, ship.position) > *range { + *target_name = None; } + } + _ => (), + } - let mut recv = String::new(); - match self.buff_r.read_line(&mut recv) { - Ok(_result) => (), - Err(_error) => (), - } - if !recv.is_empty() { - *target_name = Some(recv.replace("\n", "")); - *start = Some(SystemTime::now()); - *status = NavigationStatus::Targeting; - } - }, - _ => (), + let within_range : HashMap<&String, &Mass> = masses_clone.iter().filter(|&(_, mass)| + distance(ship_position, mass.position) < *range) + .collect(); + let send = serde_json::to_string(&within_range).unwrap() + "\n"; + match self.stream.write(send.as_bytes()) { + Ok(_result) => (), + Err(_error) => return false, + } + + let mut recv = String::new(); + match self.buff_r.read_line(&mut recv) { + Ok(_result) => (), + Err(_error) => (), + } + if !recv.is_empty() { + *target_name = Some(recv.replace("\n", "")); + *start = Some(SystemTime::now()); + *status = NavigationStatus::Targeting; } } - _ => (), } true } -- cgit v1.2.3