diff options
author | tom barrett <spalf0@gmail.com> | 2019-02-13 13:25:00 -0600 |
---|---|---|
committer | tom barrett <spalf0@gmail.com> | 2019-02-13 13:25:00 -0600 |
commit | 284cac8f4034f15e7edeba5c8232a770fc082e20 (patch) | |
tree | 8f73230bae89c3bf796e47f7c52ac84f7015bd09 /src/server/engines.rs | |
parent | 070485e093dc540a5db9650d438cffe3d18d3883 (diff) |
added engine fuel and simplified/unified txrx from server
Diffstat (limited to 'src/server/engines.rs')
-rw-r--r-- | src/server/engines.rs | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/src/server/engines.rs b/src/server/engines.rs index f3e68f0..86ef5ec 100644 --- a/src/server/engines.rs +++ b/src/server/engines.rs @@ -1,12 +1,17 @@ extern crate serde_json; use std::collections::HashMap; -use std::io::BufRead; use std::io::Write; use crate::mass::{Mass, MassType}; use crate::modules::navigation::NavigationStatus; -use crate::server::connection::ServerConnection; +use crate::server::connection::{receive, ServerConnection}; + +#[derive(Serialize, Deserialize, Debug, Clone)] +pub struct EnginesData { + pub has_target: bool, + pub fuel: f64, +} impl ServerConnection { pub fn server_engines(&mut self, masses: &mut HashMap<String, Mass>) { @@ -21,29 +26,27 @@ impl ServerConnection { { let navigation = navigation.clone().unwrap(); let engines = engines.as_mut().unwrap(); - let targeted = navigation.status == NavigationStatus::Targeted; - let send = serde_json::to_string(&targeted).unwrap() + "\n"; - if let Err(_err) = self.stream.write(send.as_bytes()) { - self.open = false; - } + let engines_data = EnginesData { + has_target: navigation.status == NavigationStatus::Targeted, + fuel: engines.fuel, + }; + let send = serde_json::to_string(&engines_data).unwrap() + "\n"; + self.open = self.stream.write(send.as_bytes()).is_ok(); let target = match navigation.target_name { Some(name) => masses.get(&name), None => None, }; - let mut recv = String::new(); - if let Ok(result) = self.buff_r.read_line(&mut recv) { - engines.give_client_data( + match receive(&mut self.buff_r) { + Some(recv) => engines.give_client_data( ship.position.clone(), ship.velocity.clone(), target, recv, - ); - if result == 0 { - self.open = false; - } + ), + None => self.open = false, } } |