/* * player.h * * Combat Player types and defines */ #ifndef PLAYER_H #define PLAYER_H typedef signed char byte; typedef signed short word; typedef signed long dword; typedef unsigned char ubyte; typedef unsigned short uword; typedef unsigned long udword; #define PLAYER_MAX_NAME_LEN 32 #ifdef __NEW_MODE_DEFINES // players mode #define MODE_TANK 0x0001 #define MODE_MISSILE 0x0002 #define MODE_DRONE 0x1000 #define MODE_DEMO 0x2000 // tank modes #define MODE_MOVE 0x0001 #define MODE_HIT 0x0002 #define MODE_SCORE 0x0004 #define MODE_MISS 0x0008 #define MODE_SPIN 0x0010 // missile modes #define MODE_NORMAL 0x0001 #define MODE_HOME 0x0002 #define MODE_GUIDED 0x0004 // drone mode #define MODE_DRIVE 0x0001 // a move forward #define MODE_FACE 0x0002 // turn towards the opponent #define MODE_HUNT 0x0003 // combo of drive and face #define MODE_AVOID 0x0004 // there is a wall in front of us, go round #else #define MODE_TANK 0x0000 #define MODE_MOVE 0x0001 #define MODE_MISSILE 0x0002 #define MODE_HIT 0x0004 #define MODE_SCORE 0x0008 #define MODE_SPIN 0x0010 #define MODE_MISS 0x0020 #define MODE_HOME 0x0100 #define MODE_DRONE 0x1000 #define MODE_DEMO 0x2000 #define MODE_REVERSE 0x0040 #endif // A player typedef struct { dword version; // the version number (0) char name[PLAYER_MAX_NAME_LEN]; // name udword score; // score udword mode; // global mode, and flags udword tmode; // tank mode udword mmode; // missile mode udword dmode; // drone mode - what the drone is currently trying to do dword xpos, zpos; // coords in the world dword xmot, zmot; // suggested move dword angle, tilt; // direction and banking angles dword mxpos, mzpos; // missile coords dword mxmot, mzmot; // missile's movement dword mangle, mtilt; // missile's angles dword xold, zold; // previous position void * tank; // client specific pointer to tank object void * missile; // missile object (3d model) u_long keymask, keyhold; // stores key presses u_long vp; // viewpoint u_long hittime, misstime; // timers u_long missiletime; } player_str; typedef struct { u_long tx, tz; // target x and z (where the drone wants to be) } drone_str; #endif