add GamePadTest

fix GamePad class
improve IGamePad
This commit is contained in:
SND\rene87_cp 2011-11-20 11:37:51 +00:00
parent af5e8134b2
commit 38cbd8fcd2
8 changed files with 162 additions and 15 deletions

View File

@ -62,6 +62,7 @@
<Compile Include="DataFactory.cs" />
<Compile Include="Strukturen\Input\GamePadDPadTest.cs" />
<Compile Include="Strukturen\Design\TypeConverterTest.cs" />
<Compile Include="Strukturen\Input\GamePadTest.cs" />
<Compile Include="Strukturen\Input\GamePadTriggersTest.cs" />
<Compile Include="IntegrationTest.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />

View File

@ -160,6 +160,9 @@ using ANXCurveKeyCollection = ANX.Framework.CurveKeyCollection;
using XNACurveTangent = Microsoft.Xna.Framework.CurveTangent;
using ANXCurveTangent = ANX.Framework.CurveTangent;
using XNAGamePadState = Microsoft.Xna.Framework.Input.GamePadState;
using ANXGamePadState = ANX.Framework.Input.GamePadState;
#endregion // Datatype usings
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()));
}
}
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)
{
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);
}
}
}

View File

@ -68,7 +68,7 @@ using ANXCurveTangent = ANX.Framework.CurveTangent;
// particular purpose and non-infringement.
#endregion // License
namespace ANX.Framework.TestCenter.Struckturen.classTest
namespace ANX.Framework.TestCenter.Strukturen
{
[TestFixture]
class CurveTest

View 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");
}
}
}

View File

@ -70,12 +70,22 @@ namespace ANX.Framework.Input
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)
{
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)

View File

@ -64,8 +64,8 @@ namespace ANX.Framework.Input
private Buttons buttonsValue;
//private bool isConnected ;
//private int packetNumber ;
private bool isConnected;
private int packetNumber;
#endregion // Private Members
@ -75,7 +75,8 @@ namespace ANX.Framework.Input
this.triggers = triggers;
this.buttons = buttons;
this.dPad = dPad;
this.isConnected = false;
this.packetNumber = 0;
this.buttonsValue = this.buttons.Buttons | this.dPad.Buttons;
}
@ -90,6 +91,8 @@ namespace ANX.Framework.Input
buttonField |= buttons[i];
}
this.buttonsValue = buttonField;
this.isConnected = false;
this.packetNumber = 0;
this.buttons = new GamePadButtons(this.buttonsValue);
this.dPad = new GamePadDPad(this.buttonsValue);
@ -145,7 +148,11 @@ namespace ANX.Framework.Input
{
get
{
throw new NotImplementedException();
return this.isConnected;
}
internal set
{
this.isConnected = value;
}
}
@ -153,7 +160,11 @@ namespace ANX.Framework.Input
{
get
{
throw new NotImplementedException();
return this.packetNumber;
}
internal set
{
this.packetNumber = value;
}
}

View File

@ -9,8 +9,8 @@ namespace ANX.Framework.NonXNA
public interface IGamePad
{
GamePadCapabilities GetCapabilities(PlayerIndex playerIndex);
GamePadState GetState(PlayerIndex playerIndex);
GamePadState GetState(PlayerIndex playerIndex, GamePadDeadZone deadZoneMode);
GamePadState GetState(PlayerIndex playerIndex, out bool isConnected, out int packetNumber);
GamePadState GetState(PlayerIndex playerIndex, GamePadDeadZone deadZoneMode, out bool isConnected, out int packetNumber);
bool SetVibration(PlayerIndex playerIndex, float leftMotor, float rightMotor);
}
}

View File

@ -91,7 +91,7 @@ namespace ANX.InputSystem.Windows.XInput
} return returnres;
}
public GamePadState GetState(PlayerIndex playerIndex)
public GamePadState GetState(PlayerIndex playerIndex, out bool isConnected, out int packetNumber)
{
State result;
GamePadState returnres;
@ -100,10 +100,13 @@ namespace ANX.InputSystem.Windows.XInput
result = controller[(int)playerIndex].GetState();
//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));
packetNumber = result.PacketNumber;
isConnected = true;
}
else
{
isConnected = false;
packetNumber = 0;
returnres = new GamePadState();
}
@ -111,7 +114,7 @@ namespace ANX.InputSystem.Windows.XInput
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();
}