/// <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 }