diff options
Diffstat (limited to 'src/engines.rs')
-rw-r--r-- | src/engines.rs | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/src/engines.rs b/src/engines.rs index b50a6ae..64d80bc 100644 --- a/src/engines.rs +++ b/src/engines.rs @@ -4,8 +4,13 @@ use termion::async_stdin; use std::thread::sleep; use std::io::{Read, Write, stdout}; use std::time::Duration; +use std::io::BufReader; +use std::io::BufRead; -pub fn Engines(mut stream : TcpStream) { +use ship::Ship; +use mass::Mass; + +pub fn client_engines(mut stream : TcpStream) { let stdout = stdout(); let mut stdout = stdout.lock().into_raw_mode().unwrap(); let mut stdin = async_stdin().bytes(); @@ -29,3 +34,27 @@ pub fn Engines(mut stream : TcpStream) { sleep(Duration::from_millis(100)); } } + +pub fn server_engines(buff_r : &mut BufReader<TcpStream>, ship : &mut Box<Mass>) -> bool { + let mut acceleration = (0.0, 0.0, 0.0); + let mut data = String::new(); + match buff_r.read_line(&mut data) { + Ok(result) => match data.as_bytes() { + b"5\n" => acceleration.0 += 0.1, + b"0\n" => acceleration.0 -= 0.1, + b"8\n" => acceleration.1 += 0.1, + b"2\n" => acceleration.1 -= 0.1, + b"4\n" => acceleration.2 += 0.1, + b"6\n" => acceleration.2 -= 0.1, + b"-\n" => ship.slow(), + _ => { + if result == 0 { + return false + } + }, + }, + Err(_error) => (), + } + ship.give_acceleration(acceleration); + true +} |