home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / spatial / spatial.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-05-03  |  2.3 KB  |  101 lines

  1. /* (C) Copyright 1991 Andrew Plotkin. Permission is
  2.  given to copy and use, as long as this copyright
  3.  notice is retained. */
  4.  
  5. #define MAXFIELDWIDTH (10)
  6. #define MAXFIELDDEPTH (10)
  7.  
  8. #define MAXFIELDXY (10)
  9. #define MAXFIELDZ (15)
  10.  
  11. #define MAXCUBES (8)
  12. #define MAXVERTS (30)
  13. #define MAXPOINTS (MAXCUBES+MAXVERTS)
  14. #define MAXEDGES (40)
  15. #define MAXPIECES (30)
  16.  
  17. #define NUMGAMERS (20)
  18.  
  19. #define F_OFF (0)
  20. #define F_ON (1)
  21. #define F_TEMP (2)
  22.  
  23. #define CUF_SIDEX (1)
  24. #define CUF_SIDEY (2)
  25.  
  26. typedef struct _point {
  27.     double x, y, z, w;
  28. } point;
  29.  
  30. typedef struct _edge {
  31.     short head, tail;
  32. } edge;
  33.  
  34. typedef double matrix[4][4];
  35.  
  36. typedef XPoint fieldplist[MAXFIELDXY+1][MAXFIELDXY+1][MAXFIELDZ+1];
  37.  
  38. typedef struct _piecelist {
  39.     short numcubes;
  40.     short numverts;
  41.     short numpoints;  /* sum of cubes and verts */
  42.     short numedges;
  43.     point *verts;     /* set to &(points[numcubes]) */
  44.     point points[MAXPOINTS];
  45.     edge edges[MAXEDGES];
  46. } piecelist;
  47.  
  48. typedef struct _gamer {
  49.     char userid[16];
  50.     char name[16];
  51.     long score;
  52.     char scoret[16];
  53. } gamer;
  54.  
  55. extern gamer hscores[NUMGAMERS];
  56.  
  57. extern piecelist pieces[MAXPIECES];
  58.  
  59. extern unsigned char field[MAXFIELDXY][MAXFIELDXY][MAXFIELDZ];
  60. extern fieldplist fieldpts;
  61. extern fieldplist fieldpts2;
  62.  
  63. extern short fieldx, fieldy, fieldz;
  64. extern double fieldoffx, fieldoffx2, fieldoffy, fieldoffz;
  65. extern int meterx, meterx2, metery, metersize,
  66. meterlev, meteroldlev, meter_f_b, meter_b_d;
  67. /* oldlev is level on fieldpm */
  68.  
  69. extern short numpieces;
  70. extern short curpiece;
  71.  
  72. extern int colors[];
  73.  
  74. extern Display *dpy;
  75. extern Window win;
  76. extern int scndepth;
  77.  
  78. extern int stereo;
  79. extern int dispx, dispy; /* size of window */
  80. extern Pixmap backpm; /* size of window */
  81. extern int shapex1, shapex2, shapey1, shapey2;
  82. /* coords of rectangle of backpm that is different from fieldpm */
  83. extern int ddispx1, ddispx2, ddispy1, ddispy2;
  84. /* coords of rectangle of display that is different from fieldpm */
  85. extern Pixmap fieldpm; /* size of window */
  86. extern long score, dropticks;
  87. extern double boardscale;
  88. extern int halfboard, halfboard2;
  89.  
  90. extern void clearfield();
  91. /* zero out field[][][] */
  92. extern void setup_fieldpm();
  93. /* clear, draw field box and side text. Also set
  94.  shape{x,y}{1,2} to window size */
  95. extern void startpiece();
  96. /* pick a piece and put it in the pipeline */
  97. extern long current_usec();
  98. extern int elapsed();
  99.  
  100. extern long random();
  101.