AsphyreInputs.pas
上传用户:ctlcnc
上传日期:2021-12-10
资源大小:4933k
文件大小:5k
源码类别:

2D图形编程

开发平台:

Delphi

  1. unit AsphyreInputs;
  2. //---------------------------------------------------------------------------
  3. // AsphyreInputs.pas                                    Modified: 28-Jan-2007
  4. // Control system for Asphyre input components                    Version 1.0
  5. //---------------------------------------------------------------------------
  6. // Important Notice:
  7. //
  8. // If you modify/use this code or one of its parts either in original or
  9. // modified form, you must comply with Mozilla Public License v1.1,
  10. // specifically section 3, "Distribution Obligations". Failure to do so will
  11. // result in the license breach, which will be resolved in the court.
  12. // Remember that violating author's rights is considered a serious crime in
  13. // many countries. Thank you!
  14. //
  15. // !! Please *read* Mozilla Public License 1.1 document located at:
  16. //  http://www.mozilla.org/MPL/
  17. //
  18. // If you require any clarifications about the license, feel free to contact
  19. // us or post your question on our forums at: http://www.afterwarp.net
  20. //---------------------------------------------------------------------------
  21. // The contents of this file are subject to the Mozilla Public License
  22. // Version 1.1 (the "License"); you may not use this file except in
  23. // compliance with the License. You may obtain a copy of the License at
  24. // http://www.mozilla.org/MPL/
  25. //
  26. // Software distributed under the License is distributed on an "AS IS"
  27. // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
  28. // License for the specific language governing rights and limitations
  29. // under the License.
  30. //
  31. // The Original Code is AsphyreInputs.pas.
  32. //
  33. // The Initial Developer of the Original Code is M. Sc. Yuriy Kotsarenko.
  34. // Portions created by M. Sc. Yuriy Kotsarenko are Copyright (C) 2007,
  35. // Afterwarp Interactive. All Rights Reserved.
  36. //---------------------------------------------------------------------------
  37. interface
  38. //---------------------------------------------------------------------------
  39. uses
  40.  Windows, DirectInput, AsphyreAsserts, AsphyreKeyboard, AsphyreMouse,
  41.  AsphyreJoystick;
  42. //---------------------------------------------------------------------------
  43. type
  44.  TAsphyreInput = class
  45.  private
  46.   FDirectInput8: IDirectInput8;
  47.   FInitialized : Boolean;
  48.   FKeyboard    : TAsphyreKeyboard;
  49.   FMouse       : TAsphyreMouse;
  50.   FJoysticks   : TAsphyreJoysticks;
  51.   FWindowHandle: THandle;
  52.  public
  53.   property DirectInput8: IDirectInput8 read FDirectInput8;
  54.   property Initialized : Boolean read FInitialized;
  55.   // This must contain a valid handle to existing application window.
  56.   property WindowHandle: THandle read FWindowHandle write FWindowHandle;
  57.   property Keyboard : TAsphyreKeyboard read FKeyboard;
  58.   property Mouse    : TAsphyreMouse read FMouse;
  59.   property Joysticks: TAsphyreJoysticks read FJoysticks;
  60.   function Initialize(): Boolean;
  61.   procedure Finalize();
  62.   constructor Create();
  63.   destructor Destroy(); override;
  64.  end;
  65. //---------------------------------------------------------------------------
  66. var
  67.  AsphyreInput: TAsphyreInput = nil;
  68. //---------------------------------------------------------------------------
  69. implementation
  70. //---------------------------------------------------------------------------
  71. constructor TAsphyreInput.Create();
  72. begin
  73.  inherited;
  74.  FKeyboard := TAsphyreKeyboard.Create(Self);
  75.  FMouse    := TAsphyreMouse.Create(Self);
  76.  FJoysticks:= TAsphyreJoysticks.Create(Self);
  77. end;
  78. //---------------------------------------------------------------------------
  79. destructor TAsphyreInput.Destroy();
  80. begin
  81.  FJoysticks.Free();
  82.  FMouse.Free();
  83.  FKeyboard.Free();
  84.  if (FInitialized) then Finalize();
  85.  
  86.  inherited;
  87. end;
  88. //---------------------------------------------------------------------------
  89. function TAsphyreInput.Initialize(): Boolean;
  90. begin
  91.  Assert(not FInitialized, msgAlreadyInitialized);
  92.  Result:= Succeeded(DirectInput8Create(hInstance, DIRECTINPUT_VERSION,
  93.   IID_IDirectInput8, FDirectInput8, nil));
  94.  FInitialized:= Result;
  95. end;
  96. //---------------------------------------------------------------------------
  97. procedure TAsphyreInput.Finalize();
  98. begin
  99.  FJoysticks.Finalize();
  100.  FMouse.Finalize();
  101.  FKeyboard.Finalize();
  102.  if (FDirectInput8 <> nil) then FDirectInput8:= nil;
  103.  FInitialized:= False;
  104. end;
  105. //---------------------------------------------------------------------------
  106. initialization
  107.  AsphyreInput:= TAsphyreInput.Create();
  108. //---------------------------------------------------------------------------
  109. finalization
  110.  AsphyreInput.Free();
  111.  AsphyreInput:= nil;
  112. //---------------------------------------------------------------------------
  113. end.