131 lines
4.1 KiB
C#
Raw Permalink Normal View History

using ANX.Framework.NonXNA;
// 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
namespace ANX.InputSystem.Standard
{
public class Creator : IInputSystemCreator
{
private const string CreationLogMessage = "Creating a new {0} device.";
private const string CreationThrowMessage =
"Couldn't find a default {0} device creator. Unable to create a {0} instance.";
#if XNAEXT
private IMotionSensingDevice motionSensingDevice;
#endif
private IKeyboard keyboard;
private IMouse mouse;
private IGamePad gamePad;
private ITouchPanel touchPanel;
public string Name
{
get { return "Standard"; }
}
public int Priority
{
get { return 0; }
}
public bool IsSupported
{
get { return true; }
}
public ITouchPanel TouchPanel
{
get
{
if (touchPanel == null)
{
Logger.Info(string.Format(CreationLogMessage, "TouchPanel"));
PreventSystemChange();
touchPanel = InputDeviceFactory.Instance.CreateDefaultTouchPanel();
if (touchPanel == null)
throw new NoInputDeviceException(string.Format(CreationThrowMessage, "touchPanel"));
}
return touchPanel;
}
}
public IGamePad GamePad
{
get
{
if (gamePad == null)
{
Logger.Info(string.Format(CreationLogMessage, "GamePad"));
PreventSystemChange();
gamePad = InputDeviceFactory.Instance.CreateDefaultGamePad();
if (gamePad == null)
throw new NoInputDeviceException(string.Format(CreationThrowMessage, "gamePad"));
}
return gamePad;
}
}
public IMouse Mouse
{
get
{
if (mouse == null)
{
Logger.Info(string.Format(CreationLogMessage, "Mouse"));
PreventSystemChange();
mouse = InputDeviceFactory.Instance.CreateDefaultMouse();
if (mouse == null)
throw new NoInputDeviceException(string.Format(CreationThrowMessage, "mouse"));
}
return mouse;
}
}
public IKeyboard Keyboard
{
get
{
if (keyboard == null)
{
Logger.Info(string.Format(CreationLogMessage, "Keyboard"));
PreventSystemChange();
keyboard = InputDeviceFactory.Instance.CreateDefaultKeyboard();
if (keyboard == null)
throw new NoInputDeviceException(string.Format(CreationThrowMessage, "keyboard"));
}
return keyboard;
}
}
#if XNAEXT
public IMotionSensingDevice MotionSensingDevice
{
get
{
if (motionSensingDevice == null)
{
Logger.Info(string.Format(CreationLogMessage, "MotionSensing"));
PreventSystemChange();
motionSensingDevice = InputDeviceFactory.Instance.CreateDefaultMotionSensingDevice();
if (motionSensingDevice == null)
throw new NoInputDeviceException(string.Format(CreationThrowMessage, "motionSensing"));
}
return motionSensingDevice;
}
}
#endif
private static void PreventSystemChange()
{
AddInSystemFactory.Instance.PreventSystemChange(AddInType.InputSystem);
}
}
}