2012-08-09 09:45:04 +00:00
|
|
|
#region Using Statements
|
2011-12-01 09:16:01 +00:00
|
|
|
using System;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using System.Linq;
|
|
|
|
using System.Text;
|
|
|
|
using ANX.Framework.NonXNA;
|
|
|
|
using ANX.Framework.Input;
|
|
|
|
using ANX.Framework;
|
2012-08-08 12:04:37 +00:00
|
|
|
using System.IO;
|
2011-12-01 09:16:01 +00:00
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
2012-08-09 09:45:04 +00:00
|
|
|
// This file is part of the ANX.Framework created by the
|
|
|
|
// "ANX.Framework developer group" and released under the Ms-PL license.
|
|
|
|
// For details see: http://anxframework.codeplex.com/license
|
2011-12-01 09:16:01 +00:00
|
|
|
|
|
|
|
namespace ANX.InputSystem.Recording
|
|
|
|
{
|
2012-08-08 12:04:37 +00:00
|
|
|
[Flags]
|
2012-08-09 09:45:04 +00:00
|
|
|
public enum GamePadRecordInfo : int
|
2012-08-08 12:04:37 +00:00
|
|
|
{
|
|
|
|
LeftStick = 1,
|
|
|
|
RightStick = 2,
|
|
|
|
LeftTrigger = 4,
|
|
|
|
RightTrigger = 8,
|
|
|
|
AButton = 16,
|
|
|
|
BButton = 32,
|
|
|
|
XButton = 64,
|
|
|
|
YButton = 128,
|
|
|
|
StartButton = 256,
|
|
|
|
BackButton = 512,
|
|
|
|
LeftShoulderButton = 1024,
|
|
|
|
RightShoulderButton = 2048,
|
|
|
|
LeftStickButton = 4096,
|
|
|
|
RightStickButton = 8192,
|
|
|
|
DPadUp = 16384,
|
|
|
|
DPadDown = 32768,
|
|
|
|
DPadLeft = 65536,
|
|
|
|
DPadRight = 131072,
|
|
|
|
|
|
|
|
BothSticks = LeftStick | RightStick,
|
|
|
|
BothTriggers = LeftTrigger | RightTrigger,
|
|
|
|
AllAnalog = BothSticks | BothTriggers,
|
|
|
|
ABXYButton = AButton | BButton | XButton | YButton,
|
|
|
|
BothStickButtons = LeftStickButton | RightStickButton,
|
|
|
|
BothSoulderButtons = LeftShoulderButton | RightShoulderButton,
|
|
|
|
AllDPad = DPadUp | DPadDown | DPadLeft | DPadRight,
|
|
|
|
AllButtons = ABXYButton | BothStickButtons | StartButton | BackButton | BothSoulderButtons,
|
|
|
|
All = AllAnalog | AllButtons | AllDPad
|
|
|
|
}
|
|
|
|
|
2011-12-01 09:16:01 +00:00
|
|
|
/// <summary>
|
|
|
|
/// Wrapper arround another IGamePad, will record all inputs and allows playback.
|
|
|
|
/// </summary>
|
|
|
|
public class RecordingGamePad : RecordableDevice, IGamePad
|
|
|
|
{
|
2012-08-08 12:04:37 +00:00
|
|
|
private IGamePad realGamePad;
|
|
|
|
private GamePadRecordInfo recordInfo;
|
|
|
|
|
|
|
|
public GamePadCapabilities GetCapabilities(PlayerIndex playerIndex) //no recording here...
|
2011-12-01 09:16:01 +00:00
|
|
|
{
|
2012-08-08 12:04:37 +00:00
|
|
|
return realGamePad.GetCapabilities(playerIndex);
|
2011-12-01 09:16:01 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
public GamePadState GetState(PlayerIndex playerIndex, out bool isConnected, out int packetNumber)
|
|
|
|
{
|
|
|
|
throw new NotImplementedException();
|
|
|
|
}
|
|
|
|
|
2012-08-08 12:04:37 +00:00
|
|
|
public GamePadState GetState(PlayerIndex playerIndex, GamePadDeadZone deadZoneMode, out bool isConnected, out int packetNumber)
|
2011-12-01 09:16:01 +00:00
|
|
|
{
|
|
|
|
throw new NotImplementedException();
|
|
|
|
}
|
|
|
|
|
|
|
|
public bool SetVibration(PlayerIndex playerIndex, float leftMotor, float rightMotor)
|
|
|
|
{
|
|
|
|
throw new NotImplementedException();
|
|
|
|
}
|
2012-08-08 12:04:37 +00:00
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Intializes this instance using a new MemoryStream as the Buffer, the
|
|
|
|
/// default's InputSystems GamePad and the passed GamePadRecordInfo.
|
|
|
|
/// </summary>
|
|
|
|
public void Initialize(GamePadRecordInfo info)
|
|
|
|
{
|
|
|
|
this.Initialize(info, new MemoryStream(), InputDeviceFactory.Instance.GetDefaultGamePad());
|
|
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Intializes this instance using a new MemoryStream as the Buffer, recording
|
|
|
|
/// the passed IGamePad, using the passed GamePadRecordInfo.
|
|
|
|
/// </summary>
|
|
|
|
public void Initialize(GamePadRecordInfo info, IGamePad gamePad)
|
|
|
|
{
|
|
|
|
this.Initialize(info, new MemoryStream(), gamePad);
|
|
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Intializes this instance using the passed Stream as the Buffer, the
|
|
|
|
/// default's InputSystems GamePad and the passed GamePadRecordInfo.
|
|
|
|
/// </summary>
|
|
|
|
public void Initialize(GamePadRecordInfo info, Stream bufferStream)
|
|
|
|
{
|
|
|
|
this.Initialize(info, bufferStream, InputDeviceFactory.Instance.GetDefaultGamePad());
|
|
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Intializes this instance using the passed Stream as the Buffer, recording
|
|
|
|
/// the passed IGamePad, using the passed GamePadRecordInfo.
|
|
|
|
/// </summary>
|
|
|
|
public void Initialize(GamePadRecordInfo info, Stream bufferStream, IGamePad gamePad)
|
|
|
|
{
|
|
|
|
realGamePad = gamePad;
|
|
|
|
|
|
|
|
recordInfo = info;
|
|
|
|
PacketLenght = GetPaketSize(info);
|
|
|
|
|
|
|
|
base.Initialize(bufferStream);
|
|
|
|
}
|
|
|
|
|
|
|
|
private int GetPaketSize(GamePadRecordInfo info)
|
|
|
|
{
|
|
|
|
throw new NotImplementedException();
|
|
|
|
}
|
2011-12-01 09:16:01 +00:00
|
|
|
}
|
|
|
|
}
|