home *** CD-ROM | disk | FTP | other *** search
/ 3D Games - Real-time Rend…ng & Software Technology / 3D Games - Real-time Rendering & Software Technology.iso / flysdk / lib / dx.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-12-12  |  2.8 KB  |  140 lines

  1. #ifndef STRICT 
  2. #define STRICT
  3. #endif
  4.  
  5. #define DIRECTINPUT_VERSION 0x0300
  6.  
  7. #include <windows.h>
  8. #include <stdio.h>
  9. #include "dinput.h"
  10. #include "dsound.h"
  11. #include "dplay.h"
  12. #include "dplay.h"
  13. #include "dplobby.h"
  14.  
  15. int WaveLoadFile(char *, UINT *, DWORD *, WAVEFORMATEX **, BYTE **);
  16. int WaveLoadFileB(LONG, HPSTR, UINT *, DWORD *, WAVEFORMATEX **, BYTE **);
  17.  
  18. #define FLYMP_GUARANTEED 0x80000000
  19.  
  20. #define FLYMP_BROWSETIME 2000
  21. #define FLYMP_PLAYERDATASIZE 40
  22. #define FLYMP_MAXPLAYERS 16
  23. #define FLYMP_MAXSERVICES 16
  24. #define FLYMP_MAXGAMES 16
  25.  
  26. #define FLYMP_MSG_JOIN 9171|FLYMP_GUARANTEED
  27. #define FLYMP_MSG_QUIT 9172|FLYMP_GUARANTEED
  28. #define FLYMP_MSG_FLYFILE 9173|FLYMP_GUARANTEED
  29.  
  30. #define FLYMP_NOMP 0
  31. #define FLYMP_CLIENT 1
  32. #define FLYMP_SERVER 2
  33.  
  34. class FLY_API mp_msg 
  35. {
  36. public:
  37.     DWORD type;
  38.     DWORD from;
  39.     char data[500];
  40. };
  41.  
  42. class FLY_API mp_games
  43. {
  44. public:
  45.     int num;
  46.     char name[FLYMP_MAXGAMES][128];
  47.     int num_players[FLYMP_MAXGAMES];
  48.     GUID guid[FLYMP_MAXGAMES];
  49.     mp_games() { num=0; };
  50. };
  51.  
  52. class FLY_API player_data
  53. {
  54.     public:
  55.  
  56.         DWORD type,dpid;
  57.         char name[32];    
  58.         void *data;
  59.  
  60.     player_data() { memset(this,0,sizeof(player_data)); };
  61. };
  62.  
  63. class FLY_API directX
  64. {
  65.         // Direct Input
  66.         LPDIRECTINPUT           lpDI;
  67.         LPDIRECTINPUTDEVICE     lpKeyboard;
  68.         LPDIRECTINPUTDEVICE     lpMouse;
  69.  
  70.         // Direct Sound
  71.         LPDIRECTSOUND            lpDSound;
  72.         LPDIRECTSOUNDBUFFER        lpDS3dPrimBuf;
  73.         LPDIRECTSOUND3DLISTENER lpDS3dListener;
  74.  
  75.         // Direct Play
  76.         GUID                guidInstance;
  77.         LPDPSESSIONDESC2    lpSD;
  78.         LPDIRECTPLAY3A        lpDP;
  79.         LPDIRECTPLAYLOBBY2A    lpDPL;
  80.  
  81.     void Init();
  82.     void Release();
  83.  
  84. public:
  85.  
  86.     directX()
  87.     { 
  88.         lpDI=0;
  89.         lpKeyboard=0;
  90.         lpMouse=0;
  91.  
  92.         lpDSound=0;
  93.         lpDS3dPrimBuf=0;
  94.         lpDS3dListener=0;
  95.  
  96.         lpSD=0;
  97.         lpDP=0;
  98.         lpDPL=0;
  99.  
  100.         Init();
  101.     };
  102.     virtual ~directX()
  103.     { 
  104.         Release(); 
  105.     };
  106.  
  107.     int mpmode;
  108.     int nplayers;
  109.     player_data players[FLYMP_MAXPLAYERS];
  110.  
  111.     unsigned char diks[256];
  112.     DIMOUSESTATE dims;
  113.  
  114.     void get_input();
  115.  
  116.     int load_wav_file(LONG cchBuffer,HPSTR pchBuffer,LPDIRECTSOUNDBUFFER *buf,LPDIRECTSOUND3DBUFFER *buf3d);
  117.     void set_listener(float *pos,float *vel,float *Y,float *Z);
  118.     LPDIRECTSOUNDBUFFER clone_sound(LPDIRECTSOUNDBUFFER buf);
  119.     void set_master_volume(int volume);
  120.  
  121.     int init_multiplayer(char *netaddress=0);
  122.     void free_multiplayer();
  123.  
  124.     mp_games *enum_games(LPGUID app_guid);
  125.     int join_game(LPGUID game_guid,char *player_name);
  126.     int create_game(LPGUID app_guid,char *game_name);
  127.     char *get_player_address(DWORD dpid);
  128.  
  129.     void send_message(mp_msg *msg,int len,DWORD dpid=0);
  130.     int get_num_messages();
  131.     mp_msg *get_message(DWORD *size);
  132.  
  133.     int add_player(char *name,DWORD dpid,void *data);
  134.     void *remove_player(int i);
  135. };
  136.  
  137. extern FLY_API directX *directx;
  138. FLY_API void init_directx();
  139. FLY_API void free_directx();
  140.