public static bool TryConsumeFeedstock(this PowerNet net, float feedstockNeeded) { if (feedstockNeeded <= 0f) { Log.Warning("[Replimat] " + "Tried to draw 0 feedstock!"); return(false); } List <Building_ReplimatFeedTank> feedstockTanks = net.GetTanks(); if (!feedstockTanks.NullOrEmpty()) { float totalAvailableFeedstock = feedstockTanks.Sum(x => x.storedFeedstock); feedstockTanks.Shuffle(); if (totalAvailableFeedstock >= feedstockNeeded) { float feedstockLeftToConsume = feedstockNeeded; foreach (var currentTank in feedstockTanks) { if (feedstockLeftToConsume > 0) { float num = Math.Min(feedstockLeftToConsume, currentTank.StoredFeedstock); currentTank.DrawFeedstock(num); feedstockLeftToConsume -= num; if (feedstockLeftToConsume <= 0) { return(true); } } else { return(true); } } Log.Warning("[Replimat] " + "Tried but tanks ran out of feedstock, needed:" + feedstockNeeded); return(false); } else { Log.Warning("[Replimat] " + " Tanks didn't have enough feedstock, needed:" + feedstockNeeded); return(false); } } Log.Warning("[Replimat] " + "Tried to draw feedstock from non-existent tanks!"); return(false); }
public static bool TryConsumeFeedstock(this PowerNet net, float feedstockNeeded) { if (feedstockNeeded <= 0f) { return(false); } List <Building_ReplimatFeedTank> feedstockTanks = net.GetTanks(); if (!feedstockTanks.NullOrEmpty()) { float totalAvailableFeedstock = feedstockTanks.Sum(x => x.storedFeedstock); feedstockTanks.Shuffle(); if (totalAvailableFeedstock >= feedstockNeeded) { float feedstockLeftToConsume = feedstockNeeded; foreach (var currentTank in feedstockTanks) { if (feedstockLeftToConsume > 0) { float num = Math.Min(feedstockLeftToConsume, currentTank.StoredFeedstock); currentTank.DrawFeedstock(num); feedstockLeftToConsume -= num; if (feedstockLeftToConsume <= 0) { return(true); } } else { return(true); } } return(false); } else { return(false); } } return(false); }