コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
        }