Custom transfer amount to hydroponic trays (#5833)

This commit is contained in:
Mariner102
2021-12-21 19:52:59 -07:00
committed by GitHub
parent bf292a84a0
commit 4257e8e731
4 changed files with 38 additions and 18 deletions

View File

@@ -134,7 +134,14 @@ namespace Content.Server.Chemistry.Components
&& solutionsSys.TryGetRefillableSolution(Owner, out var ownerRefill)
&& solutionsSys.TryGetDrainableSolution(target, out var targetDrain))
{
var transferred = DoTransfer(eventArgs.User, target, targetDrain, Owner, ownerRefill, tank.TransferAmount);
var tankTransferAmount = tank.TransferAmount;
if (_entities.TryGetComponent(Owner, out RefillableSolutionComponent? refill) && refill.MaxRefill != null)
{
tankTransferAmount = FixedPoint2.Min(tankTransferAmount, (FixedPoint2) refill.MaxRefill);
}
var transferred = DoTransfer(eventArgs.User, target, targetDrain, Owner, ownerRefill, tankTransferAmount);
if (transferred > 0)
{
var toTheBrim = ownerRefill.AvailableVolume == 0;
@@ -151,7 +158,14 @@ namespace Content.Server.Chemistry.Components
if (CanSend && solutionsSys.TryGetRefillableSolution(target, out var targetRefill)
&& solutionsSys.TryGetDrainableSolution(Owner, out var ownerDrain))
{
var transferred = DoTransfer(eventArgs.User, Owner, ownerDrain, target, targetRefill, TransferAmount);
var transferAmount = TransferAmount;
if (_entities.TryGetComponent(target, out RefillableSolutionComponent? refill) && refill.MaxRefill != null)
{
transferAmount = FixedPoint2.Min(transferAmount, (FixedPoint2) refill.MaxRefill);
}
var transferred = DoTransfer(eventArgs.User, Owner, ownerDrain, target, targetRefill, transferAmount);
if (transferred > 0)
{
@@ -190,8 +204,7 @@ namespace Content.Server.Chemistry.Components
return FixedPoint2.Zero;
}
var actualAmount =
FixedPoint2.Min(amount, FixedPoint2.Min(source.DrainAvailable, target.AvailableVolume));
var actualAmount = FixedPoint2.Min(amount, FixedPoint2.Min(source.DrainAvailable, target.AvailableVolume));
var solution = EntitySystem.Get<SolutionContainerSystem>().Drain(sourceEntity, source, actualAmount);
EntitySystem.Get<SolutionContainerSystem>().Refill(targetEntity, target, solution);