diff options
author | tom barrett <spalf0@gmail.com> | 2019-02-03 05:45:35 -0600 |
---|---|---|
committer | tom barrett <spalf0@gmail.com> | 2019-02-03 05:45:35 -0600 |
commit | 46fa862e04bc43311ba79ef3db70abf9014b9104 (patch) | |
tree | 3507873ec788af1f1e0885bbb676dbb4a373d48e /src/client/navigation.rs | |
parent | 828f0d83dcb258a8e5efd55a7775592c6e5f77bc (diff) |
bringing to 2018
Diffstat (limited to 'src/client/navigation.rs')
-rw-r--r-- | src/client/navigation.rs | 71 |
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(), } } |