private void TryDraw(SolutionContainerComponent targetSolution, IEntity user) { if (!Owner.TryGetComponent(out SolutionContainerComponent? solution) || solution.EmptyVolume == 0) { return; } // Get transfer amount. May be smaller than _transferAmount if not enough room var realTransferAmount = ReagentUnit.Min(_transferAmount, targetSolution.CurrentVolume); if (realTransferAmount <= 0) { Owner.PopupMessage(user, Loc.GetString("{0:theName} is empty!", targetSolution.Owner)); return; } // Move units from attackSolution to targetSolution var removedSolution = targetSolution.SplitSolution(realTransferAmount); if (!solution.TryAddSolution(removedSolution)) { return; } Owner.PopupMessage(user, Loc.GetString("Drew {0}u from {1:theName}", removedSolution.TotalVolume, targetSolution.Owner)); Dirty(); }
private void TryInject(SolutionContainerComponent targetSolution, IEntity user) { if (!Owner.TryGetComponent(out SolutionContainerComponent? solution) || solution.CurrentVolume == 0) { return; } // Get transfer amount. May be smaller than _transferAmount if not enough room var realTransferAmount = ReagentUnit.Min(_transferAmount, targetSolution.EmptyVolume); if (realTransferAmount <= 0) { Owner.PopupMessage(user, Loc.GetString("{0:theName} is already full!", targetSolution.Owner)); return; } // Move units from attackSolution to targetSolution var removedSolution = solution.SplitSolution(realTransferAmount); if (!targetSolution.CanAddSolution(removedSolution)) { return; } foreach (var(reagentId, quantity) in removedSolution.Contents) { if (!_prototypeManager.TryIndex(reagentId, out ReagentPrototype reagent)) { continue; } removedSolution.RemoveReagent(reagentId, reagent.ReactionEntity(targetSolution.Owner, ReactionMethod.Injection, quantity)); } targetSolution.TryAddSolution(removedSolution); Owner.PopupMessage(user, Loc.GetString("You transfter {0}u to {1:theName}", removedSolution.TotalVolume, targetSolution.Owner)); Dirty(); }
public override void Initialize() { base.Initialize(); _contents = Owner.GetComponent <SolutionContainerComponent>(); }
public AdminAddReagentEui(SolutionContainerComponent target) { _target = target; IoCManager.InjectDependencies(this); }