StickStates OnAnalogStickStateChange(StickStates newState, int player)
    {
        switch (newState)
        {
            case StickStates.Right:
                if (PlayerPosInPaletteList[player] >= AvailablePalettesList.Count - 1)
                    PlayerPosInPaletteList[player] = 0;
                else
                    PlayerPosInPaletteList[player]++;

                RightColorArrowArray[player].transform.localScale = new Vector3(.6f, .6f, 1);
                soundManager.SOUND_MAN.playSound("Play_Menu_Up", gameObject);
                break;

            case StickStates.Left:
                if (PlayerPosInPaletteList[player] == 0)
                    PlayerPosInPaletteList[player] = AvailablePalettesList.Count - 1;
                else
                    PlayerPosInPaletteList[player]--;

                LeftColorArrowArray[player].transform.localScale = new Vector3(.6f, .6f, 1);
                soundManager.SOUND_MAN.playSound("Play_Menu_Up", gameObject);
                break;

            case StickStates.Neutral:
                if (playerAnalogStickStates[player] == StickStates.Right)
                    RightColorArrowArray[player].transform.localScale = new Vector3(.5f, .5f, 1);
                else
                    LeftColorArrowArray[player].transform.localScale = new Vector3(.5f, .5f, 1);
                break;
        }

        SwapAndUpdatePalette(player);
        VerifyCharacterSprite(player);
        SetCorrectPlayerNumTextColor(player);

        return newState;
    }
        public Controller(int controllerId)
        {
            _controllerId = controllerId;

            LeftStick = new StickStates();
            RightStick = new StickStates();

            #region old code, non need to instantiate every class now
            //A = new ButtonsStates();
            //B = new ButtonsStates();
            //X = new ButtonsStates();
            //Y = new ButtonsStates();
            //LB = new ButtonsStates();
            //RB = new ButtonsStates();
            //start = new ButtonsStates();
            //select = new ButtonsStates();
            //L3 = new ButtonsStates();
            //R3 = new ButtonsStates();
            //UP = new ButtonsStates();
            //DOWN = new ButtonsStates();
            //LEFT = new ButtonsStates();
            //RIGHT = new ButtonsStates();
            #endregion
        }
    StickStates OnAnalogStickStateChange(StickStates newState, int player)
    {
        if (playerStates[0] == PlayerStates.Inactive)
        {
            switch (newState)
            {
                case StickStates.Right:
                    HumanSpriteObject.SetActive(!HumanSpriteObject.activeInHierarchy);
                    GhostSpriteObject.SetActive(!HumanSpriteObject.activeInHierarchy);

                    RightColorArrowArray[player].transform.localScale = new Vector3(.6f, .6f, 1);
                    soundManager.SOUND_MAN.playSound("Play_Menu_Up", gameObject);

                    if (GhostSpriteObject.activeInHierarchy)
                    {
                        updateUI_playerReady(0, true);
                    }
                    else
                    {
                        updateUI_playerReady(0, false);
                    }
                    break;

                case StickStates.Left:
                    HumanSpriteObject.SetActive(!HumanSpriteObject.activeInHierarchy);
                    GhostSpriteObject.SetActive(!HumanSpriteObject.activeInHierarchy);

                    LeftColorArrowArray[player].transform.localScale = new Vector3(.6f, .6f, 1);
                    soundManager.SOUND_MAN.playSound("Play_Menu_Up", gameObject);

                    if (GhostSpriteObject.activeInHierarchy)
                    {
                        updateUI_playerReady(0, true);
                    }
                    else
                    {
                        updateUI_playerReady(0, false);
                    }
                    break;

                case StickStates.Neutral:
                    if (playerAnalogStickStates[player] == StickStates.Right)
                        RightColorArrowArray[player].transform.localScale = new Vector3(.5f, .5f, 1);
                    else
                        LeftColorArrowArray[player].transform.localScale = new Vector3(.5f, .5f, 1);
                    break;
            }
        }
        if (playerStates[0] == PlayerStates.PickingColor)
        {
            switch (newState)
            {
                case StickStates.Right:
                    if (PlayerPosInPaletteList[player] >= AvailablePalettesList.Count - 1)
                        PlayerPosInPaletteList[player] = 0;
                    else
                        PlayerPosInPaletteList[player]++;

                    RightColorArrowArray[player].transform.localScale = new Vector3(.6f, .6f, 1);
                    soundManager.SOUND_MAN.playSound("Play_Menu_Up", gameObject);
                    break;

                case StickStates.Left:
                    if (PlayerPosInPaletteList[player] == 0)
                        PlayerPosInPaletteList[player] = AvailablePalettesList.Count - 1;
                    else
                        PlayerPosInPaletteList[player]--;

                    LeftColorArrowArray[player].transform.localScale = new Vector3(.6f, .6f, 1);
                    soundManager.SOUND_MAN.playSound("Play_Menu_Up", gameObject);
                    break;

                case StickStates.Neutral:
                    if (playerAnalogStickStates[player] == StickStates.Right)
                        RightColorArrowArray[player].transform.localScale = new Vector3(.5f, .5f, 1);
                    else
                        LeftColorArrowArray[player].transform.localScale = new Vector3(.5f, .5f, 1);
                    break;
            }

            SwapAndUpdatePalette(player);
            VerifyCharacterSprite(player);
            SetCorrectPlayerNumTextColor(player);
        }

        return newState;
    }