Proof of concept for Section 3 report generator.
[open-adventure.git] / dungeon.c
index feb98e79be2f7069dbf523049bfd0da20b0e6dde..35ffbd4aa878e2e269551dd7b37499053d9abbe0 100644 (file)
--- a/dungeon.c
+++ b/dungeon.c
  *
  * Other sections are obsolete and ignored */
 
-/*  The various messages (sections 1, 2, 5, 6, etc.) may include certain
- *  special character sequences to denote that the program must provide
- *  parameters to insert into a message when the message is printed.  These
- *  sequences are:
- *     %S = The letter 'S' or nothing (if a given value is exactly 1)
- *     %W = A word (up to 10 characters)
- *     %L = A word mapped to lower-case letters
- *     %U = A word mapped to upper-case letters
- *     %C = A word mapped to lower-case, first letter capitalised
- *     %T = Several words of text, ending with a word of -1
- *     %1 = A 1-digit number
- *     %2 = A 2-digit number
- *     ...
- *     %9 = A 9-digit number
- *     %B = Variable number of blanks
- *     %! = The entire message should be suppressed */
-
 #define LINESIZE 100
 #define CLSMAX 12
 #define LINSIZ 12600
@@ -96,6 +79,7 @@
 #include <stdlib.h>
 #include <stdbool.h>
 #include <unistd.h>
+#include <string.h>
 #include "newdb.h"
 #include "common.h"
 
@@ -115,8 +99,6 @@ long LINES[LINSIZ + 1];
 long TRAVEL[TRVSIZ + 1];
 long KTAB[TABSIZ + 1];
 long ATAB[TABSIZ + 1];
-long PLAC[NOBJECTS + 1];
-long FIXD[NOBJECTS + 1];
 long ACTSPK[VRBSIZ + 1];
 
 static long GETTXT(long SKIP, long ONEWRD, long UPPER)
@@ -251,45 +233,18 @@ static long GETNUM(FILE *source)
     return (GETNUM);
 }
 
-/*  Sections 1, 2, 5, 6, 10, 14.  Read messages and set up pointers. */
+/*  Sections 1, 2, 5, 6, 10, 14.  Skip these, they're all in YAML now. */
 static void read_messages(FILE* database, long sect)
 {
     long KK = LINUSE;
     while (true) {
-        long loc;
-        LINUSE = KK;
-        loc = GETNUM(database);
-        if (LNLENG >= LNPOSN + 70)
-            BUG(MESSAGE_LINE_GT_70_CHARACTERS);
-        if (loc == -1) return;
-        if (LNLENG < LNPOSN)
-            BUG(NULL_LINE_IN_MESSAGE);
-        do {
-            KK = KK + 1;
-            if (KK >= LINSIZ)
-                BUG(TOO_MANY_WORDS_OF_MESSAGES);
-            LINES[KK] = GETTXT(false, false, false);
-        } while (LINES[KK] != -1);
-        LINES[LINUSE] = KK;
-        if (loc == OLDLOC) continue;
-        OLDLOC = loc;
-        LINES[LINUSE] = -KK;
-        if (sect == 10 || sect == 14) {
-           /* now parsed from YAML */
-            continue;
-        }
-        if (sect == 5) {
-           /* Now handled in YAML */   
-            continue;
-        }
-        if (sect == 6) {
-           /* Now handled in YAML */
-            continue;
-        }
-        if (sect == 1) {
-           /* Now handled in YAML */
-            continue;
-        }
+       do {
+           if (NULL == fgets(INLINE + 1, sizeof(INLINE) - 1, database)) {
+               printf("Failed fgets()\n");
+           }
+       } while (!feof(database) && INLINE[1] == '#');
+       if (strncmp(INLINE + 1, "-1\n", 3) == 0)
+           break;
     }
 }
 
@@ -339,8 +294,7 @@ static void read_initial_locations(FILE* database)
 {
     long OBJ;
     while ((OBJ = GETNUM(database)) != -1) {
-        PLAC[OBJ] = GETNUM(NULL);
-        FIXD[OBJ] = GETNUM(NULL);
+       /* all done from YAML now */
     }
 }
 
@@ -514,8 +468,6 @@ static void write_file(FILE* header_file)
     write_1d(header_file, TRAVEL, TRVSIZ + 1, "TRAVEL");
     write_1d(header_file, KTAB, TABSIZ + 1, "KTAB");
     write_1d(header_file, ATAB, TABSIZ + 1, "ATAB");
-    write_1d(header_file, PLAC, NOBJECTS + 1, "PLAC");
-    write_1d(header_file, FIXD, NOBJECTS + 1, "FIXD");
     write_1d(header_file, ACTSPK, VRBSIZ + 1, "ACTSPK");
 
     fprintf(header_file, "#undef LOCATION\n");