InputManager.h
上传用户:sycq158
上传日期:2008-10-22
资源大小:15361k
文件大小:3k
源码类别:

游戏

开发平台:

Visual C++

  1. //-----------------------------------------------------------------------------
  2. // File: InputManager.h
  3. //
  4. // Desc: Class to handle DirectInput action mapper 
  5. //
  6. // Copyright (C) Microsoft Corporation. All Rights Reserved.
  7. //-----------------------------------------------------------------------------
  8. #pragma once
  9. class CInputManager
  10. {
  11. public:
  12.     // DirectInput action mapper reports events only when buttons/axis change
  13.     // so we need to remember the present state of relevant axis/buttons for 
  14.     // each DirectInput device.  The CInputDeviceManager will store a 
  15.     // pointer for each device that points to this struct
  16.     struct InputDeviceState
  17.     {
  18.         FLOAT fAxisMoveUD;
  19.         FLOAT fAxisMoveLR;
  20.         BOOL  bButtonForwardThrust;
  21.         BOOL  bButtonReverseThrust;
  22.         BOOL  bButtonFlyDown;
  23.         BOOL  bButtonFlyUp;
  24.         BOOL  bButtonCtrl;
  25.         BOOL  bButtonShift;
  26.         FLOAT fAxisRotateLR;
  27.         FLOAT fAxisRotateUD;
  28.         BOOL  bButtonRotateLeft;
  29.         BOOL  bButtonRotateRight;
  30.         BOOL  bButtonMoveLeft;
  31.         BOOL  bButtonMoveRight;
  32.         BOOL  bButtonFireWeapons;
  33.         // Menu input variables
  34.         FLOAT fAxisMenuUD;
  35.     };
  36.     // Struct to store the current input state
  37.     struct UserInput
  38.     {
  39.         FLOAT fAxisMoveUD;
  40.         FLOAT fAxisMoveLR;
  41.         FLOAT fAxisRotateLR;
  42.         FLOAT fAxisRotateUD;
  43.         FLOAT fAxisFlyUD;
  44.         BOOL  bButtonFireWeapons;
  45.         BOOL  bButtonEnableShield;
  46.         BOOL  bButtonCtrl;
  47.         BOOL  bButtonShift;
  48.         // One-shot variables
  49.         BOOL  bDoChangeView;    
  50.         // Menu input variables
  51.         BOOL  bDoMenuUp;
  52.         BOOL  bDoMenuDown;
  53.         BOOL  bDoMenuSelect;
  54.         BOOL  bDoMenuQuit;
  55.     };
  56. public:
  57.     CInputManager( CMyApplication* pApp );
  58.     ~CInputManager(void);
  59.     HRESULT     OneTimeSceneInit( HWND hWnd, GUID* pGuidApp );
  60.     HRESULT     RestoreDeviceObjects( D3DFORMAT d3dfmtFullscreen );
  61.     void        UpdateInput();
  62.     UserInput*  GetUserInput() { return &m_UserInput; };
  63.     HRESULT     InvalidateDeviceObjects();
  64.     HRESULT     DeleteDeviceObjects();
  65.     VOID        FinalCleanup();
  66.     void        ViewDevices();
  67.     void        ConfigDevices();
  68.     HRESULT InputAddDeviceCB( CInputDeviceManager::DeviceInfo* pDeviceInfo, const DIDEVICEINSTANCE* pdidi );
  69.     static HRESULT CALLBACK StaticInputAddDeviceCB( CInputDeviceManager::DeviceInfo* pDeviceInfo, const DIDEVICEINSTANCE* pdidi, LPVOID pParam );   
  70.     BOOL    ConfigureInputDevicesCB( IUnknown* pUnknown );
  71.     static BOOL CALLBACK StaticConfigureInputDevicesCB( IUnknown* pUnknown, VOID* pUserData );
  72.     // DirectInput objects
  73.     HWND                 m_hWndMain;
  74.     CMyApplication*      m_pApp;
  75.     CInputDeviceManager* m_pInputDeviceManager;     // Class for managing DInput devices
  76.     InputDeviceState*    m_pMouseDeviceState;
  77.     LPDIRECT3DSURFACE9   m_pConfigSurface;          // Surface for config'ing DInput devices
  78.     UserInput            m_UserInput;               // Struct for storing user input 
  79.     DIACTIONFORMAT       m_diafGame;                // Action format for game play
  80.     DIACTIONFORMAT       m_diafBrowser;             // Action format for menu navigation
  81. };