/* * cbzone_structs.h * -- Todd W Mummert, December 1990, CMU * * This file contains the two major structures that we use in * the game. Every object is of type Generic...while we have an * Option type in order to allow us to pass options easily and * quickly. * * The most hazardous piece of this code is assuming that * XSegments and XPoints continue to be made of shorts. However, * I don't want to address the drawing elements by their * structure names, so I'm betting on them remaining shorts. */ typedef struct { int delay; /* the true delay will be delay * 0.012 */ int mblocks; int mlanders; int mmissiles; int msalvos; int mtanks; int menemies; int mobjects; int estart; /* indices into the object array */ int lstart; int sstart; int bstart; Bool copters; /* just helicopters */ Bool loud; /* to beep, or not to beep */ Bool practice; /* valid score? */ Bool output; /* print messages to tty? */ Bool scores; Bool version; Bool help; Bool original; Bool cursor; /* Now pick up the color options...pick up the color as a string first */ /* This will later be a pixel value after we set up the colormap */ char* cname[MAX_COLORS]; int cpi[MAX_COLORS]; Bool mono; Bool fullscreen; Bool defaultcolormap; int fading_colors; int max_colors; } Option, *Optionp; typedef struct { short x, y, z; } Coord3d, *Coord3dp; typedef struct { short x, y; } Coord2d, *Coord2dp; typedef struct { float x, y; } Float2d, *Float2dp; typedef struct { float x, y, z; } Float3d, *Float3dp; typedef struct { int num; void (*calc)(); float* vars; } Method, *Methodp; typedef struct { /* in the drawing contexts */ Coord3dp object; /* this information will */ int *pnum, *mnum; /* not change, therefore */ Methodp methods; /* we just need a pointer */ int basecolor; /* to the correct info */ } StaticDC, *StaticDCp; typedef struct { /* the information in this */ StaticDCp s; /* block may change during */ int basecolor; /* a call to drawobject or */ Bool fades; /* explode object */ Coord2d points[60]; Float3d pos; Float3d vel; float cta, sta, ctp, stp; Bool seen; Bool last; } DC, *DCp; typedef struct generic_s Generic; typedef Generic* Genericp; struct generic_s { int type; /* uses the defines in */ int lntype; int attr; /* cbzone_defs.h */ float x; /* coordinates in 3 space */ float y; float z; float prox; /* projection into player-centric */ float proy; /* coordinates */ float azm; /* direction we are pointing */ float ca; /* typically the sin and cos of */ float sa; /* the object's azm */ float speed; /* current speed */ float rotate; /* current rotational speed */ float range; /* range from player */ float criticalx; /* critical distance */ float criticaly; /* critical distance */ float orientation; int ecount; /* explosion or existance count */ int ccount; /* cycle count (lander explosion) */ int pcount; /* plan count for movement plans */ int bcount; /* how long we've been blocked */ int fcount; /* how long since we've fired */ int pieces; /* # of pieces in the drawable */ DC dc[5]; /* the drawing context */ /* now we need a method for associating a salvo with an object */ /* since a salvo is another generic item, we just create a */ /* pointer to the first salvo owned by this object */ Genericp salvo; int nsalvos; /* how many salvos do he have */ }; typedef struct { int x, y; } Position_t; typedef struct { unsigned int x, y; } Offset_t; typedef struct { Position_t base; Offset_t size; } Window_t; /* Now some useful globals */