]> git.cameronkatri.com Git - bsdgames-darwin.git/blobdiff - battlestar/extern.h
Use a lookup table to identify whether objects are plural or singular,
[bsdgames-darwin.git] / battlestar / extern.h
index 19e8b310529b518a1ba47317cc929cb33ec51994..3257bfd779f4c0790197fcfcdd1122cbae91947e 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: extern.h,v 1.7 1998/02/03 05:39:25 perry Exp $ */
+/*     $NetBSD: extern.h,v 1.22 2000/09/23 19:23:58 jsm Exp $ */
 
 /*
  * Copyright (c) 1983, 1993
@@ -35,8 +35,6 @@
  *     @(#)externs.h   8.1 (Berkeley) 5/31/93
  */
 
-#include <sys/time.h>
-
 #include <ctype.h>
 #include <err.h>
 #include <pwd.h>
@@ -44,6 +42,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <time.h>
 #include <unistd.h>
 
 #define BITS (8 * sizeof (int))
 #define BURY   1050
 #define JUMP   1051
 #define KICK   1052
+#define OPEN   1053
+#define VERBOSE        1054
+#define BRIEF  1055
 
  /* injuries */
 #define ARM    6               /* broken arm */
 #define DUG            5
 #define NUMOFNOTES     6
 
+/* Number of times room description shown. */
+#define ROOMDESC       3
+
  /* fundamental constants */
 #define NUMOFROOMS     275
 #define NUMOFWORDS     ((NUMOFOBJECTS + BITS - 1) / BITS)
 #define MAXWEIGHT      60
 #define MAXCUMBER      10
 
