From 2940809bf50c2874487ba55efb17ba03c52dd9c2 Mon Sep 17 00:00:00 2001 From: tom barrett Date: Mon, 16 Apr 2018 02:28:33 -0500 Subject: -removed trait objects and went to structs with enumerations completely --- src/mass.rs | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) (limited to 'src/mass.rs') diff --git a/src/mass.rs b/src/mass.rs index f13e8ce..762c9ab 100644 --- a/src/mass.rs +++ b/src/mass.rs @@ -1,12 +1,11 @@ extern crate rand; +use std::collections::HashMap; use self::rand::distributions::Range; use self::rand::distributions::Sample; use storage::Storage; -use module::ModuleType; -use targeting::Targeting; -use mining::Mining; +use module::{Module, ModuleType}; #[derive(Serialize, Deserialize, Debug, Clone)] pub struct Mass { @@ -18,9 +17,7 @@ pub struct Mass { #[derive(Serialize, Deserialize, Debug, Clone)] pub enum MassType { Ship { - modules : Vec, - mining : Mining, - targeting : Targeting, + modules : HashMap, storage : Storage, }, Astroid{ @@ -50,17 +47,15 @@ impl Mass { } pub fn new_ship() -> Mass { - let mut modules = Vec::new(); + let mut modules = HashMap::new(); - modules.push(ModuleType::Navigation); - modules.push(ModuleType::Engines); - modules.push(ModuleType::Dashboard); - modules.push(ModuleType::Mining); + modules.insert("Mining".to_string(), Module::new_mining()); + modules.insert("Engines".to_string(), Module::new_engines()); + modules.insert("Dashboard".to_string(), Module::new_dashboard()); + modules.insert("Navigation".to_string(), Module::new_navigation()); let ship = MassType::Ship { modules : modules, - mining : Mining::new(), - targeting : Targeting::new(), storage : Storage::new(Vec::new()), }; @@ -76,8 +71,10 @@ impl Mass { self.position.1 += self.velocity.1; self.position.2 += self.velocity.2; match self.mass_type { - MassType::Ship{ref mut targeting, ..} => { - targeting.process(); + MassType::Ship{ref mut modules, ..} => { + for module in modules.values_mut() { + module.process(); + } }, _ => (), } -- cgit v1.2.3