home *** CD-ROM | disk | FTP | other *** search
- /*
- * here we define all the structures and constants used in the server
- */
- #include <exec/types.h>
- #include <exec/memory.h>
- #include <exec/nodes.h>
- #include <exec/ports.h>
- #include <devices/timer.h>
- #include <libraries/dos.h>
-
- /* first some abbreviations that I like */
- typedef struct Node NODE;
- typedef struct MsgPort PORT;
- typedef struct Message MSG;
- typedef struct List LIST;
- typedef struct timerequest TIMEREQ;
-
- /* info to describe each cycle */
- typedef struct {
- NODE node; /* to keep things organized */
- struct Order *msg; /* place for pending message */
- long status; /* current status */
- long x,y; /* current position */
- long dir; /* current direction */
- long colour; /* your colour designation */
- } CYCLE;
-
- typedef struct {
- long x; /* x size of screen image */
- long y; /* y size of screen image */
- BYTE *buf; /* position to buffer area */
- } IMAGE;
-
- /* specification for the massages we expect to recieve */
- typedef struct Order {
- MSG msg; /* Exec message structure */
- long order; /* command to be performed */
- long x,y; /* parameters */
- long dir; /* direction */
- long status; /* your current status */
- CYCLE *cycle; /* pointer to my cycle structure */
- IMAGE *table; /* pointer to screen table */
- } ORDER;
-
- #define STATUS_NEED_NEW 0 /* no direction change specified yet */
- #define STATUS_GOT_MOVE 1 /* direction change specified: will use */
-
- #define STATUS_DEAD 100 /* dummy entry -- bigger entries mean dead */
- #define STATUS_LOSER 101 /* you've crashed -- out of this game */
- #define STATUS_WINNER 102 /* you're the only remaining bike */
- #define STATUS_AWAITING 103 /* waiting for a new game */
- #define STATUS_REMOVED 104 /* you are no longer in the game */
-
- #define ORD_DIRECTION 0 /* cycle change direction next move */
- #define ORD_AWAIT 1 /* reply when the next game has begun */
- #define ORD_RETIRE 2 /* I'm leaving -- forget all about me */
-
- #define TURN_LEFT(dir) (((dir) - 1) & 3)
- #define TURN_RIGHT(dir) (((dir) + 1) & 3)
-
- #define DIR_UP 0 /* constants for directions */
- #define DIR_RIGHT 1 /* these are guaranteed never to change */
- #define DIR_DOWN 2 /* in future revisions so you can do */
- #define DIR_LEFT 3 /* things like adding 1 (mod 4) to turn */
- /* right, -1 to turn left.. */
-
- #define MAX_COLOURS 5 /* maximum number of colours & players */
- #define X_SIZE 40 /* clients are not allowed to look at */
- #define Y_SIZE 23 /* these as the server may be compiled */
- /* with different values. The server */
- /* decides the size of the arena */
- extern MSG *GetMsg();
- extern PORT *CreatePort();
- extern void *AllocMem();
- extern void *CreateExtIO();
- extern TIMEREQ *Timer_Open();
- extern void Timer_Close();
- extern void Timer_Post();
-
- extern long scores[];
-