From 3d0efb20ac17ae18c495ffbb1b7d28b22851cb28 Mon Sep 17 00:00:00 2001 From: tom barrett Date: Wed, 28 Feb 2018 10:05:22 -0600 Subject: -got rid of erased-serde, set up navigation better --- src/navigation.rs | 50 +++++++++++++++++++------------------------------- 1 file changed, 19 insertions(+), 31 deletions(-) (limited to 'src/navigation.rs') diff --git a/src/navigation.rs b/src/navigation.rs index 430ebc0..e55b65a 100644 --- a/src/navigation.rs +++ b/src/navigation.rs @@ -1,15 +1,12 @@ use std::net::TcpStream; use std::io::{BufRead, BufReader}; -use std::io::{stdout, Read, Write, stdin}; +use std::io::{stdout, Read, Write}; use termion::raw::IntoRawMode; use termion::async_stdin; -extern crate erased_serde; extern crate serde_json; extern crate termion; -use erased_serde::Deserializer; - use mass::Mass; use ship::Ship; use math::distance; @@ -26,29 +23,15 @@ pub fn client_navigation(name : String, mut stream : TcpStream, mut buff_r : Buf let string_masses = data.split(";"); let mut masses : Vec> = Vec::new(); - let mut ship : Option = None; for string_mass in string_masses { if string_mass.len() == 1 { break; } - 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(); - if mass.name() == &name { - ship = Some(mass); - } - else { - masses.push(Box::new(mass)); - } - } - else { - let mass : Astroid = erased_serde::deserialize(&mut deserialized).unwrap(); - masses.push(Box::new(mass)); - } + masses.push(build_mass(string_mass)); } + let ship = masses.iter().find(|ship| ship.name() == &name); + write!(stdout, "{}{}Targets:", termion::clear::All, termion::cursor::Goto(1,1)).unwrap(); @@ -109,19 +92,24 @@ pub fn server_navigation(masses : &mut Vec>, index : usize, mut stream 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(); - } + let target = build_mass(&string_mass); + //ship.give_target(masses.iter().position(|mass| + // mass.name() == target.name())); } - */ + true } + +fn build_mass(string_mass : &str) -> Box { + let mut mass = Astroid::new(); + if string_mass.contains("Ship") { + let mass : Ship = serde_json::from_str(&string_mass).unwrap(); + } + else { + let mass : Astroid = serde_json::from_str(&string_mass).unwrap(); + } + Box::new(mass) +} -- cgit v1.2.3