public override void ExecuteMenuCommand()
    {
        GlobalInputController.LockInput();
        switch (MenuAction)
        {
        case MenuCommand.EXIT_GAME:
            Application.Quit();
            break;

        case MenuCommand.RESTART:
            SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex, LoadSceneMode.Single);
            break;

        case MenuCommand.CHANGE_SCENE:
            if (c_itemActiveData.i_nextScene > -1)
            {
                MessageServer.OnSceneChange();
                SceneManager.LoadScene(c_itemActiveData.i_nextScene, LoadSceneMode.Single);
            }
            break;

        case MenuCommand.RESUME:
            MessageServer.SendMessage(MessageID.PAUSE, new Message(0));
            break;

        case MenuCommand.MENU_BACK:
            MessageServer.SendMessage(MessageID.MENU_BACK, new Message());
            break;

        case MenuCommand.MENU_FORWARD:
            if (ChildMenuController == null)
            {
                return;
            }
            MessageServer.SendMessage(MessageID.MENU_FORWARD, new Message(ChildMenuController.GetSuperMenuIndex()));
            break;

        case MenuCommand.CONFIRM:
            break;

        case MenuCommand.EDIT_DATA:
            if (DataItem == DataTarget.ERROR_TARGET)
            {
                return;
            }
            if (ChildEditController == null)
            {
                return;
            }
            // open data editor, wait for return
            ChildEditController.Activate(DataItem);
            MessageServer.SendMessage(MessageID.EDIT_START, new Message());
            break;

        case MenuCommand.RESET_CONTROLS:
            GlobalGameData.SetControlsToDefault(DataItem == DataTarget.CONTROLLER_CONTROLS ? InputType.CONTROLLER_GENERIC : InputType.KEYBOARD_GENERIC);
            break;
        }
    }