summaryrefslogtreecommitdiff
path: root/src/engines.rs
diff options
context:
space:
mode:
authortom barrett <spalf0@gmail.com>2018-04-12 04:33:23 -0500
committertom barrett <spalf0@gmail.com>2018-04-12 04:33:23 -0500
commit573ba69d810914c153a578747414b3d631e61bbc (patch)
tree4ce164db9d28ede9778d75ddb4f6922ea1dc1a91 /src/engines.rs
parentab797e7f30e5e8913faf73516346129b9a620550 (diff)
completely restructured code and fixed navigation bug
Diffstat (limited to 'src/engines.rs')
-rw-r--r--src/engines.rs123
1 files changed, 0 insertions, 123 deletions
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<TcpStream>) {
- 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<String, Box<Mass>>) -> bool {
- let masses_clone = masses.clone();
-
- let mass = masses.get_mut(&self.name).unwrap();
- let ship = mass.downcast_mut::<Ship>().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
- }
-}