From eb920a2c85e4ce4bbf755968a42218c0eb74987f Mon Sep 17 00:00:00 2001 From: tom barrett Date: Wed, 20 Feb 2019 14:03:39 -0600 Subject: better mass access functions which improved testing code --- src/modules/construction.rs | 21 +++++++-------------- src/modules/mining.rs | 25 ++++++++++--------------- 2 files changed, 17 insertions(+), 29 deletions(-) (limited to 'src/modules') diff --git a/src/modules/construction.rs b/src/modules/construction.rs index 0eec155..091ebc6 100644 --- a/src/modules/construction.rs +++ b/src/modules/construction.rs @@ -33,7 +33,7 @@ impl Construction { masses: &mut HashMap, storage: &mut Storage, ) { - if !self.has_enough(storage) { + if storage.item_count(ItemType::Iron) < constants::SHIP_CONSTRUCTION_IRON_COST { self.off(); } if let Some(timer) = self.start { @@ -43,9 +43,10 @@ impl Construction { } } if self.status == Status::Constructed { - storage - .take_items(ItemType::Iron, constants::SHIP_CONSTRUCTION_IRON_COST) - .unwrap(); + for _ in 0..constants::SHIP_CONSTRUCTION_IRON_COST { + storage.take_item(ItemType::Iron).unwrap(); + } + masses.insert( "Station".to_string(), Mass::new_station( @@ -60,7 +61,8 @@ impl Construction { pub fn get_client_data(&self, storage: &Storage) -> String { let client_data = ClientData { - has_enough: self.has_enough(storage), + has_enough: storage.item_count(ItemType::Iron) + >= constants::SHIP_CONSTRUCTION_IRON_COST, status: self.status.clone(), }; serde_json::to_string(&client_data).unwrap() + "\n" @@ -72,15 +74,6 @@ impl Construction { } } - fn has_enough(&self, storage: &Storage) -> bool { - storage - .items - .iter() - .filter(|item| item.item_type == ItemType::Iron) - .count() - >= constants::SHIP_CONSTRUCTION_IRON_COST - } - fn toggle(&mut self) { match self.status { Status::None => self.on(), diff --git a/src/modules/mining.rs b/src/modules/mining.rs index 816313e..01d7663 100644 --- a/src/modules/mining.rs +++ b/src/modules/mining.rs @@ -42,23 +42,18 @@ impl Mining { } } if self.status == Status::Mined { - if let MassType::Astroid { - ref mut resources, .. - } = target.mass_type - { - match resources.take_item(ItemType::CrudeMinerals) { - Some(item) => { - if !storage.give_item(item.clone()) { - let mass = Mass::new_item( - item.clone(), - target.position.clone(), - target.velocity.clone(), - ); - masses.insert(item.name.clone(), mass); - } + match target.take_item(ItemType::CrudeMinerals) { + Some(item) => { + if !storage.give_item(item.clone()) { + let mass = Mass::new_item( + item.clone(), + target.position.clone(), + target.velocity.clone(), + ); + masses.insert(item.name.clone(), mass); } - None => self.off(), } + None => self.off(), } self.mined(); } -- cgit v1.2.3