From 070485e093dc540a5db9650d438cffe3d18d3883 Mon Sep 17 00:00:00 2001 From: tom barrett Date: Tue, 12 Feb 2019 13:20:06 -0600 Subject: added constants file, made so items are referred to by an enum, figured better ways than ship_clone --- src/server/refinery.rs | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) (limited to 'src/server/refinery.rs') diff --git a/src/server/refinery.rs b/src/server/refinery.rs index d4eb26b..7cec23e 100644 --- a/src/server/refinery.rs +++ b/src/server/refinery.rs @@ -4,31 +4,34 @@ use std::collections::HashMap; use std::io::BufRead; use std::io::Write; -use crate::item::Item; +use crate::item::{Item, ItemType}; use crate::mass::{Mass, MassType}; use crate::modules::refinery::RefineryStatus; use crate::server::connection::ServerConnection; #[derive(Serialize, Deserialize, Debug, Clone)] pub struct RefineryData { - pub has_minerals: bool, + pub has_crude_minerals: bool, pub status: RefineryStatus, } impl ServerConnection { pub fn server_refinery(&mut self, masses: &mut HashMap) { let mut ship = masses.remove(&self.name).unwrap(); - let ship_clone = ship.clone(); - let mut refine = false; if let MassType::Ship { - ref mut refinery, .. + ref mut refinery, + ref mut storage, + .. } = ship.mass_type { let refinery = refinery.as_mut().unwrap(); let refinery_data = RefineryData { - has_minerals: ship_clone.has_minerals(), + has_crude_minerals: storage + .items + .iter() + .any(|item| item.itemtype == ItemType::CrudeMinerals), status: refinery.status.clone(), }; @@ -36,21 +39,17 @@ impl ServerConnection { refinery.toggle(); } - if !refinery_data.has_minerals { + if !refinery_data.has_crude_minerals { refinery.off(); } if refinery.status == RefineryStatus::Refined { - refinery.take(); - refine = true; + storage.take_item(ItemType::CrudeMinerals); + storage.give_item(Item::new(ItemType::Iron)); + refinery.taken(); } } - if refine { - ship.take("Mineral"); - ship.give(Item::new("Refined Mineral", 1)); - } - masses.insert(self.name.clone(), ship); } @@ -64,7 +63,7 @@ impl ServerConnection { if let Ok(result) = self.buff_r.read_line(&mut recv) { match recv.as_bytes() { b"R\n" => { - if refinery_data.has_minerals { + if refinery_data.has_crude_minerals { return true; } } -- cgit v1.2.3