home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / x / volume4 / dragon / board.h next >
Text File  |  1989-05-25  |  4KB  |  125 lines

  1. Path: uunet!island!argv
  2. From: argv@island.uu.net (Dan Heller)
  3. Newsgroups: comp.sources.x
  4. Subject: v04i007:  board.h for Dragon
  5. Message-ID: <770@island.uu.net>
  6. Date: 26 May 89 05:54:36 GMT
  7. Sender: news@island.uu.net
  8. Organization: Island Graphics, Marin County, California
  9. Lines: 113
  10. Approved: island!argv@sun.com
  11.  
  12. Submitted-by: Gary  Barnes
  13. Posting-number: Volume 4, Issue 7
  14. Archive-name: dragon/board.h
  15.  
  16. [ sorry I missed posting this --argv ]
  17.  
  18. /******************************************************************************
  19. * Dragon - a version of Mah-Jongg for X Windows
  20. *
  21. * Author: Gary E. Barnes    May 1989
  22. *
  23. * board.h - #include'ed into source files dealing with the playing surface
  24. ******************************************************************************/
  25.  
  26. #ifdef _BOARD_C_
  27. #define VAR(A)        A
  28. #define VARI(A,B)    A = B
  29. #else
  30. #define VAR(A)        extern A
  31. #define VARI(A,B)    extern A
  32. #endif
  33.  
  34.  
  35. /******************************************************************************
  36. * Global State
  37. ******************************************************************************/
  38.  
  39. #define NFACES    42        /* number of distinct tile faces */
  40. #define NTILES    ((NFACES-8) * 4 + 8) /* number of distinct tiles in game */
  41. #define NROWS    8        /* number of rows in game */
  42. #define NCOLS    16        /* number of columns in game */
  43. #define NO_TILE    0        /* tile codes are 1..NFACES */
  44.  
  45. /*--Size of the Board. */
  46.  
  47. VARI( int        Board_Width,    29 * 15 + 1 + 8 );
  48. VARI( int        Board_Height,    33 * 10 + 1 + 8 );
  49. VARI( int        Score,        NTILES);
  50.  
  51. /*--X/Y coordinate of a tile at coord 0,0 of the playing surface. */
  52.  
  53. VARI( int        Board_Tile0_X,    4 );
  54. VARI( int        Board_Tile0_Y,    4 + 2 * 33 );
  55.  
  56. /*--Actual size of a tile, not counting the border around it. */
  57.  
  58. VARI( unsigned int    Tile_Width,    28 );
  59. VARI( unsigned int    Tile_Height,    32 );
  60.  
  61. /*--X depth and Y width of a shadowed area above/to-the-right-of a tile. */
  62.  
  63. VARI( int        Shadow_X,    28 / 8 );
  64. VARI( int        Shadow_Y,    32 / 8 );
  65.  
  66. /*--X depth and Y width of tile edge below/to-the-left-of a tile. */
  67.  
  68. VARI( int        Side_X,        (28 / 10) & ~1 );
  69. VARI( int        Side_Y,        (32 / 10) & ~1 );
  70.  
  71. /*--Each playing tile position is represented by one of these. */
  72.  
  73. typedef struct _Board_Position {
  74.     char        tiles[4];    /* at most 4 tiles at one position */
  75.     Boolean        draw;        /* TRUE if needs drawing */
  76.     int            level;        /* how many tiles do we have */
  77.     int            x;        /* x coord of tile */
  78.     int            y;        /* x coord of tile */
  79. } Board_Position_Rec, *Board_Position;
  80.  
  81. #define Board_Position_NULL    ((Board_Position)0)
  82.  
  83. VAR( Board_Position_Rec    Board_Tiles[NROWS][NCOLS] );
  84.  
  85. #define SPEC1        0][14        /* farthest right odd tile */
  86. #define SPEC1row    0        /* farthest right odd tile */
  87. #define SPEC1col    14        /* farthest right odd tile */
  88. #define SPEC2        2][14        /* next farthest right odd tile */
  89. #define SPEC2row    2        /* next farthest right odd tile */
  90. #define SPEC2col    14        /* next farthest right odd tile */
  91. #define SPEC3        4][14        /* farthest left odd tile */
  92. #define SPEC3row    4        /* farthest left odd tile */
  93. #define SPEC3col    14        /* farthest left odd tile */
  94. #define SPEC4        6][14        /* center piece tile */
  95. #define SPEC4row    6        /* center piece tile */
  96. #define SPEC4col    14        /* center piece tile */
  97.  
  98. /*--Record tile clicks and watch for double clicks. */
  99.  
  100. VARI( Boolean            One_Button_Hint, FALSE );
  101. VARI( Board_Position        Click1,         Board_Position_NULL);
  102. VAR(  int            Click1_Row );
  103. VAR(  int            Click1_Col );
  104. VARI( Board_Position        Click2,         Board_Position_NULL );
  105. VAR(  int            Click2_Row );
  106. VAR(  int            Click2_Col );
  107. VAR(  Time            Click2_Time );
  108.  
  109.  
  110. /******************************************************************************
  111. * Procedures declared in board.c or draw.c used by the opposite package.
  112. ******************************************************************************/
  113.  
  114. extern void Draw_All_Tiles();
  115. extern void Hilite_Tile();
  116. extern void Hints();
  117. extern void Set_Tile_Controls();
  118. extern void Setup_New_Game();
  119. extern void Tile_Press();
  120. extern void Tile_Release();
  121. extern void Tile_Remove();
  122.  
  123. #undef VAR
  124. #undef VARI
  125.