home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / graphics / directx / rockem / directx.h < prev    next >
C/C++ Source or Header  |  1997-07-14  |  5KB  |  149 lines

  1. /*==========================================================================
  2.  *
  3.  *  Copyright (C) 1995-1997 Microsoft Corporation. All Rights Reserved.
  4.  *
  5.  *  File: directx.h
  6.  *
  7.  ***************************************************************************/
  8.  
  9. #ifndef __DIRECTX_H_
  10. #define __DIRECTX_H_
  11.  
  12. // Includes....
  13. #include "d3drmwin.h"
  14. #include "dsound.h"     
  15. #include "stdio.h"
  16.  
  17. // Defines....
  18. #define NUM_SOUNDS      30
  19.  
  20. #define INTRO           0
  21. #define PLAYER1_PUNCH1  1
  22. #define PLAYER1_PUNCH2  2
  23. #define PLAYER2_PUNCH1  3
  24. #define PLAYER2_PUNCH2  4
  25. #define PLAYER1_WALK    5
  26. #define PLAYER2_WALK    6
  27. #define WHOOSH1         7
  28. #define WHOOSH2         8
  29. #define PLAYER1_OUCH    9
  30. #define PLAYER2_OUCH    10
  31. #define HEAD_SPRING     11      
  32. #define BLOCK1          12
  33. #define BLOCK2          13
  34. #define BLOCK3          14
  35. #define VICTORY_BOO     15
  36. #define VICTORY_YEAH    16
  37. #define CROWD_LOOP      17
  38. #define SERVO_DOWN_1    18
  39. #define SERVO_DOWN_2    19
  40. #define SERVO_DOWN_3    20
  41. #define SERVO_UP_1      21
  42. #define SERVO_UP_2      22
  43. #define SERVO_UP_3      23
  44. #define RANDOM1            24
  45. #define RANDOM2            25
  46. #define RANDOM3            26
  47. #define RANDOM4         27
  48. #define RANDOM5            28
  49. #define RANDOM6            29
  50.  
  51. #define NUM_VID_MODES   50
  52.  
  53. // Macros
  54.  
  55. // The following macros are used for proper error handling for DirectDraw,
  56. // DirectSound, Direct3D and Direct3D retained mode
  57. #define TRY_DD(exp) { { HRESULT rval = exp; if (rval != DD_OK) { TraceErrorDD(rval, __FILE__, __LINE__); return FALSE; } } }
  58. #define TRY_DS(exp) { { HRESULT rval = exp; if (rval != DS_OK) { TraceErrorDS(rval, __FILE__, __LINE__); return FALSE; } } }
  59. #define TRY_D3D(exp) { { HRESULT rval = exp; if (rval != D3D_OK) { TraceErrorD3D(rval, __FILE__, __LINE__); return FALSE; } } }
  60. #define TRY_D3DRM(exp) { { HRESULT rval = exp; if (rval != D3DRM_OK) { TraceErrorD3DRM(rval, __FILE__, __LINE__); return FALSE; } } }
  61.  
  62. // Structures....
  63. typedef struct _D3DDeviceInfo
  64. {
  65.     D3DCOLORMODEL cm;
  66.     LPGUID        lpHWGuid;
  67.     D3DDEVICEDESC HWDeviceDesc;
  68.     LPGUID        lpSWGuid;
  69.     D3DDEVICEDESC SWDeviceDesc;
  70. } D3DDeviceInfo;
  71.  
  72. #pragma pack(1)
  73. struct WaveHeader
  74. {
  75.     BYTE        RIFF[4];          // "RIFF"
  76.     DWORD       dwSize;           // Size of data to follow
  77.     BYTE        WAVE[4];          // "WAVE"
  78.     BYTE        fmt_[4];          // "fmt "
  79.     DWORD       dw16;             // 16
  80.     WORD        wOne_0;           // 1
  81.     WORD        wChnls;           // Number of Channels
  82.     DWORD       dwSRate;          // Sample Rate
  83.     DWORD       BytesPerSec;      // Sample Rate
  84.     WORD        wBlkAlign;        // 1
  85.     WORD        BitsPerSample;    // Sample size
  86.     BYTE        DATA[4];          // "DATA"
  87.     DWORD       dwDSize;          // Number of Samples
  88. };
  89. #pragma pack()
  90.  
  91. struct VideoMode
  92. {
  93.     int         width;
  94.     int         height;
  95.     int         bpp;
  96.     BOOL        bUsable;
  97. };
  98.  
  99. // Prototypes....
  100.  
  101. // Error handling
  102. void TraceErrorDD(HRESULT hErr, char *sFile, int nLine);
  103. void TraceErrorDS(HRESULT hErr, char *sFile, int nLine);
  104. void TraceErrorD3D(HRESULT hErr, char *sFile, int nLine);
  105. void TraceErrorD3DRM(HRESULT hErr, char *sFile, int nLine);
  106.  
  107. // Callbacks
  108. BOOL FAR PASCAL  DDEnumCallback(GUID FAR* lpGUID, LPSTR lpDriverDesc, LPSTR lpDriverName, LPVOID lpContext);
  109. HRESULT CALLBACK DDEnumDisplayModesCallback(LPDDSURFACEDESC pddsd, LPVOID Context);
  110. HRESULT WINAPI   D3DEnumDeviceCallBack(LPGUID lpGuid, LPSTR lpDeviceDescription, LPSTR lpDeviceName, 
  111.                                                                            LPD3DDEVICEDESC lpHWDesc,  LPD3DDEVICEDESC lpHELDesc, LPVOID lpContext);
  112.  
  113. // Initialisation
  114. BOOL InitD3DDevice();
  115.  
  116. BOOL InitDirectX();
  117. BOOL SetDirectDrawExclusiveMode();
  118.  
  119. // Termination
  120. void TermDirectX();
  121.  
  122. void SortDisplayModes();
  123.  
  124. BOOL EnterVideoMode(int mode);
  125. BOOL EnterVideoModeWHBD(int width, int height, int bitdepth);
  126. BOOL EnterNextVideoMode();
  127. BOOL EnterPrevVideoMode();
  128. BOOL EnterLowestVideoMode();
  129. BOOL EnterHighestVideoMode();
  130. BOOL ReenterCurrentVideoMode();
  131. void CleanUp();
  132.  
  133. BOOL DoSplashScreen(DWORD delay);
  134. void ReleaseSplashScreen();
  135.  
  136. BOOL RestoreSurfaces();
  137.  
  138. BOOL CreateSoundBuffer(DWORD dwBuf, DWORD dwBufSize, DWORD dwFreq, DWORD dwBitsPerSample, DWORD dwBlkAlign, BOOL bStereo, BOOL bStaticBuf);
  139. BOOL ReadData(LPDIRECTSOUNDBUFFER lpDSB, FILE* pFile, DWORD dwSize, DWORD dwPos);
  140. BOOL CreateBufferFromWaveFile(char* FileName, DWORD dwBuf);
  141. BOOL StopAllSounds();
  142. BOOL PlaySoundDS(DWORD dwSound, D3DVECTOR d3dvPos, DWORD dwFlags = 0);
  143. IDirectSoundBuffer *CreateSoundBuffer3D(void);
  144. VOID CALLBACK PlayRandomWave( HWND hwnd, UINT uMsg,UINT idEvent, DWORD dwTime );
  145. void RecalcPowerBars(DWORD player1health, DWORD player2health);
  146.  
  147. #endif
  148.  
  149.