public void Consume() { FoodLevel = 0; foreach (ResourceType resourceType in ResourceTypes.resourceTypes) { double neededAmount = demand.GetDemand(resourceType); if (neededAmount == 0) { continue; } double amountInStock = stock.GetAmount(resourceType); double ratio = Math.Min(1, amountInStock / neededAmount); FoodLevel += ratio * demand.GetLifeValueAdjusted(resourceType); stock.Adjust(new Resource(resourceType, -ratio * neededAmount)); } }