public void AddDoAfter(DoAfterMessage message)
        {
            if (_doAfterControls.ContainsKey(message.ID))
            {
                return;
            }

            var doAfterBar = new DoAfterBar
            {
                SizeFlagsVertical = SizeFlags.ShrinkCenter
            };

            _doAfterBars[message.ID] = doAfterBar;

            var control = new PanelContainer
            {
                Children =
                {
                    new TextureRect
                    {
                        Texture           = StaticIoC.ResC.GetTexture("/Textures/Interface/Misc/progress_bar.rsi/icon.png"),
                        TextureScale      = Vector2.One * DoAfterBar.DoAfterBarScale,
                        SizeFlagsVertical = SizeFlags.ShrinkCenter,
                    },

                    doAfterBar
                }
            };

            AddChild(control);
            _doAfterControls.Add(message.ID, control);
        }
        public void Add(DoAfter doAfter)
        {
            _doAfters.Add(doAfter, _runningIndex);

            if (TryGetConnectedClient(out var connectedClient))
            {
                var message = new DoAfterMessage(
                    _runningIndex,
                    doAfter.UserGrid,
                    doAfter.TargetGrid,
                    doAfter.StartTime,
                    doAfter.EventArgs.Delay,
                    doAfter.EventArgs.BreakOnUserMove,
                    doAfter.EventArgs.BreakOnTargetMove,
                    doAfter.EventArgs.Target?.Uid ?? EntityUid.Invalid);

                SendNetworkMessage(message, connectedClient);
            }

            _runningIndex++;
        }
        private void UpdateClient()
        {
            if (!TryGetConnectedClient(out var connectedClient))
            {
                return;
            }

            foreach (var(doAfter, id) in _doAfters)
            {
                // THE ALMIGHTY PYRAMID
                var message = new DoAfterMessage(
                    id,
                    doAfter.UserGrid,
                    doAfter.TargetGrid,
                    doAfter.StartTime,
                    doAfter.EventArgs.Delay,
                    doAfter.EventArgs.BreakOnUserMove,
                    doAfter.EventArgs.BreakOnTargetMove,
                    doAfter.EventArgs.Target?.Uid ?? EntityUid.Invalid);

                SendNetworkMessage(message, connectedClient);
            }
        }