#region License /* FNA - XNA4 Reimplementation for Desktop Platforms * Copyright 2009-2016 Ethan Lee and the MonoGame Team * * Released under the Microsoft Public License. * See LICENSE for details. */ #endregion namespace Microsoft.Xna.Framework.Input { public struct GamePadDPad { #region Public Properties public ButtonState Down { get; internal set; } public ButtonState Left { get; internal set; } public ButtonState Right { get; internal set; } public ButtonState Up { get; internal set; } #endregion #region Public Constructor public GamePadDPad( ButtonState upValue, ButtonState downValue, ButtonState leftValue, ButtonState rightValue ) : this() { Up = upValue; Down = downValue; Left = leftValue; Right = rightValue; } #endregion #region Internal Constructor internal GamePadDPad(params Buttons[] buttons) : this() { foreach (Buttons b in buttons) { if ((b & Buttons.DPadDown) == Buttons.DPadDown) { Down = ButtonState.Pressed; } if ((b & Buttons.DPadLeft) == Buttons.DPadLeft) { Left = ButtonState.Pressed; } if ((b & Buttons.DPadRight) == Buttons.DPadRight) { Right = ButtonState.Pressed; } if ((b & Buttons.DPadUp) == Buttons.DPadUp) { Up = ButtonState.Pressed; } } } #endregion #region Public Static Operators and Override Methods /// /// Determines whether two specified instances of are equal. /// /// The first object to compare. /// The second object to compare. /// /// True if and are equal; /// otherwise, false. /// public static bool operator ==(GamePadDPad left, GamePadDPad right) { return ( (left.Down == right.Down) && (left.Left == right.Left) && (left.Right == right.Right) && (left.Up == right.Up) ); } /// /// Determines whether two specified instances of are not /// equal. /// /// The first object to compare. /// The second object to compare. /// /// True if and are not equal; /// otherwise, false. /// public static bool operator !=(GamePadDPad left, GamePadDPad right) { return !(left == right); } /// /// Returns a value indicating whether this instance is equal to a specified object. /// /// An object to compare to this instance. /// /// True if is a and has the same /// value as this instance; otherwise, false. /// public override bool Equals(object obj) { return (obj is GamePadDPad) && (this == (GamePadDPad) obj); } public override int GetHashCode () { return ( (Down == ButtonState.Pressed ? 1 : 0) + (Left == ButtonState.Pressed ? 2 : 0) + (Right == ButtonState.Pressed ? 4 : 0) + (Up == ButtonState.Pressed ? 8 : 0) ); } #endregion } }