inputengine.h 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #ifndef _inputengine_H_
  2. #define _inputengine_H_
  3. //////////////////////////////////////////////////////////////////////////////
  4. //
  5. // type ButtonEvent = (Integer, Boolean)
  6. //
  7. //////////////////////////////////////////////////////////////////////////////
  8. class ButtonEventData : private TPair<int, bool> {
  9. public:
  10. ButtonEventData(int button, bool bDown) :
  11. TPair<int, bool>(button, bDown)
  12. {
  13. }
  14. int GetButton() const { return GetFirst(); }
  15. bool IsDown() const { return GetSecond(); }
  16. };
  17. typedef TEvent<ButtonEventData> ButtonEvent;
  18. //////////////////////////////////////////////////////////////////////////////
  19. //
  20. //
  21. //
  22. //////////////////////////////////////////////////////////////////////////////
  23. class InputStream : public IObject {
  24. public:
  25. virtual int GetValueCount() = 0;
  26. virtual int GetButtonCount() = 0;
  27. virtual Boolean* IsDown(int id) = 0;
  28. virtual Number* GetValue(int id) = 0;
  29. virtual ButtonEvent::Source* GetEventSource() = 0;
  30. };
  31. //////////////////////////////////////////////////////////////////////////////
  32. //
  33. //
  34. //
  35. //////////////////////////////////////////////////////////////////////////////
  36. class MouseInputStream : public InputStream {
  37. public:
  38. virtual void SetClipRect(const Rect& rect) = 0;
  39. virtual void SetPosition(const Point& point) = 0;
  40. virtual void SetWheelPosition(float pos) = 0;
  41. virtual void SetEnabled(bool bEnabled) = 0;
  42. virtual const Point& GetPosition() = 0;
  43. };
  44. //////////////////////////////////////////////////////////////////////////////
  45. //
  46. //
  47. //
  48. //////////////////////////////////////////////////////////////////////////////
  49. class JoystickInputStream : public InputStream {
  50. public:
  51. virtual bool HasForceFeedback() = 0;
  52. virtual void CreateEffects() = 0;
  53. virtual void PlayFFEffect(short effectID, LONG lDirection) = 0;
  54. virtual ZString GetShortDescription(int index) = 0;
  55. virtual ZString GetDescription() = 0;
  56. virtual ZString GetValueDescription(int id) = 0;
  57. };
  58. //////////////////////////////////////////////////////////////////////////////
  59. //
  60. //
  61. //
  62. //////////////////////////////////////////////////////////////////////////////
  63. class InputEngine : public IObject {
  64. public:
  65. virtual void EnumerateJoysticks() = 0;
  66. virtual void Update() = 0;
  67. virtual void SetFocus(bool bFocus) = 0;
  68. virtual int GetJoystickCount() = 0;
  69. virtual JoystickInputStream* GetJoystick(int index) = 0;
  70. virtual MouseInputStream* GetMouse() = 0;
  71. };
  72. TRef<InputEngine> CreateInputEngine(HWND hwnd);
  73. //////////////////////////////////////////////////////////////////////////////
  74. //
  75. //
  76. //
  77. //////////////////////////////////////////////////////////////////////////////
  78. #endif