t3dlib3.h
上传用户:husern
上传日期:2018-01-20
资源大小:42486k
文件大小:4k
源码类别:

游戏

开发平台:

Visual C++

  1. // T3DLIB3.H - Header file for T3DLIB3.CPP game engine library
  2. // watch for multiple inclusions
  3. #ifndef T3DLIB3
  4. #define T3DLIB3
  5. // DEFINES ////////////////////////////////////////////////
  6. #define DM_NUM_SEGMENTS 64 // number of midi segments that can be cached in memory
  7. // midi object state defines
  8. #define MIDI_NULL     0   // this midi object is not loaded
  9. #define MIDI_LOADED   1   // this midi object is loaded
  10. #define MIDI_PLAYING  2   // this midi object is loaded and playing
  11. #define MIDI_STOPPED  3   // this midi object is loaded, but stopped
  12. #define MAX_SOUNDS     256 // max number of sounds in system at once 
  13. // digital sound object state defines
  14. #define SOUND_NULL     0 // " "
  15. #define SOUND_LOADED   1
  16. #define SOUND_PLAYING  2
  17. #define SOUND_STOPPED  3
  18. // directx 7.0 compatibility
  19. #ifndef DSBCAPS_CTRLDEFAULT
  20. #define DSBCAPS_CTRLDEFAULT (DSBCAPS_CTRLFREQUENCY | DSBCAPS_CTRLPAN | DSBCAPS_CTRLVOLUME )
  21. #endif
  22. // MACROS /////////////////////////////////////////////////
  23. #define DSVOLUME_TO_DB(volume) ((DWORD)(-30*(100 - volume)))
  24. // Convert from multibyte format to Unicode using the following macro:
  25. #define MULTI_TO_WIDE( x,y )  MultiByteToWideChar( CP_ACP,MB_PRECOMPOSED, y,-1,x,_MAX_PATH);
  26. // initializes a direct draw struct
  27. #define DD_INIT_STRUCT(ddstruct) { memset(&ddstruct,0,sizeof(ddstruct)); ddstruct.dwSize=sizeof(ddstruct); }
  28. // TYPES //////////////////////////////////////////////////
  29. // this holds a single sound
  30. typedef struct pcm_sound_typ
  31. {
  32. LPDIRECTSOUNDBUFFER dsbuffer;   // the ds buffer containing the sound
  33. int state;                      // state of the sound
  34. int rate;                       // playback rate
  35. int size;                       // size of sound
  36. int id;                         // id number of the sound
  37. } pcm_sound, *pcm_sound_ptr;
  38. // directmusic MIDI segment
  39. typedef struct DMUSIC_MIDI_TYP
  40. {
  41. IDirectMusicSegment        *dm_segment;  // the directmusic segment
  42. IDirectMusicSegmentState   *dm_segstate; // the state of the segment
  43. int                        id;           // the id of this segment               
  44. int                        state;        // state of midi song
  45. } DMUSIC_MIDI, *DMUSIC_MIDI_PTR;
  46. // PROTOTYPES /////////////////////////////////////////////
  47. // directsound
  48. int DSound_Load_WAV(char *filename, int control_flags = DSBCAPS_CTRLDEFAULT);
  49. int DSound_Replicate_Sound(int source_id);
  50. int DSound_Play(int id, int flags=0, int volume=0, int rate=0, int pan=0);
  51. int DSound_Stop_Sound(int id);
  52. int DSound_Stop_All_Sounds(void);
  53. int DSound_Init(void);
  54. int DSound_Shutdown(void);
  55. int DSound_Delete_Sound(int id);
  56. int DSound_Delete_All_Sounds(void);
  57. int DSound_Status_Sound(int id);
  58. int DSound_Set_Volume(int id,int vol);
  59. int DSound_Set_Freq(int id,int freq);
  60. int DSound_Set_Pan(int id,int pan);
  61. // directmusic
  62. int DMusic_Load_MIDI(char *filename);
  63. int DMusic_Play(int id);
  64. int DMusic_Stop(int id);
  65. int DMusic_Shutdown(void);
  66. int DMusic_Delete_MIDI(int id);
  67. int DMusic_Delete_All_MIDI(void);
  68. int DMusic_Status_MIDI(int id);
  69. int DMusic_Init(void);
  70. // directmusic
  71. // GLOBALS ////////////////////////////////////////////////
  72. // EXTERNALS //////////////////////////////////////////////
  73. extern HWND main_window_handle; // save the window handle
  74. extern HINSTANCE main_instance; // save the instance
  75. extern LPDIRECTSOUND lpds;           // directsound interface pointer
  76. extern DSBUFFERDESC dsbd;           // directsound description
  77. extern DSCAPS dscaps;         // directsound caps
  78. extern HRESULT dsresult;       // general directsound result
  79. extern DSBCAPS dsbcaps;        // directsound buffer caps
  80. extern LPDIRECTSOUNDBUFFER lpdsbprimary;   // the primary mixing buffer
  81. extern pcm_sound sound_fx[MAX_SOUNDS];    // the array of secondary sound buffers
  82. extern WAVEFORMATEX pcmwf;          // generic waveformat structure
  83. // direct music globals
  84. extern IDirectMusicPerformance    *dm_perf ;    // the directmusic performance manager 
  85. extern IDirectMusicLoader         *dm_loader;  // the directmusic loader
  86. // this hold all the directmusic midi objects
  87. extern DMUSIC_MIDI                dm_midi[DM_NUM_SEGMENTS];
  88. extern int dm_active_id;                               // currently active midi segment
  89. #endif