From 1edbee505f2f026ab78603fcb0a38f3acbd0dad1 Mon Sep 17 00:00:00 2001 From: tom barrett Date: Wed, 28 Feb 2018 06:33:25 -0600 Subject: -moved server modules into their respecive modules --- src/navigation.rs | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) (limited to 'src/navigation.rs') diff --git a/src/navigation.rs b/src/navigation.rs index 978c154..430ebc0 100644 --- a/src/navigation.rs +++ b/src/navigation.rs @@ -1,6 +1,5 @@ use std::net::TcpStream; use std::io::{BufRead, BufReader}; - use std::io::{stdout, Read, Write, stdin}; use termion::raw::IntoRawMode; use termion::async_stdin; @@ -16,7 +15,7 @@ use ship::Ship; use math::distance; use astroid::Astroid; -pub fn Navigation(name : String, mut stream : TcpStream, mut buff_r : BufReader){ +pub fn client_navigation(name : String, 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(); @@ -92,3 +91,37 @@ pub fn Navigation(name : String, mut stream : TcpStream, mut buff_r : BufReader< stdout.flush().unwrap(); } } + +pub fn server_navigation(masses : &mut Vec>, index : usize, mut stream : &TcpStream, buff_r : &mut BufReader) -> bool { + let ship = masses[index].downcast_ref::().unwrap(); + + let within_range : Vec<&Box> = masses.iter().filter(|mass| + distance(ship.position(), mass.position()) < ship.range()).collect(); + + let mut send = String::new(); + for mass in within_range { + send.push_str(&mass.serialize()); + send.push_str(";"); + } + send.push_str("\n"); + match stream.write(send.as_bytes()) { + Ok(_result) => (), + Err(_error) => return false, + } + + /* + let mut string_mass = String::new(); + buff_r.read_line(&mut string_mass).unwrap(); + if string_mass.len() > 0 { + let json = &mut serde_json::de::Deserializer::from_slice(string_mass.as_bytes()); + let mut deserialized : Box = Box::new(Deserializer::erase(json)); + if string_mass.contains("Ship") { + let mass : Ship = erased_serde::deserialize(&mut deserialized).unwrap(); + } + else { + let mass : Astroid = erased_serde::deserialize(&mut deserialized).unwrap(); + } + } + */ + true +} -- cgit v1.2.3