From 573ba69d810914c153a578747414b3d631e61bbc Mon Sep 17 00:00:00 2001 From: tom barrett Date: Thu, 12 Apr 2018 04:33:23 -0500 Subject: completely restructured code and fixed navigation bug --- src/engines.rs | 123 --------------------------------------------------------- 1 file changed, 123 deletions(-) delete mode 100644 src/engines.rs (limited to 'src/engines.rs') diff --git a/src/engines.rs b/src/engines.rs deleted file mode 100644 index ce21e35..0000000 --- a/src/engines.rs +++ /dev/null @@ -1,123 +0,0 @@ -use std::net::TcpStream; -use termion::raw::IntoRawMode; -use termion::async_stdin; -use std::thread::sleep; -use std::io::{Read, Write, stdout}; -use std::time::Duration; -use std::io::{BufRead, BufReader}; -use std::collections::HashMap; - -extern crate termion; -extern crate serde_json; - -use ship::Ship; -use mass::Mass; -use targeting::TargetingStatus; -use connection::Connection; - -pub fn client_engines(mut stream : TcpStream, mut buff_r : BufReader) { - let stdout = stdout(); - let mut stdout = stdout.lock().into_raw_mode().unwrap(); - let mut stdin = async_stdin().bytes(); - - loop { - let mut recv = String::new(); - buff_r.read_line(&mut recv).unwrap(); - let has_target = serde_json::from_str(&recv.replace("\n", "")).unwrap(); - - write!(stdout, "{}{}use numpad to freely move\n", termion::clear::All, termion::cursor::Goto(1, 1)).unwrap(); - write!(stdout, "{}+ : speedup", termion::cursor::Goto(1, 2)).unwrap(); - write!(stdout, "{}- : slowdown", termion::cursor::Goto(1, 3)).unwrap(); - write!(stdout, "{}q : quit", termion::cursor::Goto(1, 4)).unwrap(); - - if has_target { - write!(stdout, "{}c : mimic targets velocity vector", termion::cursor::Goto(1,5)).unwrap(); - write!(stdout, "{}t : accelerate torwards target", termion::cursor::Goto(1,6)).unwrap(); - } - - match stdin.next() { - Some(c) => { - 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(send.as_bytes()).unwrap(); - } - None => () - } - - stdout.flush().unwrap(); - sleep(Duration::from_millis(100)); - } -} - -impl Connection { - pub fn server_engines(&mut self, masses : &mut HashMap>) -> bool { - let masses_clone = masses.clone(); - - let mass = masses.get_mut(&self.name).unwrap(); - let ship = mass.downcast_mut::().unwrap(); - - let targeted = ship.recv_targeting_status() == TargetingStatus::Targeted; - let send = serde_json::to_string(&targeted).unwrap() + "\n"; - - match self.stream.write(send.as_bytes()) { - Ok(_result) => (), - Err(_error) => return false, - } - - let mut acceleration = (0.0, 0.0, 0.0); - let mut recv = String::new(); - match self.buff_r.read_line(&mut recv) { - Ok(result) => match recv.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.speedup(), - b"-\n" => ship.slow(), - b"c\n" => { - match ship.recv_target() { - Some(name) => { - let target = masses_clone.get(&name).unwrap(); - let d_v = target.recv_velocity(); - let m_v = ship.recv_velocity(); - acceleration = (d_v.0 - m_v.0, - d_v.1 - m_v.1, - d_v.2 - m_v.2); - }, - None => (), - } - }, - b"t\n" => { - match ship.recv_target() { - Some(name) => { - let target = masses_clone.get(&name).unwrap(); - let d_p = target.position(); - let m_p = ship.position(); - acceleration = ((d_p.0 - m_p.0) * 0.01, - (d_p.1 - m_p.1) * 0.01, - (d_p.2 - m_p.2) * 0.01); - }, - None => (), - } - }, - _ => { - if result == 0 { - return false - } - }, - }, - Err(_error) => (), - } - - ship.give_acceleration(acceleration); - - true - } -} -- cgit v1.2.3