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