public void TransferToAnother(ISubstanceContainer otherContainer) { LogManager.RuntimeLogger.Log($"{ContainingTileObject?.VisibleName} transfers substance mixture into other container. New contents: " + _mixture); float amount = Math.Min(_transferAmount, _mixture.Volume); if (Math.Abs(amount) < 0.0001f) { LogManager.RuntimeLogger.Log("Nothing to transfer!"); } else { LogManager.RuntimeLogger.Log("Amount: " + amount); SubstanceMixture subtractedMixture = _mixture.SubtractVolume(amount); otherContainer.TransferInto(subtractedMixture); _mixture.Concatinate(subtractedMixture); } }
public void TransferInto(SubstanceMixture incomingMixture) { float remainingVolume = RemainingVolume; SubstanceMixture concatinationMixture; if (remainingVolume >= incomingMixture.Volume) { concatinationMixture = incomingMixture.Clone() as SubstanceMixture; incomingMixture.Clear(); } else { concatinationMixture = incomingMixture.SubtractVolume(remainingVolume); } _mixture.Concatinate(concatinationMixture); LogManager.RuntimeLogger.Log($"{ContainingTileObject?.VisibleName} received substance mixture. New contents: " + _mixture); }