private void UseRequiredStock(IList <IProductionRequires> requiedItems) { foreach (var requiredItem in requiedItems) { TradableStockItems.First(item => item.TradeItem.GetType() == requiredItem.ItemRequired.GetType()).RemoveStock(requiredItem.QuantityRequired); } }
private bool CheckRequiredStockAvailable(IList <IProductionRequires> required) { foreach (var requiredItem in required) { if (TradableStockItems.Any(stockItem => stockItem.TradeItem.GetType() == requiredItem.ItemRequired.GetType() && stockItem.QuantityInStock < requiredItem.QuantityRequired)) { return(false); } } return(true); }
public void Tick() { foreach (var item in Production) { if (!CheckRequiredStockAvailable(item.ProductionRequires) || !CheckStorageHasSpaceForNewStock(item)) { break; } TradableStockItems.First(stockItem => stockItem.TradeItem.GetType() == item.ItemProduced.GetType()).AddStock(item.UnitsProducedPerTick); UseRequiredStock(item.ProductionRequires); } }
private bool CheckStorageHasSpaceForNewStock(IProduction <ITradeItem> itemProduced) { var currentStock = TradableStockItems.First(item => item.TradeItem.GetType() == itemProduced.ItemProduced.GetType()); return(ResourceStorage.Any(storage => storage.TradeItem.GetType() == itemProduced.ItemProduced.GetType() && (storage.StorageCapacity - currentStock.QuantityInStock) > itemProduced.UnitsProducedPerTick)); }
public void AddStock(ITradeItem tradeItem, double quantity) { TradableStockItems.First(item => item.TradeItem.GetType() == tradeItem.GetType()).AddStock(quantity); }