More fixed limits (NOBJECTS, LOCSIZ) stop being fixed.

This commit is contained in:
Eric S. Raymond 2017-06-24 10:18:33 -04:00
parent 985137d9c7
commit 64035d0026
5 changed files with 8 additions and 15 deletions

View file

@ -59,6 +59,8 @@ saveresume.o: advent.h database.h common.h newdb.h
common.o: common.h
dungeon.o: common.h newdb.h
newdb.o: newdb.c newdb.h
$(CC) $(CCFLAGS) $(DBX) -c newdb.c

View file

@ -2,9 +2,6 @@
#define COMMON_H
/* maximum size limits shared by dungeon compiler and runtime */
#define LOCSIZ 185
#define NOBJECTS 100
extern const char advent_to_ascii[128];
extern const char ascii_to_advent[128];

View file

@ -17,6 +17,7 @@
#include <stdlib.h>
#include <stdbool.h>
#include <unistd.h>
#include "newdb.h"
#include "common.h"
// Global variables for use in functions below that can gradually disappear as code is cleaned up

13
init.c
View file

@ -14,23 +14,13 @@
* 12600 words of message text (LINES, LINSIZ).
* 885 travel options (TRAVEL, TRVSIZ).
* 330 vocabulary words (KTAB, ATAB, TABSIZ).
* 185 locations (KEY, COND, game.abbrev, game.atloc, LOCSIZ).
* 100 objects (PLAC, game.place, FIXD, game.fixed, game.link (twice),
* ogame.prop).
* 35 "action" verbs (ACTSPK, VRBSIZ).
* 12 different player classifications (CTEXT, CVAL, CLSMAX).
* 20 hints (game.hintlc, game.hinted, HINTS, HNTSIZ).
* 5 "# of turns" threshholds (TRNSIZ).
* There are also limits which cannot be exceeded due to the structure of
* the database. (E.G., The vocabulary uses n/1000 to determine word type,
* so there can't be more than 1000 words.) These upper limits are:
* 1000 non-synonymous vocabulary words
* 300 locations
* 100 objects
* Note:
* - the object count limit has been abstracted as NOBJECTS
* - the random message limit has been abstracted as RTXSIZ
* - maximum locations limit has been abstracted as LOCSIZ
*/
/* Description of the database format
@ -347,11 +337,10 @@ void initialise(void)
* game.iwest How many times he's said "west" instead of "w"
* game.knfloc 0 if no knife here, loc if knife here, -1 after caveat
* game.limit Lifetime of lamp (not set here)
* NDEATHS Number of reincarnation messages available (up to 5)
* game.numdie Number of times killed so far
* game.trnluz # points lost so far due to number of turns used
* game.turns Tallies how many commands he's given (ignores yes/no)
* Logicals were explained earlier */
*/
game.turns = 0;
game.trnluz = 0;
game.lmwarn = false;

View file

@ -70,6 +70,8 @@ extern obituary_t obituaries[];
extern hint_t hints[];
extern long conditions[];
#define LOCSIZ {}
#define NOBJECTS {}
#define NHINTS {}
#define NCLASSES {}
#define NDEATHS {}
@ -338,6 +340,8 @@ if __name__ == "__main__":
)
h = h_template.format(
len(db["locations"]),
len(db["object_descriptions"]),
len(db["hints"]),
len(db["classes"]),
len(db["obituaries"]),