+/* Flags for objects.  */
+#define OBJ_PLURAL     1
+
 struct room {
-       char   *name;
+       const char   *name;
        int     link[8];
 #define north  link[0]
 #define south  link[1]
@@ -233,140 +241,146 @@ struct room {
 #define access link[5]
 #define down   link[6]
 #define flyhere        link[7]
-       char   *desc;
+       const char   *desc;
        unsigned int objects[NUMOFWORDS];
 };
-struct room dayfile[];
-struct room nightfile[];
-struct room *location;
+extern struct room dayfile[];
+extern struct room nightfile[];
+extern struct room *location;
 
  /* object characteristics */
-char   *objdes[NUMOFOBJECTS];
-char   *objsht[NUMOFOBJECTS];
-char   *ouch[NUMOFINJURIES];
-int     objwt[NUMOFOBJECTS];
-int     objcumber[NUMOFOBJECTS];
+extern const char   *const objdes[NUMOFOBJECTS];
+extern const char   *const objsht[NUMOFOBJECTS];
+extern const char   *const ouch[NUMOFINJURIES];
+extern const int     objwt[NUMOFOBJECTS];
+extern const int     objcumber[NUMOFOBJECTS];
+extern const int     objflags[NUMOFOBJECTS];
+#define is_plural_object(n)    (objflags[(n)] & OBJ_PLURAL)
 
  /* current input line */
+#define WORDLEN        15
 #define NWORD  20              /* words per line */
-char    words[NWORD][15];
-int     wordvalue[NWORD];
-int     wordtype[NWORD];
-int     wordcount, wordnumber;
+extern char    words[NWORD][WORDLEN];
+extern int     wordvalue[NWORD];
+extern int     wordtype[NWORD];
+extern int     wordcount, wordnumber;
 
  /* state of the game */
-int     ourtime;
-int     position;
-int     direction;
-int     left, right, ahead, back;
-int     ourclock, fuel, torps;
-int     carrying, encumber;
-int     rythmn;
-int     followfight;
-int     ate;
-int     snooze;
-int     meetgirl;
-int     followgod;
-int     godready;
-int     win;
-int     wintime;
-int     wiz;
-int     tempwiz;
-int     matchlight, matchcount;
-int     loved;
-int     pleasure, power, ego;
-int     WEIGHT;
-int     CUMBER;
-int     notes[NUMOFNOTES];
-unsigned int inven[NUMOFWORDS];
-unsigned int wear[NUMOFWORDS];
-char    beenthere[NUMOFROOMS + 1];
-char    injuries[NUMOFINJURIES];
+extern int     ourtime;
+extern int     position;
+extern int     direction;
+extern int     left, right, ahead, back;
+extern int     ourclock, fuel, torps;
+extern int     carrying, encumber;
+extern int     rythmn;
+extern int     followfight;
+extern int     ate;
+extern int     snooze;
+extern int     meetgirl;
+extern int     followgod;
+extern int     godready;
+extern int     win;
+extern int     wintime;
+extern int     wiz;
+extern int     tempwiz;
+extern int     matchlight, matchcount;
+extern int     loved;
+extern int     pleasure, power, ego;
+extern int     WEIGHT;
+extern int     CUMBER;
+extern int     notes[NUMOFNOTES];
+extern unsigned int inven[NUMOFWORDS];
+extern unsigned int wear[NUMOFWORDS];
+extern char    beenthere[NUMOFROOMS + 1];
+extern char    injuries[NUMOFINJURIES];
+extern int     verbose;
 
-char    uname[9];
+extern const char *username;
 
 struct wlist {
-       char   *string;
+       const char   *string;
        int     value, article;
        struct wlist *next;
 };
 #define HASHSIZE       256
 #define HASHMUL                81
 #define HASHMASK       (HASHSIZE - 1)
-struct wlist *hashtab[HASHSIZE];
-struct wlist wlist[];
+extern struct wlist *hashtab[HASHSIZE];
+extern struct wlist wlist[];
 
 struct objs {
        short   room;
        short   obj;
 };
-struct objs dayobjs[];
-struct objs nightobjs[];
+extern const struct objs dayobjs[];
+extern const struct objs nightobjs[];
+
+#define DEFAULT_SAVE_FILE      ".Bstar"
 
 void blast __P((void));
 void bury __P((void));
-int card __P((char *, int));
-int checkout __P((char *));
+int card __P((const char *, int));
 void chime __P((void));
 void convert __P((int));
 void crash __P((void));
 int cypher __P((void));
-void die __P((void));
-void diesig __P((int));
+void die __P((void)) __attribute__((__noreturn__));
+void diesig __P((int)) __attribute__((__noreturn__));
 void dig __P((void));
+void dooropen __P((void));
 int draw __P((void));
 void drink __P((void));
 int drive __P((void));
-int drop __P((char *));
+int drop __P((const char *));
 int eat __P((void));
 void endfly __P((void));
 int fight __P((int, int));
 int follow __P((void));
-void getutmp __P((char *));
+char *getcom __P((char *, int, const char *, const char *));
+char *getword __P((char *, char *, int));
 int give __P((void));
-int hash __P((char *));
-void initialize __P((char));
+int hash __P((const char *));
+void initialize __P((const char *));
 void install __P((struct wlist *));
 int jump __P((void));
 void kiss __P((void));
 int land __P((void));
 int launch __P((void));
 void light __P((void));
-void live __P((void));
+void live __P((void)) __attribute__((__noreturn__));
+struct wlist *lookup __P((const char *));
 void love __P((void));
-int move __P((int, int));
 void moveenemy __P((int));
+int moveplayer __P((int, int));
 void murder __P((void));
 void news __P((void));
 void newway __P((int));
 void notarget __P((void));
+void open_score_file __P((void));
 void parse __P((void));
 void post __P((char));
 void printobjs __P((void));
 int put __P((void));
 int puton __P((void));
+const char *rate __P((void));
 void ravage __P((void));
-void restore __P((void));
+void restore __P((const char *));
 int ride __P((void));
-void save __P((void));
+void save __P((const char *));
+char *save_file_name __P((const char *, size_t));
 void screen __P((void));
 int shoot __P((void));
 void succumb __P((int));
 int take __P((unsigned int[]));
 int takeoff __P((void));
 void target __P((void));
-int throw __P((char *));
-int ucard __P((unsigned int *));
+int throw __P((const char *));
+const char *truedirec __P((int, char));
+int ucard __P((const unsigned int *));
 int use __P((void));
 int visual __P((void));
 int wearit __P((void));
 void whichway __P((struct room));
-int wizard __P((char *));
 void wordinit __P((void));
 void writedes __P((void));
 int zzz __P((void));
-char   *getcom __P((char *, int, char *, char *));
-char   *getword __P((char *, char *, int));
-char   *rate __P((void));
-char   *truedirec __P((int, char));
-struct wlist *lookup __P((char *));