public void ConsumeWood(int amount) { var stockpilesWithWood = _worldPlane.GetBlocksWithOccupants() .Select(block => block.GetOccupant().GetComponent <StockpileSpawn>()) .Where(component => component != null && component.HasWood()); int remainingAmount = amount; foreach (var stockpile in stockpilesWithWood) { var toConsume = Mathf.Min(remainingAmount, stockpile.StoredCount()); remainingAmount -= toConsume; stockpile.Consume(toConsume); if (remainingAmount == 0) { return; } } }