diff options
author | tom barrett <spalf0@gmail.com> | 2019-03-21 09:50:47 -0500 |
---|---|---|
committer | tom barrett <spalf0@gmail.com> | 2019-03-21 09:50:47 -0500 |
commit | 95902608506ae8ccd1203cbbf93efbe876384a1f (patch) | |
tree | 5ce5d578e11b8a5632fad7b38473d49a4d20d7fb /src/modules/navigation.rs | |
parent | 6fb0b0d918963a22aeb4050139e8d0000c74a9ff (diff) |
added acquiring items of tractorbeam and tests, moved control system over to math and gave it constants
Diffstat (limited to 'src/modules/navigation.rs')
-rw-r--r-- | src/modules/navigation.rs | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/modules/navigation.rs b/src/modules/navigation.rs index c931338..6df3327 100644 --- a/src/modules/navigation.rs +++ b/src/modules/navigation.rs @@ -1,3 +1,4 @@ +use std::cmp::Ordering; use std::collections::HashMap; use std::time::SystemTime; @@ -60,8 +61,18 @@ impl Navigation { fn verify_target(&mut self, ship_position: Vector, masses: &HashMap<String, Mass>) { if let Some(name) = self.target_name.clone() { - let target = masses.get(&name).unwrap(); - if target.position.distance_from(ship_position) > self.range { + let good = match masses.get(&name) { + Some(target) => { + target + .position + .distance_from(ship_position) + .partial_cmp(&self.range) + == Some(Ordering::Less) + } + None => false, + }; + + if !good { self.target_name = None; self.status = Status::None; } |