Fix server exception on emptying a StackComponent.cs.
This commit is contained in:
@@ -9,10 +9,8 @@ using Content.Shared.Interfaces.GameObjects.Components;
|
||||
using Robust.Shared.GameObjects;
|
||||
using Robust.Shared.GameObjects.Components.Timers;
|
||||
using Robust.Shared.Interfaces.GameObjects;
|
||||
using Robust.Shared.IoC;
|
||||
using Robust.Shared.Localization;
|
||||
using Robust.Shared.Map;
|
||||
using Robust.Shared.Timers;
|
||||
using Robust.Shared.Utility;
|
||||
using Robust.Shared.ViewVariables;
|
||||
|
||||
@@ -86,42 +84,40 @@ namespace Content.Server.GameObjects.Components.Stack
|
||||
|
||||
public async Task<bool> InteractUsing(InteractUsingEventArgs eventArgs)
|
||||
{
|
||||
if (eventArgs.Using.TryGetComponent<StackComponent>(out var stack))
|
||||
if (!eventArgs.Using.TryGetComponent<StackComponent>(out var stack))
|
||||
return false;
|
||||
|
||||
if (!stack.StackType.Equals(StackType))
|
||||
{
|
||||
if (!stack.StackType.Equals(StackType))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
var toTransfer = Math.Min(Count, stack.AvailableSpace);
|
||||
Count -= toTransfer;
|
||||
stack.Add(toTransfer);
|
||||
|
||||
var popupPos = eventArgs.ClickLocation;
|
||||
if (popupPos == EntityCoordinates.Invalid)
|
||||
{
|
||||
popupPos = eventArgs.User.Transform.Coordinates;
|
||||
}
|
||||
|
||||
|
||||
if (toTransfer > 0)
|
||||
{
|
||||
popupPos.PopupMessage(eventArgs.User, $"+{toTransfer}");
|
||||
|
||||
if (stack.AvailableSpace == 0)
|
||||
{
|
||||
Owner.SpawnTimer(300, () => popupPos.PopupMessage(eventArgs.User, "Stack is now full."));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
else if (toTransfer == 0 && stack.AvailableSpace == 0)
|
||||
{
|
||||
popupPos.PopupMessage(eventArgs.User, "Stack is already full.");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
var toTransfer = Math.Min(Count, stack.AvailableSpace);
|
||||
Count -= toTransfer;
|
||||
stack.Add(toTransfer);
|
||||
|
||||
var popupPos = eventArgs.ClickLocation;
|
||||
if (popupPos == EntityCoordinates.Invalid)
|
||||
{
|
||||
popupPos = eventArgs.User.Transform.Coordinates;
|
||||
}
|
||||
|
||||
|
||||
if (toTransfer > 0)
|
||||
{
|
||||
popupPos.PopupMessage(eventArgs.User, $"+{toTransfer}");
|
||||
|
||||
if (stack.AvailableSpace == 0)
|
||||
{
|
||||
eventArgs.Using.SpawnTimer(300, () => popupPos.PopupMessage(eventArgs.User, "Stack is now full."));
|
||||
}
|
||||
}
|
||||
else if (toTransfer == 0 && stack.AvailableSpace == 0)
|
||||
{
|
||||
popupPos.PopupMessage(eventArgs.User, "Stack is already full.");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void IExamine.Examine(FormattedMessage message, bool inDetailsRange)
|
||||
|
||||
Reference in New Issue
Block a user