public void Select()
            {
                switch (currentMode)
                {
                case BaseStateMenuController.Mode.Single:
                    // Select button from active menu
                    MenuManager.Instance.SelectItem();
                    break;

                case BaseStateMenuController.Mode.State:
                    Debug.Log($"Selecting State {controller.stateMenus[selectedStateIndex].name} ({selectedStateIndex})");
                    //AudioManager.Instance?.PlaySoundNormally(AudioManager.Instance?.Accept);
                    // Stop state indication
                    StartIndicating(false);
                    if (hideHighlightOnSelect)
                    {
                        lastHighlightedState.highlight.SetActive(false);
                    }

                    // Start menu indication
                    currentMode = BaseStateMenuController.Mode.Single;

                    var selectedState = controller.stateMenus[selectedStateIndex];
                    selectedState.selectEvent?.Invoke();

                    StartIndicating();
                    break;
                }
            }
            public void Return()
            {
                switch (currentMode)
                {
                case BaseStateMenuController.Mode.Single:
                    // Stop menu indication
                    StartIndicating(false);

                    var selectedState = controller.stateMenus[selectedStateIndex];
                    selectedState.returnEvent?.Invoke();

                    // Start state indication
                    currentMode = BaseStateMenuController.Mode.State;

                    if (hideHighlightOnSelect)
                    {
                        lastHighlightedState?.highlight.SetActive(true);
                    }

                    StartIndicating();
                    break;

                case BaseStateMenuController.Mode.State:
                    // TODO ??

                    break;
                }
            }
            public void SetStateMenuController(BaseStateMenuController controller)
            {
                this.controller = controller;
                currentMode     = controller.indicatorMode;
                controller.stateSelectTimer?.gameObject.SetActive(false);

                selectedStateIndex = Mathf.Clamp(controller.startStateIndex, 0, controller.stateMenus.Count - 1);

                var stateMenu = controller.stateMenus[selectedStateIndex];

                if (currentMode == BaseStateMenuController.Mode.Single)
                {
                    stateMenu.selectEvent?.Invoke();
                    stateMenu.highlight.SetActive(hideHighlightOnSelect);
                }
                else if (currentMode == BaseStateMenuController.Mode.State)
                {
                    controller.stateSelectTimer?.gameObject.SetActive(true);
                    if (controller.stateSelectTimer != null)
                    {
                        controller.stateSelectTimer.localScale = new Vector3(0, 1f, 1f);
                    }
                }
            }