diff options
author | tom barrett <spalf0@gmail.com> | 2019-02-19 13:24:25 -0600 |
---|---|---|
committer | tom barrett <spalf0@gmail.com> | 2019-02-19 13:24:25 -0600 |
commit | a4efade392aa7127c373b0247d39274cb0decd10 (patch) | |
tree | 72ff44e69917873ca9933c4a56794a15b99fb90c /src/client | |
parent | 892088d723fd3dc0aae969273331c2765f322e6f (diff) |
unified all server->client connection and brought logic to modules
Diffstat (limited to 'src/client')
-rw-r--r-- | src/client/construction.rs | 5 | ||||
-rw-r--r-- | src/client/engines.rs | 5 | ||||
-rw-r--r-- | src/client/mining.rs | 5 | ||||
-rw-r--r-- | src/client/navigation.rs | 80 | ||||
-rw-r--r-- | src/client/refinery.rs | 5 | ||||
-rw-r--r-- | src/client/tractorbeam.rs | 5 |
6 files changed, 46 insertions, 59 deletions
diff --git a/src/client/construction.rs b/src/client/construction.rs index 8cb812f..8549c09 100644 --- a/src/client/construction.rs +++ b/src/client/construction.rs @@ -8,8 +8,7 @@ use std::io::{BufRead, BufReader}; use std::net::TcpStream; use crate::constants; -use crate::modules::construction::ConstructionStatus; -use crate::server::construction::ConstructionData; +use crate::modules::construction::{ConstructionClientData, ConstructionStatus}; pub fn client_construction(mut stream: TcpStream, mut buff_r: BufReader<TcpStream>) { let stdout = stdout(); @@ -19,7 +18,7 @@ pub fn client_construction(mut stream: TcpStream, mut buff_r: BufReader<TcpStrea loop { let mut recv = String::new(); buff_r.read_line(&mut recv).unwrap(); - let data: ConstructionData = serde_json::from_str(&recv.replace("\n", "")).unwrap(); + let data: ConstructionClientData = serde_json::from_str(&recv.replace("\n", "")).unwrap(); write!(stdout, "{}", termion::clear::All).unwrap(); diff --git a/src/client/engines.rs b/src/client/engines.rs index 32d869a..dc3799b 100644 --- a/src/client/engines.rs +++ b/src/client/engines.rs @@ -9,7 +9,7 @@ use std::net::TcpStream; use std::thread::sleep; use std::time::Duration; -use crate::server::engines::EnginesData; +use crate::modules::engines::EnginesClientData; pub fn client_engines(mut stream: TcpStream, mut buff_r: BufReader<TcpStream>) { let stdout = stdout(); @@ -19,7 +19,8 @@ pub fn client_engines(mut stream: TcpStream, mut buff_r: BufReader<TcpStream>) { loop { let mut recv = String::new(); buff_r.read_line(&mut recv).unwrap(); - let engines_data: EnginesData = serde_json::from_str(&recv.replace("\n", "")).unwrap(); + let engines_data: EnginesClientData = + serde_json::from_str(&recv.replace("\n", "")).unwrap(); writeln!( stdout, diff --git a/src/client/mining.rs b/src/client/mining.rs index 5515f3a..84dfcb6 100644 --- a/src/client/mining.rs +++ b/src/client/mining.rs @@ -7,8 +7,7 @@ use std::io::{stdout, Read, Write}; use std::io::{BufRead, BufReader}; use std::net::TcpStream; -use crate::modules::mining::MiningStatus; -use crate::server::mining::MiningData; +use crate::modules::mining::{MiningClientData, MiningStatus}; pub fn client_mining(mut stream: TcpStream, mut buff_r: BufReader<TcpStream>) { let stdout = stdout(); @@ -18,7 +17,7 @@ pub fn client_mining(mut stream: TcpStream, mut buff_r: BufReader<TcpStream>) { loop { let mut recv = String::new(); buff_r.read_line(&mut recv).unwrap(); - let data: MiningData = serde_json::from_str(&recv.replace("\n", "")).unwrap(); + let data: MiningClientData = serde_json::from_str(&recv.replace("\n", "")).unwrap(); write!(stdout, "{}", termion::clear::All).unwrap(); diff --git a/src/client/navigation.rs b/src/client/navigation.rs index 43daafb..586ac9e 100644 --- a/src/client/navigation.rs +++ b/src/client/navigation.rs @@ -3,15 +3,13 @@ extern crate termion; use self::termion::async_stdin; 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 crate::mass::{Mass, MassType}; -use crate::modules::navigation::Navigation; +use crate::modules::navigation::NavigationClientData; -pub fn client_navigation(name: String, mut stream: TcpStream, mut buff_r: BufReader<TcpStream>) { +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(); @@ -19,7 +17,7 @@ pub fn client_navigation(name: String, mut stream: TcpStream, mut buff_r: BufRea 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 navigation_data: NavigationClientData = serde_json::from_str(&recv).unwrap(); write!( stdout, @@ -29,52 +27,44 @@ pub fn client_navigation(name: String, mut stream: TcpStream, mut buff_r: BufRea ) .unwrap(); - let ship = within_range.remove(&name).unwrap(); - - if let MassType::Ship { ref navigation, .. } = ship.mass_type { - for (i, (mass_name, mass)) in within_range.iter().enumerate() { - let target_data = get_target_status(&navigation, &mass_name); - write!( - stdout, - "{}{}) {} {} Distance : {:.2} {}", - termion::cursor::Goto(1, 2 + i as u16), - i, - mass_name, - mass.position, - mass.position.distance_from(ship.position.clone()), - target_data - ) - .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 < within_range.len() { - let mut send = String::new(); - send.push_str(within_range.iter().nth(i).unwrap().0); - send.push_str("\n"); - stream.write_all(send.as_bytes()).unwrap(); + for (i, (name, position)) in navigation_data.available_targets.iter().enumerate() { + let target_status = match &navigation_data.target_name { + Some(target_name) => { + if target_name == name { + serde_json::to_string(&navigation_data.status).unwrap() + } else { + String::new() } } - } + None => String::new(), + }; + write!( + stdout, + "{}{}) {} {} Distance : {:.2} {}", + termion::cursor::Goto(1, 2 + i as u16), + i, + name, + position, + position.distance_from(navigation_data.ship_position.clone()), + target_status + ) + .unwrap(); } - stdout.flush().unwrap(); - } -} -fn get_target_status(navigation: &Navigation, mass_name: &str) -> String { - match navigation.target_name.clone() { - Some(name) => { - if name == mass_name { - serde_json::to_string(&navigation.status).unwrap() + if let Some(c) = stdin.next() { + let c = c.unwrap() as char; + if c == 'q' { + break; } else { - String::new() + 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(); + } } } - None => String::new(), + stdout.flush().unwrap(); } } diff --git a/src/client/refinery.rs b/src/client/refinery.rs index a3ae6f4..a977e04 100644 --- a/src/client/refinery.rs +++ b/src/client/refinery.rs @@ -7,8 +7,7 @@ use std::io::{stdout, Read, Write}; use std::io::{BufRead, BufReader}; use std::net::TcpStream; -use crate::modules::refinery::RefineryStatus; -use crate::server::refinery::RefineryData; +use crate::modules::refinery::{RefineryClientData, RefineryStatus}; pub fn client_refinery(mut stream: TcpStream, mut buff_r: BufReader<TcpStream>) { let stdout = stdout(); @@ -18,7 +17,7 @@ pub fn client_refinery(mut stream: TcpStream, mut buff_r: BufReader<TcpStream>) loop { let mut recv = String::new(); buff_r.read_line(&mut recv).unwrap(); - let data: RefineryData = serde_json::from_str(&recv.replace("\n", "")).unwrap(); + let data: RefineryClientData = serde_json::from_str(&recv.replace("\n", "")).unwrap(); write!(stdout, "{}", termion::clear::All).unwrap(); diff --git a/src/client/tractorbeam.rs b/src/client/tractorbeam.rs index e9e60b2..16508b5 100644 --- a/src/client/tractorbeam.rs +++ b/src/client/tractorbeam.rs @@ -7,8 +7,7 @@ use std::io::{stdout, Read, Write}; use std::io::{BufRead, BufReader}; use std::net::TcpStream; -use crate::modules::tractorbeam::TractorbeamStatus; -use crate::server::tractorbeam::TractorbeamData; +use crate::modules::tractorbeam::{TractorbeamClientData, TractorbeamStatus}; pub fn client_tractorbeam(mut stream: TcpStream, mut buff_r: BufReader<TcpStream>) { let stdout = stdout(); @@ -18,7 +17,7 @@ pub fn client_tractorbeam(mut stream: TcpStream, mut buff_r: BufReader<TcpStream loop { let mut recv = String::new(); buff_r.read_line(&mut recv).unwrap(); - let data: TractorbeamData = serde_json::from_str(&recv.replace("\n", "")).unwrap(); + let data: TractorbeamClientData = serde_json::from_str(&recv.replace("\n", "")).unwrap(); write!(stdout, "{}", termion::clear::All).unwrap(); |