home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume28 / ldb / part02 / vars.c < prev   
Encoding:
C/C++ Source or Header  |  1992-03-15  |  7.5 KB  |  186 lines

  1. /*    vars.c        8/4/91
  2.  *
  3.  * Copyright 1991  Perry R. Ross
  4.  *
  5.  * Permission to use, copy, modify, and distribute this software and its
  6.  * documentation without fee is hereby granted, subject to the restrictions
  7.  * detailed in the README file, which is included here by reference.
  8.  * Any other use requires written permission from the author.  This software
  9.  * is distributed "as is" without any warranty, including any implied
  10.  * warranties of merchantability or fitness for a particular purpose.
  11.  * The author shall not be liable for any damages resulting from the
  12.  * use of this software.  By using this software, the user agrees
  13.  * to these terms.
  14.  */
  15.  
  16. #include "ldb.h"
  17.  
  18. /*======================================================================
  19.  * This file contains the definition for all global variables, as well
  20.  * as the static initialization values for those that need it.
  21.  *======================================================================
  22.  */
  23.  
  24. int Pflag;            /* should I process local input? */
  25. int Rflag;            /* should I look for mail? */
  26. struct game *ghead;        /* head of linked list of games */
  27. struct game *gtail;        /* tail of linked list of games */
  28. struct legal *lhead;        /* head of list of legal moves */
  29. struct legal *ltail;        /* tail of list of legal moves */
  30. struct packet P;        /* last packet read */
  31. char cr_mycolor;        /* my color when game is created */
  32. char cr_opcolor;        /* opponent's color for new games */
  33. char cr_mydir;            /* my direction for new games */
  34. char blk76[] =            /* 76 blanks */
  35. "                                                                            ";
  36.  
  37. char FeIsActive = 0;        /* has the front-end been initialized? */
  38.  
  39. char *states[] = {        /* description of the states */
  40.     "Waiting for opponent to start game",
  41.     "Waiting for opponent to move",
  42.     "Waiting for opponent to accept double",
  43.     "Your turn (you haven't rolled yet)",
  44.     "Your move (you have rolled)",
  45.     "Waiting for you to accept double",
  46.     "Game over"
  47.     };
  48.  
  49. struct opt options[] = {
  50.     "read",        OPT_READ,    "",
  51.     "\t\t\tRead incoming mail but do not play",
  52.     "play",        OPT_PLAY,    "",
  53.     "\t\t\tPlay any waiting games but do not read mail",
  54.     "color",    OPT_COLOR,    " xx",
  55.     "\t\tSet colors for new game [r, w, and b]",
  56.     "direction",    OPT_DIRECTION,    " dir",
  57.     "\t\tSet direction for new game [up or down]",
  58.     "myaddr",    OPT_MYADDR,    " addr",
  59.     "\t\tSet local e-mail address",
  60.     "start",    OPT_START,    " user",
  61.     "\t\tStart a game with another user",
  62.     "remotestart",    OPT_RSTART,    " u1 u2",
  63.     "\tStart a game between u1 and u2",
  64.     "broadcast",    OPT_BCAST,    " file",
  65.     "\tSend a mail message to all opponents",
  66.     "control",    OPT_CONTROL,    "",
  67.     "\t\tPerform control functions on games",
  68.     "help",        OPT_HELP,    "",
  69.     "\t\t\tPrint this message",
  70.     NULL,        -1,        NULL,        NULL
  71.     };
  72.  
  73. char *opcodes[] = {
  74.         "START", "USTART", "TIE",  "MOVE", "OFFERDOUBLE", "ACCEPTDOUBLE",
  75.     "DECLINEDOUBLE", "CONCEDE", "REMOTESTART", "RESTART",
  76.     NULL
  77.         };
  78.  
  79. char *bdlabels[] = {
  80.     "Board Before Opponent's Move",
  81.     "Board After Opponent's Move",
  82.     "Current Board"
  83.     };
  84.  
  85. struct namevalue nv_rcfile[] = {
  86.     "myname",    FT_STRING,    Offset(struct ldbrc *,myname),
  87.     "myaddr",    FT_STRING,    Offset(struct ldbrc *,myaddr),
  88.     "gamefile",    FT_STRING,    Offset(struct ldbrc *,gfile),
  89.     "backupfile",    FT_STRING,    Offset(struct ldbrc *,gbackup),
  90.     "mailfile",    FT_STRING,    Offset(struct ldbrc *,mfile),
  91.     "sendcmd",    FT_STRING,    Offset(struct ldbrc *,sendcmd),
  92.     "tempfile",    FT_STRING,    Offset(struct ldbrc *,tempfile),
  93.     "colors",    FT_STRING,    Offset(struct ldbrc *,defclrs),
  94.     "direction",    FT_STRING,    Offset(struct ldbrc *,defdir),
  95.     "initialboard",    FT_STRING,    Offset(struct ldbrc *,initboard),
  96.     "autoroll",    FT_STRING,    Offset(struct ldbrc *,autoroll),
  97.     "automove",    FT_STRING,    Offset(struct ldbrc *,automove),
  98.     "autodouble",    FT_INT,        Offset(struct ldbrc *,autodouble),
  99.     "supercmd",    FT_STRING,    Offset(struct ldbrc *,supercmd),
  100.     "superkey",    FT_CHAR,    Offset(struct ldbrc *,superkey),
  101.     "checkpoint",    FT_STRING,    Offset(struct ldbrc *,chkpt),
  102.     NULL,        0,        -1
  103.     };
  104.  
  105. struct namevalue nv_gfile[] = {        /* extracts into global var G */
  106.     "gameid",    FT_STRING,    Offset(struct game *,gameid),
  107.     "opaddr",    FT_STRING,    Offset(struct game *,opaddr),
  108.     "opname",    FT_STRING,    Offset(struct game *,opname),
  109.     "mycolor",    FT_CHAR,    Offset(struct game *,mycolor),
  110.     "opcolor",    FT_CHAR,    Offset(struct game *,opcolor),
  111.     "mydir",    FT_CHAR,    Offset(struct game *,mydir),
  112.     "opdir",    FT_CHAR,    Offset(struct game *,opdir),
  113.     "gameval",    FT_INT,        Offset(struct game *,gameval),
  114.     "flags",    FT_INT,        Offset(struct game *,flags),
  115.     "state",    FT_CHAR,    Offset(struct game *,state),
  116.     "term",        FT_CHAR,    Offset(struct game *,term),
  117.     "seq",        FT_INT,        Offset(struct game *,seq),
  118.     "lastop",    FT_STRLKUP,    Offset(struct game *,lastop),
  119.     "mycmt",    FT_STRING,    Offset(struct game *,mycmt),
  120.     "mycmt2",    FT_STRING,    Offset(struct game *,mycmt2),
  121.     "opcmt",    FT_STRING,    Offset(struct game *,opcmt),
  122.     "opcmt2",    FT_STRING,    Offset(struct game *,opcmt2),
  123.     "dispmsg",    FT_STRING,    Offset(struct game *,dispmsg),
  124.     "opmvs0",    FT_MOVE,    Offset(struct game *,opmvs[0]),
  125.     "opmvs1",    FT_MOVE,    Offset(struct game *,opmvs[1]),
  126.     "opmvs2",    FT_MOVE,    Offset(struct game *,opmvs[2]),
  127.     "opmvs3",    FT_MOVE,    Offset(struct game *,opmvs[3]),
  128.     "blot0",    FT_CHAR,    Offset(struct game *,blot[0]),
  129.     "blot1",    FT_CHAR,    Offset(struct game *,blot[1]),
  130.     "blot2",    FT_CHAR,    Offset(struct game *,blot[2]),
  131.     "blot3",    FT_CHAR,    Offset(struct game *,blot[3]),
  132.     "mvs0",        FT_MOVE,    Offset(struct game *,mvs[0]),
  133.     "mvs1",        FT_MOVE,    Offset(struct game *,mvs[1]),
  134.     "mvs2",        FT_MOVE,    Offset(struct game *,mvs[2]),
  135.     "mvs3",        FT_MOVE,    Offset(struct game *,mvs[3]),
  136.     "maxused",    FT_INT,        Offset(struct game *,maxused),
  137.     "hiused",    FT_INT,        Offset(struct game *,hiused),
  138.     "adcnt",    FT_INT,        Offset(struct game *,adcnt),
  139.     "admax",    FT_INT,        Offset(struct game *,admax),
  140.     "opbd",        FT_BOARD,    Offset(struct game *,opbd[0]),
  141.     "mybd",        FT_BOARD,    Offset(struct game *,mybd[0]),
  142.     "board",    FT_BOARD,    Offset(struct game *,board[0]),
  143.     "curbd",    FT_CHAR,    Offset(struct game *,curbd),
  144.     "end",        FT_END,        -1,
  145.     NULL,        0,        -1
  146.     };
  147.  
  148. struct namevalue nv_packet[] = {
  149.     "version",    FT_INT,        Offset(struct packet *,version),
  150.     "timestamp",    FT_TIME,    Offset(struct packet *,timestamp),
  151.     "gameid",    FT_STRING,    Offset(struct packet *,gameid),
  152.     "opcode",    FT_STRLKUP,    Offset(struct packet *,opcode),
  153.     "move0",    FT_MOVE,    Offset(struct packet *,mvs[0]),
  154.     "move1",    FT_MOVE,    Offset(struct packet *,mvs[1]),
  155.     "move2",    FT_MOVE,    Offset(struct packet *,mvs[2]),
  156.     "move3",    FT_MOVE,    Offset(struct packet *,mvs[3]),
  157.     "name",        FT_STRING,    Offset(struct packet *,name),
  158.     "addr",        FT_STRING,    Offset(struct packet *,addr),
  159.     "comment",    FT_STRING,    Offset(struct packet *,comment),
  160.     "comment2",    FT_STRING,    Offset(struct packet *,comment2),
  161.     "seq",        FT_INT,        Offset(struct packet *,seq),
  162.     "colors",    FT_STRING,    Offset(struct packet *,colors),
  163.     "direction",    FT_STRING,    Offset(struct packet *,dir),
  164.     "autodouble",    FT_STRING,    Offset(struct packet *,autodbl),
  165.     "end",        FT_END,        -1,
  166.     NULL,        0,        -1
  167.     };
  168.  
  169. int (*func[OPSTATES][NOP])() = { /*
  170. START  USTART  TIE    MOVE    OFRDBL ACPTDBL DECDBL CONCEDE RSTART  RESTART*/
  171. start, istart, tie,     opmove, smerr, smerr,  smerr, opconc, smerr,  restart,
  172. smerr, smerr,  smerr,   opmove, opofr, smerr,  smerr, opconc, smerr,  smerr,
  173. smerr, smerr,  smerr,   smerr,  smerr, opacpt, opdec, opconc, smerr,  smerr
  174.     };
  175.  
  176. char *rejmsg[] = {            /* explanation of reject codes */
  177.     "Move Accepted.",        /* no error */
  178.     "Move does not contain a legal roll.",    /* bad roll */
  179.     "Cannot remove pieces before filling inner table.",
  180.     "There is no piece at the specified location.",
  181.     "The destination of this move is occupied.",
  182.     "Attempt to move while pieces are on the bar.",
  183.     "Attempt to move wrong color.",
  184.     "That piece must be borne off by an exact roll."
  185.     };
  186.