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;
|
||||||
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)
|
||||||
|
|||||||
Reference in New Issue
Block a user