Abolish HNTMAX and HNTSIZ in favor of HINT_COUNT.

This change necessitated include guards on newdb.h.
This commit is contained in:
Jason S. Ninneman 2017-06-21 10:01:16 -07:00
parent deb61e3dcd
commit c8f6ff3701
7 changed files with 12 additions and 14 deletions

View file

@ -3,6 +3,7 @@
#include <stdbool.h>
#include "common.h"
#include "newdb.h"
#define LINESIZE 100
#define NDWARVES 6 /* number of dwarves */
@ -70,8 +71,8 @@ struct game_t {
long fixed[NOBJECTS + 1];
long link[NOBJECTS * 2 + 1];
long place[NOBJECTS + 1];
long hinted[HNTSIZ + 1];
long hintlc[HNTSIZ + 1];
long hinted[HINT_COUNT];
long hintlc[HINT_COUNT];
long prop[NOBJECTS + 1];
};

View file

@ -4,7 +4,6 @@
#define LOCSIZ 185
#define NOBJECTS 100
#define HNTSIZ 20
extern const char advent_to_ascii[128];
extern const char ascii_to_advent[128];

View file

@ -14,6 +14,7 @@
#define TRVSIZ 885
#define TOKLEN 5
#define HINTLEN 5
#define HNTSIZ 20
#include <stdio.h>
#include <stdlib.h>
@ -448,11 +449,6 @@ static int read_database(FILE* database)
* whether the abbreviated description is printed. Counts modulo 5
* unless "LOOK" is used. */
static void write_0d(FILE* header_file, long single, const char* varname)
{
fprintf(header_file, "LOCATION long %s INITIALIZE(= %ld);\n", varname, single);
}
static void write_1d(FILE* header_file, long array[], long dim, const char* varname)
{
fprintf(header_file, "LOCATION long %s[] INITIALIZE(= {\n", varname);
@ -490,7 +486,6 @@ static void write_file(FILE* header_file)
fprintf(header_file, "\n");
// content variables
write_0d(header_file, HNTMAX, "HNTMAX");
write_1d(header_file, OBJSND, NOBJECTS + 1, "OBJSND");
write_1d(header_file, OBJTXT, NOBJECTS + 1, "OBJTXT");
write_1d(header_file, COND, LOCSIZ + 1, "COND");

3
init.c
View file

@ -5,7 +5,6 @@
#include "advent.h"
#include "database.h"
#include "newdb.h"
/*
* Initialisation
@ -226,7 +225,7 @@ void initialise(void)
/* Clear the hint stuff. game.hintlc[i] is how long he's been at LOC
* with cond bit i. game.hinted[i] is true iff hint i has been
* used. */
for (int i = 1; i <= HNTMAX; i++) {
for (int i = 1; i <= HINT_COUNT; i++) {
game.hinted[i] = false;
game.hintlc[i] = 0;
}

2
main.c
View file

@ -189,7 +189,7 @@ static bool fallback_handler(char *buf)
static void checkhints(void)
{
if (COND[game.loc] >= game.conds) {
for (int hint = 1; hint <= HNTMAX; hint++) {
for (int hint = 1; hint <= HINT_COUNT; hint++) {
if (game.hinted[hint])
continue;
if (!CNDBIT(game.loc, hint + HBASE))

View file

@ -9,6 +9,8 @@ h_name = "newdb.h"
c_name = "newdb.c"
h_template = """/* Generated from adventure.yaml - do not hand-hack! */
#ifndef NEWDB_H
#define NEWDB_H
#include <stdio.h>
@ -61,6 +63,7 @@ extern hint_t hints[];
extern const size_t CLSSES;
extern const int maximum_deaths;
extern const int turn_threshold_count;
#define HINT_COUNT {}
enum arbitrary_messages_refs {{
{}
@ -74,7 +77,7 @@ enum object_descriptions_refs {{
{}
}};
/* end */
#endif /* end NEWDB_H */
"""
c_template = """/* Generated from adventure.yaml - do not hand-hack! */
@ -253,6 +256,7 @@ if __name__ == "__main__":
db = yaml.load(f)
h = h_template.format(
len(db["hints"]),
get_refs(db["arbitrary_messages"]),
get_refs(db["locations"]),
get_refs(db["object_descriptions"]),

View file

@ -87,7 +87,7 @@ long score(enum termination mode)
mxscor += 2;
/* Deduct for hints/turns/saves. Hints < 4 are special; see database desc. */
for (long i = 1; i <= HNTMAX; i++) {
for (long i = 1; i <= HINT_COUNT; i++) {
if (game.hinted[i])
score = score - hints[i-1].penalty;
}