summaryrefslogtreecommitdiff
path: root/src/modules
diff options
context:
space:
mode:
authortom barrett <spalf0@gmail.com>2019-02-20 14:03:39 -0600
committertom barrett <spalf0@gmail.com>2019-02-20 14:03:39 -0600
commiteb920a2c85e4ce4bbf755968a42218c0eb74987f (patch)
tree95943cfb9fa4d5b20dc38af0896d5d69e9bbb706 /src/modules
parentc6be289134c1f749884d269f955b39d39b604469 (diff)
better mass access functions which improved testing code
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/construction.rs21
-rw-r--r--src/modules/mining.rs25
2 files changed, 17 insertions, 29 deletions
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<String, Mass>,
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();
}