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/module.rs | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 87 insertions(+), 3 deletions(-) (limited to 'src/module.rs') diff --git a/src/module.rs b/src/module.rs index 937c63c..0318aad 100644 --- a/src/module.rs +++ b/src/module.rs @@ -1,7 +1,91 @@ -#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, Hash)] +use std::time::SystemTime; + +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)] +pub enum NavigationStatus { + None, + Targeting, + Targeted, +} + +#[derive(Serialize, Deserialize, Debug, Clone)] +pub struct Module { + pub module_type : ModuleType, +} + +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)] pub enum ModuleType { - Mining, + Mining { + range : f64, + status : bool, + time : u64, + start : Option, + }, + Navigation { + range : f64, + status : NavigationStatus, + time : u64, + start : Option, + target_name : Option, + }, Engines, Dashboard, - Navigation, +} + +impl Module { + pub fn new_mining() -> Module { + let mining = ModuleType::Mining { + range : 10.0, + status : false, + time : 1, + start : None, + }; + + Module { + module_type : mining, + } + } + + pub fn new_navigation() -> Module { + let navigation = ModuleType::Navigation { + target_name : None, + range : 100.0, + status : NavigationStatus::None, + time : 3, + start : None, + }; + + Module { + module_type : navigation, + } + } + + pub fn new_dashboard() -> Module { + Module { + module_type : ModuleType::Dashboard, + } + } + + pub fn new_engines() -> Module { + Module { + module_type : ModuleType::Engines, + } + } + + pub fn process(&mut self) { + match self.module_type { + ModuleType::Navigation{ref mut status, ref mut start, ref time, ..} => { + match start.clone() { + Some(timer) => { + if timer.elapsed().unwrap().as_secs() > *time { + *status = NavigationStatus::Targeted; + *start = None; + } + } + _ => (), + } + }, + ModuleType::Mining{..} => (), + _ => (), + } + } } -- cgit v1.2.3