Пример #1
0
        /// <summary>
        /// Draw the sprite
        /// </summary>
        /// <param name="spriteBatch"></param>
        public void Draw(SpriteBatch spriteBatch)
        {
            Draw(spriteBatch, Controller);

            #region MENU

            if (OuyaInput.GetButtonDown(Index, OuyaController.BUTTON_MENU))
            {
                m_timerMenuDetected = DateTime.Now + TimeSpan.FromSeconds(1);
                Draw(spriteBatch, ButtonMenu);
            }
            else if (m_timerMenuDetected > DateTime.Now)
            {
                Draw(spriteBatch, ButtonMenu);
            }

            #endregion

            #region DPADS

            if (OuyaInput.GetButton(Index, OuyaController.BUTTON_DPAD_DOWN))
            {
                Draw(spriteBatch, DpadDown);
            }

            if (OuyaInput.GetButton(Index, OuyaController.BUTTON_DPAD_LEFT))
            {
                Draw(spriteBatch, DpadLeft);
            }

            if (OuyaInput.GetButton(Index, OuyaController.BUTTON_DPAD_RIGHT))
            {
                Draw(spriteBatch, DpadRight);
            }

            if (OuyaInput.GetButton(Index, OuyaController.BUTTON_DPAD_UP))
            {
                Draw(spriteBatch, DpadUp);
            }

            #endregion

            #region Buttons

            if (OuyaInput.GetButton(Index, OuyaController.BUTTON_A))
            {
                Draw(spriteBatch, ButtonA);
            }

            if (OuyaInput.GetButton(Index, OuyaController.BUTTON_O))
            {
                Draw(spriteBatch, ButtonO);
            }

            if (OuyaInput.GetButton(Index, OuyaController.BUTTON_U))
            {
                Draw(spriteBatch, ButtonU);
            }

            if (OuyaInput.GetButton(Index, OuyaController.BUTTON_Y))
            {
                Draw(spriteBatch, ButtonY);
            }

            if (OuyaInput.GetButton(Index, OuyaController.BUTTON_L1))
            {
                Draw(spriteBatch, LeftBumper);
            }

            if (OuyaInput.GetButton(Index, OuyaController.BUTTON_R1))
            {
                Draw(spriteBatch, RightBumper);
            }

            #endregion

            #region Triggers

            if (OuyaInput.GetAxis(Index, OuyaController.AXIS_L2) > DeadZone)
            {
                Draw(spriteBatch, LeftTrigger);
            }

            if (OuyaInput.GetAxis(Index, OuyaController.AXIS_R2) > DeadZone)
            {
                Draw(spriteBatch, RightTrigger);
            }

            #endregion

            #region Sticks

            //rotate input by N degrees to match image
            float degrees = 135;
            float radians = degrees / 180f * 3.14f;
            float cos     = (float)Math.Cos(radians);
            float sin     = (float)Math.Sin(radians);

            Vector2 input = new Vector2(
                OuyaInput.GetAxis(Index, OuyaController.AXIS_LS_X),
                OuyaInput.GetAxis(Index, OuyaController.AXIS_LS_Y));

            if (OuyaInput.GetButton(Index, OuyaController.BUTTON_L3))
            {
                Draw(spriteBatch, LeftStickActive, Position + AXIS_SCALER * new Vector2(input.X * cos - input.Y * sin, input.X * sin + input.Y * cos));
            }
            else
            {
                Draw(spriteBatch, LeftStickInactive, Position + AXIS_SCALER * new Vector2(input.X * cos - input.Y * sin, input.X * sin + input.Y * cos));
            }

            //rotate by same degrees
            input = new Vector2(
                OuyaInput.GetAxis(Index, OuyaController.AXIS_RS_X),
                OuyaInput.GetAxis(Index, OuyaController.AXIS_RS_Y));

            if (OuyaInput.GetButton(Index, OuyaController.BUTTON_R3))
            {
                Draw(spriteBatch, RightStickActive, Position + AXIS_SCALER * new Vector2(input.X * cos - input.Y * sin, input.X * sin + input.Y * cos));
            }
            else
            {
                Draw(spriteBatch, RightStickInactive, Position + AXIS_SCALER * new Vector2(input.X * cos - input.Y * sin, input.X * sin + input.Y * cos));
            }

            #endregion
        }