home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Professional / OS2PRO194.ISO / os2 / games / gi / gi.h < prev    next >
C/C++ Source or Header  |  1993-11-10  |  5KB  |  119 lines

  1. /*--------------------------------------------------------------------------*/
  2. /*                                                                          */
  3. /*   Module        : Game-Interface                                         */
  4. /*                                                                          */
  5. /*   Version       : V1.00                                                  */
  6. /*                                                                          */
  7. /*   Date          : 18.04.93                                               */
  8. /*                                                                          */
  9. /*   Written       : RF                                                     */
  10. /*                                                                          */
  11. /*     Revision History :
  12.  
  13.     28.04.93    RF  Enum für Richtungen und Konstante für Anz. Richtungen
  14.                     incl. Buttons (6)
  15.     10.05.93    RF  PreCompiled-Headers, os2.h wird vom Modul geholt
  16.     12.05.93    RF  Konzept etwas überdacht...
  17.     21.05.93    RF  dito
  18.     26.05.93    RF  Directions und Buttons getrennt
  19.     06.07.93    RF  Start der Strategy-Routinen
  20.     02.11.93    RF    Threshold wird erst geholt, wenn er gebraucht wird
  21.     05.11.93    RF    Export von fip, numplayer und error für GIConfig
  22.     07.11.93    RF    Mode() wird gar nicht gebraucht !
  23.     08.11.93    RF    div. Änderungen am Interface
  24.                                                                             */
  25. /*--------------------------------------------------------------------------*/
  26. #ifndef GI_INCL
  27. #define GI_INCL
  28.  
  29. #define INCL_ERRGI
  30. #include <errdef.h>
  31.  
  32. #define GIF_GETDATASIZE "_GetDataSize"       // Grösse der Config-Daten
  33. #define GIF_INITIALIZE  "_InitializeDLL"     // Jedes Modul wird so Initialisiert
  34. #define GIF_NAME        "_Name"              // Kopiert den Namen des Moduls
  35. #define GIF_CONFIG      "_ConfigDLL"         // Start des Config-Teils unter PM
  36. #define GIF_THRESHOLD   "_Threshold"         // Gibt Threshold
  37. #define GIF_DIRECTION   "_Direction"         // Gibt aktuelle Direction
  38.  
  39. #define GI_CONFIGNAME   "GICONFIG.DAT"
  40. #define GI_ENVNAME        "GICONFIG"
  41.  
  42. #define DIRNONE     -1
  43. #define DIRUP       0
  44. #define DIRRIGHT    1
  45. #define DIRDOWN     2
  46. #define DIRLEFT     3
  47.  
  48. #define DIRBUT1     1
  49. #define DIRBUT2     2
  50.  
  51. typedef struct _funcinfo
  52.     {
  53.     char                file[100];      // Name der DLL
  54.     unsigned            datasize;       // Grösse der Daten für diese Strat.
  55.     void                *data;          // Zeiger auf die Daten
  56.     char                name[100];      // Name der Strategy
  57.     HMODULE             hand;           // Handle auf dieses Modul
  58.     unsigned            (*GetDataSize)(void);
  59.     unsigned            (*func[4])(char __far16 *); // Init, Name, Config, Threshold
  60.     unsigned            (*Direction)(char __far16 *, char __far16 *);
  61.     } FUNCINFO, *FUNCINFOP;
  62.  
  63. typedef struct _playerinfo
  64.     {
  65.     // Input Data
  66.     unsigned            player;         // Number of actual player
  67.     BOOL                analog;         // Game wants analog-values
  68.     int                 x;              // Actual position x (optional)
  69.     int                 y;              // Actual position y (optional)
  70.  
  71.     // Output Data
  72.     char                dir[6];         // Values of directions: Up, Right, Down, Left, B1, B2
  73.     char                direction;      // Strongest direction or DIRNONE
  74.     char                diagonal;       // 2nd strongest direction or DIRNONE
  75.     char                buttons;        // 2 bits for buttons
  76.  
  77.     // Strategy Data
  78.     unsigned            (*Move) (unsigned x, unsigned y);   // Callback to Game!
  79.     void                *stratdata;     // Data for Strategy-Instance
  80.     } PLAYERINFO, *PLAYERINFOP;
  81.  
  82. #define DIRDIGITAL  FALSE
  83. #define DIRANALOG   TRUE
  84.  
  85. #define THRESHOLD    100    // Default
  86. #define MAXPLAYER    10
  87.  
  88. /*--------------------- Intern nur von GI.C --------------------------------*/
  89. #ifdef GI_DEFINE
  90. unsigned _export    error = NOERR;
  91. unsigned _export    numplayer = 0;
  92. FUNCINFOP _export   fip[MAXPLAYER];     // Zeiger auf die fip der Player
  93. char                *funcname[] = { GIF_GETDATASIZE,
  94.                                     GIF_INITIALIZE, GIF_NAME,
  95.                                     GIF_CONFIG, GIF_THRESHOLD,
  96.                                     GIF_DIRECTION };
  97.  
  98. /*--------------------- Extern fuer alle Kunden von GI ---------------------*/
  99. #else
  100. extern unsigned         error;
  101. extern unsigned         numplayer;
  102. extern FUNCINFOP        fip[];
  103. extern char             *funcname[];
  104.  
  105. #endif
  106.  
  107. /*---- Prototypings für alle meine Klienten ----*/
  108. #ifdef __cplusplus
  109.     extern "C" {
  110. #endif
  111.  
  112. extern unsigned        GIInitialize            ();
  113. extern unsigned        GIGetDirection          (PLAYERINFO *player);
  114.  
  115. #ifdef __cplusplus
  116.     }
  117. #endif
  118. #endif
  119.