//        void Update()
//        {
//            if (!ActivatorMessage)
//                return;
//
//            ActivatorMessage.OnActivatorSelected(null);
//
//            if (!BaseGame.Instance.IsPlaying())
//                return;
//
//            if (!ActiveActivators.Any())
//                return;
//
//            ActivatorMessage.OnActivatorSelected();
//
//            if (Input.GetButtonDown("Submit"))
//            {
//                ActiveActivators.Last().Activate(this);
//            }
//        }

        public void PushActivator(ActionActivator activator)
        {
            var lastTop = ActiveActivators.LastOrDefault();

            if (!ActiveActivators.Contains(activator))
            {
                if (DrawDebug)
                {
                    Debug.LogFormat("{0} :: New Activator {1}", Time.realtimeSinceStartup, activator);
                }
                ActiveActivators.Add(activator);
            }

            var newTop = ActiveActivators.LastOrDefault();

            if (lastTop != newTop && ActivatorMessage)
            {
                ActivatorMessage.OnActivatorSelected(newTop);
            }
        }
        public void PopActivator(ActionActivator activator)
        {
            var lastTop = ActiveActivators.LastOrDefault();

            if (ActiveActivators.Remove(activator))
            {
                if (DrawDebug)
                {
                    Debug.LogFormat("{0} :: Lost Activator {1}", Time.realtimeSinceStartup, activator);
                }
            }

            var newTop = ActiveActivators.LastOrDefault();

            if (newTop == null && ActivatorMessage)
            {
                ActivatorMessage.OnActivatorSelected(null);
            }
            else if (lastTop != newTop && CanSubmit)
            {
                ActivatorMessage.OnActivatorSelected(newTop);
            }
        }