add GamePadTest
fix GamePad class improve IGamePad
This commit is contained in:
parent
af5e8134b2
commit
38cbd8fcd2
@ -62,6 +62,7 @@
|
|||||||
<Compile Include="DataFactory.cs" />
|
<Compile Include="DataFactory.cs" />
|
||||||
<Compile Include="Strukturen\Input\GamePadDPadTest.cs" />
|
<Compile Include="Strukturen\Input\GamePadDPadTest.cs" />
|
||||||
<Compile Include="Strukturen\Design\TypeConverterTest.cs" />
|
<Compile Include="Strukturen\Design\TypeConverterTest.cs" />
|
||||||
|
<Compile Include="Strukturen\Input\GamePadTest.cs" />
|
||||||
<Compile Include="Strukturen\Input\GamePadTriggersTest.cs" />
|
<Compile Include="Strukturen\Input\GamePadTriggersTest.cs" />
|
||||||
<Compile Include="IntegrationTest.cs" />
|
<Compile Include="IntegrationTest.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
@ -160,6 +160,9 @@ using ANXCurveKeyCollection = ANX.Framework.CurveKeyCollection;
|
|||||||
using XNACurveTangent = Microsoft.Xna.Framework.CurveTangent;
|
using XNACurveTangent = Microsoft.Xna.Framework.CurveTangent;
|
||||||
using ANXCurveTangent = ANX.Framework.CurveTangent;
|
using ANXCurveTangent = ANX.Framework.CurveTangent;
|
||||||
|
|
||||||
|
using XNAGamePadState = Microsoft.Xna.Framework.Input.GamePadState;
|
||||||
|
using ANXGamePadState = ANX.Framework.Input.GamePadState;
|
||||||
|
|
||||||
#endregion // Datatype usings
|
#endregion // Datatype usings
|
||||||
|
|
||||||
namespace ANX.Framework.TestCenter
|
namespace ANX.Framework.TestCenter
|
||||||
@ -796,7 +799,20 @@ namespace ANX.Framework.TestCenter
|
|||||||
Assert.Fail(String.Format("{0} failed: xna({1}) anx({2})", test, xna.ToString(), anx.ToString()));
|
Assert.Fail(String.Format("{0} failed: xna({1}) anx({2})", test, xna.ToString(), anx.ToString()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void ConvertEquals(XNAGamePadState xna, ANXGamePadState anx, String test)
|
||||||
|
{
|
||||||
|
if ((xna.Buttons.ToString()==anx.Buttons.ToString())&&(xna.DPad.ToString()==anx.DPad.ToString())&&(xna.IsConnected==anx.IsConnected)&&(xna.ThumbSticks.ToString()==anx.ThumbSticks.ToString())&&(xna.Triggers.ToString()==anx.Triggers.ToString()))
|
||||||
|
{
|
||||||
|
Assert.Pass(test + " passed");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Assert.Fail(String.Format("{0} failed: xna({1}) anx({2})", test, xna.ToString(), anx.ToString()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private static bool Compare(XNACurve xna, ANXCurve anx)
|
private static bool Compare(XNACurve xna, ANXCurve anx)
|
||||||
{
|
{
|
||||||
return (xna.IsConstant == anx.IsConstant) && (Compare(xna.Keys, anx.Keys)) && (Compare(xna.PreLoop, anx.PreLoop)) && (Compare(xna.PostLoop, anx.PostLoop));
|
return (xna.IsConstant == anx.IsConstant) && (Compare(xna.Keys, anx.Keys)) && (Compare(xna.PreLoop, anx.PreLoop)) && (Compare(xna.PostLoop, anx.PostLoop));
|
||||||
@ -836,6 +852,6 @@ namespace ANX.Framework.TestCenter
|
|||||||
return ((int)xna == (int)anx);
|
return ((int)xna == (int)anx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -68,7 +68,7 @@ using ANXCurveTangent = ANX.Framework.CurveTangent;
|
|||||||
// particular purpose and non-infringement.
|
// particular purpose and non-infringement.
|
||||||
|
|
||||||
#endregion // License
|
#endregion // License
|
||||||
namespace ANX.Framework.TestCenter.Struckturen.classTest
|
namespace ANX.Framework.TestCenter.Strukturen
|
||||||
{
|
{
|
||||||
[TestFixture]
|
[TestFixture]
|
||||||
class CurveTest
|
class CurveTest
|
||||||
|
106
ANX.Framework.TestCenter/Strukturen/Input/GamePadTest.cs
Normal file
106
ANX.Framework.TestCenter/Strukturen/Input/GamePadTest.cs
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
#region Using Statements
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using ANX.Framework.NonXNA;
|
||||||
|
using NUnit.Framework;
|
||||||
|
#endregion // Using Statements
|
||||||
|
|
||||||
|
using XNAGamePad = Microsoft.Xna.Framework.Input.GamePad;
|
||||||
|
using ANXGamePad = ANX.Framework.Input.GamePad;
|
||||||
|
|
||||||
|
using XNAGamePadState = Microsoft.Xna.Framework.Input.GamePadState;
|
||||||
|
using ANXGamePadState = ANX.Framework.Input.GamePadState;
|
||||||
|
|
||||||
|
using XNAGamePadDPad = Microsoft.Xna.Framework.Input.GamePadDPad;
|
||||||
|
using ANXGamePadDPad = ANX.Framework.Input.GamePadDPad;
|
||||||
|
|
||||||
|
using ANXButtons = ANX.Framework.Input.Buttons;
|
||||||
|
using XNAButtons = Microsoft.Xna.Framework.Input.Buttons;
|
||||||
|
|
||||||
|
using XNAButtonState = Microsoft.Xna.Framework.Input.ButtonState;
|
||||||
|
using ANXButtonState = ANX.Framework.Input.ButtonState;
|
||||||
|
|
||||||
|
using XNAPlayerIndex = Microsoft.Xna.Framework.PlayerIndex;
|
||||||
|
using ANXPlayerIndex = ANX.Framework.PlayerIndex;
|
||||||
|
|
||||||
|
|
||||||
|
#region License
|
||||||
|
|
||||||
|
//
|
||||||
|
// This file is part of the ANX.Framework created by the "ANX.Framework developer group".
|
||||||
|
//
|
||||||
|
// This file is released under the Ms-PL license.
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Microsoft Public License (Ms-PL)
|
||||||
|
//
|
||||||
|
// This license governs use of the accompanying software. If you use the software, you accept this license.
|
||||||
|
// If you do not accept the license, do not use the software.
|
||||||
|
//
|
||||||
|
// 1.Definitions
|
||||||
|
// The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning
|
||||||
|
// here as under U.S. copyright law.
|
||||||
|
// A "contribution" is the original software, or any additions or changes to the software.
|
||||||
|
// A "contributor" is any person that distributes its contribution under this license.
|
||||||
|
// "Licensed patents" are a contributor's patent claims that read directly on its contribution.
|
||||||
|
//
|
||||||
|
// 2.Grant of Rights
|
||||||
|
// (A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations
|
||||||
|
// in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to
|
||||||
|
// reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution
|
||||||
|
// or any derivative works that you create.
|
||||||
|
// (B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in
|
||||||
|
// section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed
|
||||||
|
// patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution
|
||||||
|
// in the software or derivative works of the contribution in the software.
|
||||||
|
//
|
||||||
|
// 3.Conditions and Limitations
|
||||||
|
// (A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks.
|
||||||
|
// (B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your
|
||||||
|
// patent license from such contributor to the software ends automatically.
|
||||||
|
// (C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution
|
||||||
|
// notices that are present in the software.
|
||||||
|
// (D) If you distribute any portion of the software in source code form, you may do so only under this license by including
|
||||||
|
// a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or
|
||||||
|
// object code form, you may only do so under a license that complies with this license.
|
||||||
|
// (E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees,
|
||||||
|
// or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the
|
||||||
|
// extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a
|
||||||
|
// particular purpose and non-infringement.
|
||||||
|
|
||||||
|
#endregion // License
|
||||||
|
|
||||||
|
namespace ANX.Framework.TestCenter.Strukturen.Input
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
class GamePadTest
|
||||||
|
{
|
||||||
|
|
||||||
|
static object[] twoplayer =
|
||||||
|
{
|
||||||
|
new object[]{XNAPlayerIndex.One, ANXPlayerIndex.One},
|
||||||
|
new object[]{XNAPlayerIndex.Two, ANXPlayerIndex.Two},
|
||||||
|
new object[]{XNAPlayerIndex.Three, ANXPlayerIndex.Three},
|
||||||
|
new object[]{XNAPlayerIndex.Four, ANXPlayerIndex.Four},
|
||||||
|
};
|
||||||
|
|
||||||
|
[SetUp]
|
||||||
|
public void BeforeEach()
|
||||||
|
{
|
||||||
|
AddInSystemFactory.Instance.Initialize();
|
||||||
|
|
||||||
|
AddInSystemFactory.Instance.SetDefaultCreator("XInput");
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestCaseSource("twoplayer")]
|
||||||
|
public void GetState(XNAPlayerIndex xnaplayer, ANXPlayerIndex anxplayer)
|
||||||
|
{
|
||||||
|
XNAGamePadState xnastate = XNAGamePad.GetState(xnaplayer);
|
||||||
|
ANXGamePadState anxstate = ANXGamePad.GetState(anxplayer);
|
||||||
|
|
||||||
|
AssertHelper.ConvertEquals(xnastate, anxstate, "GetState");
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -70,12 +70,22 @@ namespace ANX.Framework.Input
|
|||||||
|
|
||||||
public static GamePadState GetState(PlayerIndex playerIndex)
|
public static GamePadState GetState(PlayerIndex playerIndex)
|
||||||
{
|
{
|
||||||
return gamePad.GetState(playerIndex);
|
bool isConnected;
|
||||||
|
int packetNumber;
|
||||||
|
GamePadState ret = gamePad.GetState(playerIndex,out isConnected, out packetNumber);
|
||||||
|
ret.IsConnected = isConnected;
|
||||||
|
ret.PacketNumber = packetNumber;
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static GamePadState GetState (PlayerIndex playerIndex,GamePadDeadZone deadZoneMode)
|
public static GamePadState GetState (PlayerIndex playerIndex,GamePadDeadZone deadZoneMode)
|
||||||
{
|
{
|
||||||
return gamePad.GetState(playerIndex, deadZoneMode);
|
bool isConnected;
|
||||||
|
int packetNumber;
|
||||||
|
GamePadState ret = gamePad.GetState(playerIndex,deadZoneMode, out isConnected, out packetNumber);
|
||||||
|
ret.IsConnected = isConnected;
|
||||||
|
ret.PacketNumber = packetNumber;
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool SetVibration(PlayerIndex playerIndex, float leftMotor, float rightMotor)
|
public static bool SetVibration(PlayerIndex playerIndex, float leftMotor, float rightMotor)
|
||||||
|
@ -64,8 +64,8 @@ namespace ANX.Framework.Input
|
|||||||
|
|
||||||
private Buttons buttonsValue;
|
private Buttons buttonsValue;
|
||||||
|
|
||||||
//private bool isConnected ;
|
private bool isConnected;
|
||||||
//private int packetNumber ;
|
private int packetNumber;
|
||||||
|
|
||||||
#endregion // Private Members
|
#endregion // Private Members
|
||||||
|
|
||||||
@ -75,7 +75,8 @@ namespace ANX.Framework.Input
|
|||||||
this.triggers = triggers;
|
this.triggers = triggers;
|
||||||
this.buttons = buttons;
|
this.buttons = buttons;
|
||||||
this.dPad = dPad;
|
this.dPad = dPad;
|
||||||
|
this.isConnected = false;
|
||||||
|
this.packetNumber = 0;
|
||||||
this.buttonsValue = this.buttons.Buttons | this.dPad.Buttons;
|
this.buttonsValue = this.buttons.Buttons | this.dPad.Buttons;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -90,6 +91,8 @@ namespace ANX.Framework.Input
|
|||||||
buttonField |= buttons[i];
|
buttonField |= buttons[i];
|
||||||
}
|
}
|
||||||
this.buttonsValue = buttonField;
|
this.buttonsValue = buttonField;
|
||||||
|
this.isConnected = false;
|
||||||
|
this.packetNumber = 0;
|
||||||
|
|
||||||
this.buttons = new GamePadButtons(this.buttonsValue);
|
this.buttons = new GamePadButtons(this.buttonsValue);
|
||||||
this.dPad = new GamePadDPad(this.buttonsValue);
|
this.dPad = new GamePadDPad(this.buttonsValue);
|
||||||
@ -145,7 +148,11 @@ namespace ANX.Framework.Input
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
return this.isConnected;
|
||||||
|
}
|
||||||
|
internal set
|
||||||
|
{
|
||||||
|
this.isConnected = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -153,7 +160,11 @@ namespace ANX.Framework.Input
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
return this.packetNumber;
|
||||||
|
}
|
||||||
|
internal set
|
||||||
|
{
|
||||||
|
this.packetNumber = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,8 +9,8 @@ namespace ANX.Framework.NonXNA
|
|||||||
public interface IGamePad
|
public interface IGamePad
|
||||||
{
|
{
|
||||||
GamePadCapabilities GetCapabilities(PlayerIndex playerIndex);
|
GamePadCapabilities GetCapabilities(PlayerIndex playerIndex);
|
||||||
GamePadState GetState(PlayerIndex playerIndex);
|
GamePadState GetState(PlayerIndex playerIndex, out bool isConnected, out int packetNumber);
|
||||||
GamePadState GetState(PlayerIndex playerIndex, GamePadDeadZone deadZoneMode);
|
GamePadState GetState(PlayerIndex playerIndex, GamePadDeadZone deadZoneMode, out bool isConnected, out int packetNumber);
|
||||||
bool SetVibration(PlayerIndex playerIndex, float leftMotor, float rightMotor);
|
bool SetVibration(PlayerIndex playerIndex, float leftMotor, float rightMotor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -91,7 +91,7 @@ namespace ANX.InputSystem.Windows.XInput
|
|||||||
} return returnres;
|
} return returnres;
|
||||||
}
|
}
|
||||||
|
|
||||||
public GamePadState GetState(PlayerIndex playerIndex)
|
public GamePadState GetState(PlayerIndex playerIndex, out bool isConnected, out int packetNumber)
|
||||||
{
|
{
|
||||||
State result;
|
State result;
|
||||||
GamePadState returnres;
|
GamePadState returnres;
|
||||||
@ -100,10 +100,13 @@ namespace ANX.InputSystem.Windows.XInput
|
|||||||
result = controller[(int)playerIndex].GetState();
|
result = controller[(int)playerIndex].GetState();
|
||||||
//returnres = new GamePadCapabilities(result.Type,result.Gamepad.Buttons.)
|
//returnres = new GamePadCapabilities(result.Type,result.Gamepad.Buttons.)
|
||||||
returnres = new GamePadState(new Vector2(result.Gamepad.LeftThumbX, result.Gamepad.LeftThumbY), new Vector2(result.Gamepad.RightThumbX, result.Gamepad.RightThumbY), (float)result.Gamepad.LeftTrigger, (float)result.Gamepad.RightTrigger, FormatConverter.Translate(result.Gamepad.Buttons));
|
returnres = new GamePadState(new Vector2(result.Gamepad.LeftThumbX, result.Gamepad.LeftThumbY), new Vector2(result.Gamepad.RightThumbX, result.Gamepad.RightThumbY), (float)result.Gamepad.LeftTrigger, (float)result.Gamepad.RightTrigger, FormatConverter.Translate(result.Gamepad.Buttons));
|
||||||
|
packetNumber = result.PacketNumber;
|
||||||
|
isConnected = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
isConnected = false;
|
||||||
|
packetNumber = 0;
|
||||||
returnres = new GamePadState();
|
returnres = new GamePadState();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -111,7 +114,7 @@ namespace ANX.InputSystem.Windows.XInput
|
|||||||
return returnres;
|
return returnres;
|
||||||
}
|
}
|
||||||
|
|
||||||
public GamePadState GetState(PlayerIndex playerIndex, GamePadDeadZone deadZoneMode)
|
public GamePadState GetState(PlayerIndex playerIndex, GamePadDeadZone deadZoneMode, out bool isConnected, out int packetNumber)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user