Fix server exception on emptying a StackComponent.cs.

This commit is contained in:
Pieter-Jan Briers
2021-01-11 09:57:59 +01:00
parent 96b21ffd1d
commit f7a7303792

View File

@@ -9,10 +9,8 @@ using Content.Shared.Interfaces.GameObjects.Components;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
using Robust.Shared.GameObjects.Components.Timers; using Robust.Shared.GameObjects.Components.Timers;
using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.GameObjects;
using Robust.Shared.IoC;
using Robust.Shared.Localization; using Robust.Shared.Localization;
using Robust.Shared.Map; using Robust.Shared.Map;
using Robust.Shared.Timers;
using Robust.Shared.Utility; using Robust.Shared.Utility;
using Robust.Shared.ViewVariables; using Robust.Shared.ViewVariables;
@@ -86,42 +84,40 @@ namespace Content.Server.GameObjects.Components.Stack
public async Task<bool> InteractUsing(InteractUsingEventArgs eventArgs) 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;
{
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; 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) void IExamine.Examine(FormattedMessage message, bool inDetailsRange)