diff options
author | tom barrett <spalf0@gmail.com> | 2019-03-21 09:48:59 -0500 |
---|---|---|
committer | tom barrett <spalf0@gmail.com> | 2019-03-21 09:48:59 -0500 |
commit | 6fb0b0d918963a22aeb4050139e8d0000c74a9ff (patch) | |
tree | 72c9ff1d51fbf8d599ad27730b5feab4d921c0a2 | |
parent | 69aa9f090d551c1ebb211f3a01273b28421fc9c0 (diff) |
simplified client sending and added more tractorbeam options
-rw-r--r-- | src/client/construction.rs | 17 | ||||
-rw-r--r-- | src/client/dashboard.rs | 12 | ||||
-rw-r--r-- | src/client/engines.rs | 17 | ||||
-rw-r--r-- | src/client/mining.rs | 17 | ||||
-rw-r--r-- | src/client/navigation.rs | 25 | ||||
-rw-r--r-- | src/client/refinery.rs | 17 | ||||
-rw-r--r-- | src/client/tractorbeam.rs | 48 |
7 files changed, 79 insertions, 74 deletions
diff --git a/src/client/construction.rs b/src/client/construction.rs index 28a91be..b555601 100644 --- a/src/client/construction.rs +++ b/src/client/construction.rs @@ -13,7 +13,7 @@ use crate::modules::construction; pub fn client_construction(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(); + let mut stdin = async_stdin(); loop { let mut recv = String::new(); @@ -41,16 +41,13 @@ pub fn client_construction(mut stream: TcpStream, mut buff_r: BufReader<TcpStrea .unwrap(); } - if let Some(c) = stdin.next() { - let c = c.unwrap(); - let mut send = String::new(); - send.push(c as char); - if send.as_bytes() == b"q" { - break; - } - send.push_str("\n"); - stream.write_all(send.as_bytes()).unwrap(); + let mut key = String::new(); + stdin.read_to_string(&mut key).unwrap(); + if key.as_str() == "q" { + break; } + key.push_str("\n"); + stream.write_all(key.as_bytes()).unwrap(); stdout.flush().unwrap(); } diff --git a/src/client/dashboard.rs b/src/client/dashboard.rs index ec1fd4b..c6e7718 100644 --- a/src/client/dashboard.rs +++ b/src/client/dashboard.rs @@ -11,7 +11,7 @@ use crate::mass::Mass; pub fn client_dashboard(mut buff_r: BufReader<TcpStream>) { let stdout = stdout(); let mut stdout = stdout.lock().into_raw_mode().unwrap(); - let mut stdin = async_stdin().bytes(); + let mut stdin = async_stdin(); loop { let mut recv = String::new(); @@ -27,12 +27,12 @@ pub fn client_dashboard(mut buff_r: BufReader<TcpStream>) { ) .unwrap(); - if let Some(c) = stdin.next() { - let c = c.unwrap() as char; - if c == 'q' { - break; - } + let mut key = String::new(); + stdin.read_to_string(&mut key).unwrap(); + if key.as_str() == "q" { + break; } + stdout.flush().unwrap(); } } diff --git a/src/client/engines.rs b/src/client/engines.rs index 52af206..8cb709e 100644 --- a/src/client/engines.rs +++ b/src/client/engines.rs @@ -14,7 +14,7 @@ use crate::modules::engines; pub fn client_engines(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(); + let mut stdin = async_stdin(); loop { let mut recv = String::new(); @@ -50,16 +50,13 @@ pub fn client_engines(mut stream: TcpStream, mut buff_r: BufReader<TcpStream>) { .unwrap(); } - if let Some(c) = stdin.next() { - let c = c.unwrap(); - let mut send = String::new(); - send.push(c as char); - if send.as_bytes() == b"q" { - break; - } - send.push_str("\n"); - stream.write_all(send.as_bytes()).unwrap(); + let mut key = String::new(); + stdin.read_to_string(&mut key).unwrap(); + if key.as_str() == "q" { + break; } + key.push_str("\n"); + stream.write_all(key.as_bytes()).unwrap(); stdout.flush().unwrap(); sleep(Duration::from_millis(100)); diff --git a/src/client/mining.rs b/src/client/mining.rs index c9ad3dc..5c69ef8 100644 --- a/src/client/mining.rs +++ b/src/client/mining.rs @@ -12,7 +12,7 @@ use crate::modules::mining; pub fn client_mining(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(); + let mut stdin = async_stdin(); loop { let mut recv = String::new(); @@ -47,16 +47,13 @@ pub fn client_mining(mut stream: TcpStream, mut buff_r: BufReader<TcpStream>) { write!(stdout, "{}Ship has no astroid targeted.", clear).unwrap(); } - if let Some(c) = stdin.next() { - let c = c.unwrap(); - let mut send = String::new(); - send.push(c as char); - if send.as_bytes() == b"q" { - break; - } - send.push_str("\n"); - stream.write_all(send.as_bytes()).unwrap(); + let mut key = String::new(); + stdin.read_to_string(&mut key).unwrap(); + if key.as_str() == "q" { + break; } + key.push_str("\n"); + stream.write_all(key.as_bytes()).unwrap(); stdout.flush().unwrap(); } diff --git a/src/client/navigation.rs b/src/client/navigation.rs index 7e6959b..ba6d912 100644 --- a/src/client/navigation.rs +++ b/src/client/navigation.rs @@ -12,7 +12,7 @@ use crate::modules::navigation; pub fn client_navigation(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(); + let mut stdin = async_stdin(); loop { let mut recv = String::new(); @@ -51,20 +51,19 @@ pub fn client_navigation(mut stream: TcpStream, mut buff_r: BufReader<TcpStream> .unwrap(); } - if let Some(c) = stdin.next() { - let c = c.unwrap() as char; - if c == 'q' { - break; - } else { - let i = c.to_digit(10).unwrap() as usize; - if i < navigation_data.available_targets.len() { - let mut send = String::new(); - send.push_str(&navigation_data.available_targets[i].0); - send.push_str("\n"); - stream.write_all(send.as_bytes()).unwrap(); - } + let mut key = String::new(); + stdin.read_to_string(&mut key).unwrap(); + if key.as_str() == "q" { + break; + } else { + let mut send = String::new(); + if let Ok(i) = key.parse::<usize>() { + send.push_str(&navigation_data.available_targets[i].0); + send.push_str("\n"); + stream.write_all(send.as_bytes()).unwrap(); } } + stdout.flush().unwrap(); } } diff --git a/src/client/refinery.rs b/src/client/refinery.rs index 99d4be7..9b16c94 100644 --- a/src/client/refinery.rs +++ b/src/client/refinery.rs @@ -12,7 +12,7 @@ use crate::modules::refinery; pub fn client_refinery(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(); + let mut stdin = async_stdin(); loop { let mut recv = String::new(); @@ -34,16 +34,13 @@ pub fn client_refinery(mut stream: TcpStream, mut buff_r: BufReader<TcpStream>) write!(stdout, "{}You have no crude minerals.", clear).unwrap(); } - if let Some(c) = stdin.next() { - let c = c.unwrap(); - let mut send = String::new(); - send.push(c as char); - if send.as_bytes() == b"q" { - break; - } - send.push_str("\n"); - stream.write_all(send.as_bytes()).unwrap(); + let mut key = String::new(); + stdin.read_to_string(&mut key).unwrap(); + if key.as_str() == "q" { + break; } + key.push_str("\n"); + stream.write_all(key.as_bytes()).unwrap(); stdout.flush().unwrap(); } diff --git a/src/client/tractorbeam.rs b/src/client/tractorbeam.rs index c8a6d92..0274886 100644 --- a/src/client/tractorbeam.rs +++ b/src/client/tractorbeam.rs @@ -6,13 +6,19 @@ use self::termion::raw::IntoRawMode; use std::io::{stdout, Read, Write}; use std::io::{BufRead, BufReader}; use std::net::TcpStream; +use std::str::FromStr; use crate::modules::tractorbeam; pub fn client_tractorbeam(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(); + let mut async_in = async_stdin(); + + let mut server_recv_data = tractorbeam::ServerRecvData { + key: String::from_str("").unwrap(), + desired_distance: None, + }; loop { let mut recv = String::new(); @@ -22,30 +28,36 @@ pub fn client_tractorbeam(mut stream: TcpStream, mut buff_r: BufReader<TcpStream write!(stdout, "{}", termion::clear::All).unwrap(); let clear = termion::cursor::Goto(1, 1); - if data.has_target { match data.status { tractorbeam::Status::None => write!( stdout, - "{}Press o to pull, p to push, b to bring to 5m.", + "{}Press o to pull, p to push, b to bring to a specific distance, a to acquire item.", clear ) .unwrap(), tractorbeam::Status::Push => write!( stdout, - "{}Press o to pull, p to stop pushing, b to bring to 5m.", + "{}Press o to pull, p to stop pushing, b to bring to a specific distance, a to acquire item.", clear ) .unwrap(), tractorbeam::Status::Pull => write!( stdout, - "{}Press o to stop pulling, p to push, b to bring to 5m.", + "{}Press o to stop pulling, p to push, b to bring to a specific distance, a to acquire item.", clear ) .unwrap(), tractorbeam::Status::Bring => write!( stdout, - "{}Press o to pulling, p to push, b to stop bringing to 5m.", + "{}Press o to pull, p to push, b to stop bringing to {} m, a to acquire item.", + clear, + data.desired_distance.unwrap(), + ) + .unwrap(), + tractorbeam::Status::Acquire => write!( + stdout, + "{}Press o to pull, p to push, b to bring to a specific distance, a to stop acquiring the item.", clear ) .unwrap(), @@ -54,16 +66,22 @@ pub fn client_tractorbeam(mut stream: TcpStream, mut buff_r: BufReader<TcpStream write!(stdout, "{}You have no target.", clear).unwrap(); } - if let Some(c) = stdin.next() { - let c = c.unwrap(); - let mut send = String::new(); - send.push(c as char); - if send.as_bytes() == b"q" { - break; - } - send.push_str("\n"); - stream.write_all(send.as_bytes()).unwrap(); + server_recv_data.desired_distance = None; + + let mut key = String::new(); + async_in.read_to_string(&mut key).unwrap(); + + if key.as_str() == "q" { + break; + } else if key.as_str() == "b" && data.has_target { + server_recv_data.desired_distance = Some(5.0); } + + server_recv_data.key = key.to_string(); + + let send = serde_json::to_string(&server_recv_data).unwrap() + "\n"; + stream.write_all(send.as_bytes()).unwrap(); + stdout.flush().unwrap(); } } |