From 9cfa0d447a8f9eac50ea1143b957c2831416113a Mon Sep 17 00:00:00 2001 From: "L.E.D" <10257081+unusualcrow@users.noreply.github.com> Date: Tue, 26 Nov 2019 14:17:28 -0500 Subject: [PATCH] Stack popups (#470) * stack popups * Update Content.Server/GameObjects/Components/Stack/StackComponent.cs Co-Authored-By: Pieter-Jan Briers * change wording --- .../Components/Stack/StackComponent.cs | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/Content.Server/GameObjects/Components/Stack/StackComponent.cs b/Content.Server/GameObjects/Components/Stack/StackComponent.cs index df6278a65e..194aa09c29 100644 --- a/Content.Server/GameObjects/Components/Stack/StackComponent.cs +++ b/Content.Server/GameObjects/Components/Stack/StackComponent.cs @@ -1,19 +1,28 @@ using System; using Content.Server.GameObjects.EntitySystems; +using Content.Shared.Interfaces; using Robust.Shared.GameObjects; using Robust.Shared.Interfaces.Reflection; using Robust.Shared.IoC; using Robust.Shared.Localization; +using Robust.Shared.Map; using Robust.Shared.Serialization; +using Robust.Shared.Timers; using Robust.Shared.Utility; using Robust.Shared.ViewVariables; namespace Content.Server.GameObjects.Components.Stack { + // TODO: Naming and presentation and such could use some improvement. [RegisterComponent] public class StackComponent : Component, IAttackBy, IExamine { + +#pragma warning disable 649 + [Dependency] private readonly ISharedNotifyManager _sharedNotifyManager; +#pragma warning restore 649 + private const string SerializationCache = "stack"; private int _count = 50; private int _maxCount = 50; @@ -111,6 +120,30 @@ namespace Content.Server.GameObjects.Components.Stack var toTransfer = Math.Min(Count, stack.AvailableSpace); Count -= toTransfer; stack.Add(toTransfer); + + var popupPos = eventArgs.ClickLocation; + if (popupPos == GridCoordinates.Nullspace) + { + popupPos = eventArgs.User.Transform.GridPosition; + } + + + if (toTransfer > 0) + { + _sharedNotifyManager.PopupMessage(popupPos, eventArgs.User, $"+{toTransfer}"); + + if (stack.AvailableSpace == 0) + { + + Timer.Spawn(300, () => _sharedNotifyManager.PopupMessage(popupPos, eventArgs.User, "Stack is now full.")); + } + + } + else if (toTransfer == 0 && stack.AvailableSpace == 0) + { + _sharedNotifyManager.PopupMessage(popupPos, eventArgs.User, "Stack is already full."); + } + } return false;