summaryrefslogtreecommitdiff
path: root/src/client/navigation.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/navigation.rs')
-rw-r--r--src/client/navigation.rs71
1 files changed, 39 insertions, 32 deletions
diff --git a/src/client/navigation.rs b/src/client/navigation.rs
index 34e1b7a..0ab25c6 100644
--- a/src/client/navigation.rs
+++ b/src/client/navigation.rs
@@ -1,18 +1,18 @@
-extern crate termion;
extern crate serde_json;
+extern crate termion;
-use std::net::TcpStream;
-use std::collections::BTreeMap;
use self::termion::async_stdin;
-use std::io::{BufRead, BufReader};
-use std::io::{stdout, Read, Write};
use self::termion::raw::IntoRawMode;
+use std::collections::BTreeMap;
+use std::io::{stdout, Read, Write};
+use std::io::{BufRead, BufReader};
+use std::net::TcpStream;
-use math::distance;
-use mass::{Mass, MassType};
-use modules::navigation::Navigation;
+use crate::mass::{Mass, MassType};
+use crate::math::distance;
+use crate::modules::navigation::Navigation;
-pub fn client_navigation(name : String, mut stream : TcpStream, mut buff_r : BufReader<TcpStream>){
+pub fn client_navigation(name: String, mut stream: TcpStream, mut buff_r: BufReader<TcpStream>) {
let stdout = stdout();
let mut stdout = stdout.lock().into_raw_mode().unwrap();
let mut stdin = async_stdin().bytes();
@@ -20,42 +20,48 @@ pub fn client_navigation(name : String, mut stream : TcpStream, mut buff_r : Buf
loop {
let mut recv = String::new();
buff_r.read_line(&mut recv).unwrap();
- let mut within_range : BTreeMap<String, Mass> = serde_json::from_str(&recv).unwrap();
+ let mut within_range: BTreeMap<String, Mass> = serde_json::from_str(&recv).unwrap();
- write!(stdout, "{}{}Targets:",
- termion::clear::All,
- termion::cursor::Goto(1,1)).unwrap();
+ write!(
+ stdout,
+ "{}{}Targets:",
+ termion::clear::All,
+ termion::cursor::Goto(1, 1)
+ )
+ .unwrap();
let ship = within_range.remove(&name).unwrap();
- if let MassType::Ship{ref navigation, ..} = ship.mass_type {
+ if let MassType::Ship { ref navigation, .. } = ship.mass_type {
let navigation = navigation.clone().unwrap();
for (i, (mass_name, mass)) in within_range.iter().enumerate() {
let target_data = get_target_status(&navigation, &mass_name);
- write!(stdout, "{}{}) {} ({:.2}, {:.2}, {:.2}) Distance : {:.2} {}",
- termion::cursor::Goto(1, 2 + i as u16),
- i,
- mass_name,
- mass.position.0,
- mass.position.1,
- mass.position.2,
- distance(mass.position, ship.position),
- target_data
- ).unwrap();
+ write!(
+ stdout,
+ "{}{}) {} ({:.2}, {:.2}, {:.2}) Distance : {:.2} {}",
+ termion::cursor::Goto(1, 2 + i as u16),
+ i,
+ mass_name,
+ mass.position.0,
+ mass.position.1,
+ mass.position.2,
+ distance(mass.position, ship.position),
+ target_data
+ )
+ .unwrap();
}
if let Some(c) = stdin.next() {
let c = c.unwrap() as char;
if c == 'q' {
break;
- }
- else {
+ } else {
let i = c.to_digit(10).unwrap() as usize;
if i < within_range.len() {
let mut send = String::new();
send.push_str(within_range.iter().nth(i).unwrap().0);
send.push_str("\n");
- stream.write(send.as_bytes()).unwrap();
+ stream.write_all(send.as_bytes()).unwrap();
}
}
}
@@ -64,14 +70,15 @@ pub fn client_navigation(name : String, mut stream : TcpStream, mut buff_r : Buf
}
}
-fn get_target_status(navigation : &Navigation, mass_name : &String) -> String {
+fn get_target_status(navigation: &Navigation, mass_name: &str) -> String {
match navigation.target_name.clone() {
Some(name) => {
- match &name == mass_name {
- true => serde_json::to_string(&navigation.status).unwrap(),
- false => String::new()
+ if name == mass_name {
+ serde_json::to_string(&navigation.status).unwrap()
+ } else {
+ String::new()
}
- },
+ }
_ => String::new(),
}
}