Magic-number elimination.
[open-adventure.git] / main.c
diff --git a/main.c b/main.c
index cf5d396c37e4af6ed2ba46ba391c6734973e552f..8dcaa52eda8e465e4e2a31817acd6ffc8e46b5d4 100644 (file)
--- a/main.c
+++ b/main.c
 
 #define DIM(a) (sizeof(a)/sizeof(a[0]))
 
-FILE *logfp = NULL;
-bool oldstyle = false;
-bool prompt = true;
-
 // LCOV_EXCL_START
 // exclude from coverage analysis because it requires interactivity to test
 static void sig_handler(int signo)
 {
     if (signo == SIGINT) {
-        if (logfp != NULL)
-            fflush(logfp);
+        if (settings.logfp != NULL)
+            fflush(settings.logfp);
     }
     exit(EXIT_FAILURE);
 }
@@ -71,16 +67,16 @@ int main(int argc, char *argv[])
     while ((ch = getopt(argc, argv, opts)) != EOF) {
         switch (ch) {
         case 'l':
-            logfp = fopen(optarg, "w");
-            if (logfp == NULL)
+            settings.logfp = fopen(optarg, "w");
+            if (settings.logfp == NULL)
                 fprintf(stderr,
                         "advent: can't open logfile %s for write\n",
                         optarg);
             signal(SIGINT, sig_handler);
             break;
         case 'o':
-            oldstyle = true;
-            prompt = false;
+            settings.oldstyle = true;
+            settings.prompt = false;
             break;
 #ifndef ADVENT_NOSAVE
         case 'r':
@@ -121,8 +117,8 @@ int main(int argc, char *argv[])
     }
 #endif
 
-    if (logfp)
-        fprintf(logfp, "seed %ld\n", seedval);
+    if (settings.logfp)
+        fprintf(settings.logfp, "seed %ld\n", seedval);
 
     /* interpret commands until EOF or interrupt */
     for (;;) {
@@ -189,7 +185,7 @@ static void checkhints(void)
                     game.hintlc[hint] = 0;
                     return;
                 case 4:        /* dark */
-                    if (game.prop[EMERALD] != -1 && game.prop[PYRAMID] == -1)
+                    if (game.prop[EMERALD] != STATE_NOTFOUND && game.prop[PYRAMID] == STATE_NOTFOUND)
                         break;
                     game.hintlc[hint] = 0;
                     return;
@@ -693,7 +689,7 @@ static bool playermove( int motion)
                      * entries check for game.prop(TROLL)=0.)  Special
                      * stuff for bear. */
                     if (game.prop[TROLL] == TROLL_PAIDONCE) {
-                        pspeak(TROLL, look, TROLL_PAIDONCE);
+                     pspeak(TROLL, look, TROLL_PAIDONCE, true);
                         game.prop[TROLL] = TROLL_UNPAID;
                         move(TROLL2, 0);
                         move(TROLL2 + NOBJECTS, 0);
@@ -921,7 +917,7 @@ static void listobjects(void)
             int kk = game.prop[obj];
             if (obj == STEPS && game.loc == game.fixed[STEPS])
                 kk = 1;
-            pspeak(obj, look, kk);
+            pspeak(obj, look, kk, true);
         }
     }
 }
@@ -1010,7 +1006,7 @@ L2600:
          *  tick game.clock1 unless well into cave (and not at Y2). */
         if (game.closed) {
             if (game.prop[OYSTER] < 0 && TOTING(OYSTER))
-                pspeak(OYSTER, look, 1);
+             pspeak(OYSTER, look, 1, true);
             for (size_t i = 1; i <= NOBJECTS; i++) {
                 if (TOTING(i) && game.prop[i] < 0)
                     game.prop[i] = -1 - game.prop[i];
@@ -1080,7 +1076,7 @@ L2607:
         packed_to_token(command.wd2, word2);
         V1 = get_vocab_id(word1);
         V2 = get_vocab_id(word2);
-        if (V1 == ENTER && (V2 == STREAM || V2 == 1000 + WATER)) {
+        if (V1 == ENTER && (V2 == STREAM || V2 == PROMOTE_WORD(WATER))) {
             if (LIQLOC(game.loc) == WATER) {
                 rspeak(FEET_WET);
             } else {