Show More
Commit Description:
Various UI improvements.
Commit Description:
Various UI improvements.
References:
File last commit:
Show/Diff file:
Action:
FNA/src/Input/GamePadState.cs
221 lines | 5.8 KiB | text/x-csharp | CSharpLexer
221 lines | 5.8 KiB | text/x-csharp | CSharpLexer
r0 | #region License | |||
/* FNA - XNA4 Reimplementation for Desktop Platforms | ||||
* Copyright 2009-2020 Ethan Lee and the MonoGame Team | ||||
* | ||||
* Released under the Microsoft Public License. | ||||
* See LICENSE for details. | ||||
*/ | ||||
#endregion | ||||
namespace Microsoft.Xna.Framework.Input | ||||
{ | ||||
/// <summary> | ||||
/// Represents specific information about the state of a controller, | ||||
/// including the current state of buttons and sticks. | ||||
/// </summary> | ||||
public struct GamePadState | ||||
{ | ||||
#region Public Properties | ||||
/// <summary> | ||||
/// Indicates whether the controller is connected. | ||||
/// </summary> | ||||
public bool IsConnected | ||||
{ | ||||
get; | ||||
internal set; | ||||
} | ||||
/// <summary> | ||||
/// Gets the packet number associated with this state. | ||||
/// </summary> | ||||
public int PacketNumber | ||||
{ | ||||
get; | ||||
internal set; | ||||
} | ||||
/// <summary> | ||||
/// Returns a structure that identifies which buttons on the controller | ||||
/// are pressed. | ||||
/// </summary> | ||||
public GamePadButtons Buttons | ||||
{ | ||||
get; | ||||
internal set; | ||||
} | ||||
/// <summary> | ||||
/// Returns a structure that identifies which directions of the directional pad | ||||
/// on the controller are pressed. | ||||
/// </summary> | ||||
public GamePadDPad DPad | ||||
{ | ||||
get; | ||||
internal set; | ||||
} | ||||
/// <summary> | ||||
/// Returns a structure that indicates the position of the controller thumbsticks. | ||||
/// </summary> | ||||
public GamePadThumbSticks ThumbSticks | ||||
{ | ||||
get; | ||||
internal set; | ||||
} | ||||
/// <summary> | ||||
/// Returns a structure that identifies the position of triggers on the controller. | ||||
/// </summary> | ||||
public GamePadTriggers Triggers | ||||
{ | ||||
get; | ||||
internal set; | ||||
} | ||||
#endregion | ||||
#region Public Constructors | ||||
/// <summary> | ||||
/// Initializes a new instance of the GamePadState class using the specified | ||||
/// GamePadThumbSticks, GamePadTriggers, GamePadButtons, and GamePadDPad. | ||||
/// </summary> | ||||
/// <param name="thumbSticks">Initial thumbstick state.</param> | ||||
/// <param name="triggers">Initial trigger state.</param> | ||||
/// <param name="buttons">Initial button state.</param> | ||||
/// <param name="dPad">Initial directional pad state.</param> | ||||
public GamePadState( | ||||
GamePadThumbSticks thumbSticks, | ||||
GamePadTriggers triggers, | ||||
GamePadButtons buttons, | ||||
GamePadDPad dPad | ||||
) : this() { | ||||
ThumbSticks = thumbSticks; | ||||
Triggers = triggers; | ||||
Buttons = buttons; | ||||
DPad = dPad; | ||||
IsConnected = true; | ||||
PacketNumber = 0; | ||||
} | ||||
/// <summary> | ||||
/// Initializes a new instance of the GamePadState class with the specified stick, | ||||
/// trigger, and button values. | ||||
/// </summary> | ||||
/// <param name="leftThumbStick"> | ||||
/// Left stick value. Each axis is clamped between 1.0 and 1.0. | ||||
/// </param> | ||||
/// <param name="rightThumbStick"> | ||||
/// Right stick value. Each axis is clamped between 1.0 and 1.0. | ||||
/// </param> | ||||
/// <param name="leftTrigger"> | ||||
/// Left trigger value. This value is clamped between 0.0 and 1.0. | ||||
/// </param> | ||||
/// <param name="rightTrigger"> | ||||
/// Right trigger value. This value is clamped between 0.0 and 1.0. | ||||
/// </param> | ||||
/// <param name="buttons"> | ||||
/// Array or parameter list of Buttons to initialize as pressed. | ||||
/// </param> | ||||
public GamePadState( | ||||
Vector2 leftThumbStick, | ||||
Vector2 rightThumbStick, | ||||
float leftTrigger, | ||||
float rightTrigger, | ||||
params Buttons[] buttons | ||||
) : this( | ||||
new GamePadThumbSticks(leftThumbStick, rightThumbStick), | ||||
new GamePadTriggers(leftTrigger, rightTrigger), | ||||
GamePadButtons.FromButtonArray(buttons), | ||||
GamePadDPad.FromButtonArray(buttons) | ||||
) { | ||||
} | ||||
#endregion | ||||
#region Public Methods | ||||
/// <summary> | ||||
/// Determines whether specified input device buttons are pressed in this GamePadState. | ||||
/// </summary> | ||||
/// <param name="button"> | ||||
/// Buttons to query. Specify a single button, or combine multiple buttons using | ||||
/// a bitwise OR operation. | ||||
/// </param> | ||||
public bool IsButtonDown(Buttons button) | ||||
{ | ||||
return (Buttons.buttons & button) == button; | ||||
} | ||||
/// <summary> | ||||
/// Determines whether specified input device buttons are up (not pressed) in this | ||||
/// GamePadState. | ||||
/// </summary> | ||||
/// <param name="button"> | ||||
/// Buttons to query. Specify a single button, or combine multiple buttons using | ||||
/// a bitwise OR operation. | ||||
/// </param> | ||||
public bool IsButtonUp(Buttons button) | ||||
{ | ||||
return (Buttons.buttons & button) != button; | ||||
} | ||||
#endregion | ||||
#region Public Static Operators and Override Methods | ||||
/// <summary> | ||||
/// Determines whether two GamePadState instances are equal. | ||||
/// </summary> | ||||
/// <param name="left">Object on the left of the equal sign.</param> | ||||
/// <param name="right">Object on the right of the equal sign.</param> | ||||
public static bool operator ==(GamePadState left, GamePadState right) | ||||
{ | ||||
return ( (left.IsConnected == right.IsConnected) && | ||||
(left.PacketNumber == right.PacketNumber) && | ||||
(left.Buttons == right.Buttons) && | ||||
(left.DPad == right.DPad) && | ||||
(left.ThumbSticks == right.ThumbSticks) && | ||||
(left.Triggers == right.Triggers) ); | ||||
} | ||||
/// <summary> | ||||
/// Determines whether two GamePadState instances are not equal. | ||||
/// </summary> | ||||
/// <param name="left">Object on the left of the equal sign.</param> | ||||
/// <param name="right">Object on the right of the equal sign.</param> | ||||
public static bool operator !=(GamePadState left, GamePadState right) | ||||
{ | ||||
return !(left == right); | ||||
} | ||||
/// <summary> | ||||
/// Returns a value that indicates whether the current instance is equal to a | ||||
/// specified object. | ||||
/// </summary> | ||||
/// <param name="obj">Object with which to make the comparison.</param> | ||||
public override bool Equals(object obj) | ||||
{ | ||||
return (obj is GamePadState) && (this == (GamePadState) obj); | ||||
} | ||||
/// <summary> | ||||
/// Gets the hash code for this instance. | ||||
/// </summary> | ||||
public override int GetHashCode() | ||||
{ | ||||
return base.GetHashCode(); | ||||
} | ||||
/// <summary> | ||||
/// Retrieves a string representation of this object. | ||||
/// </summary> | ||||
public override string ToString() | ||||
{ | ||||
return base.ToString(); | ||||
} | ||||
#endregion | ||||
} | ||||
} | ||||