From: Eric S. Raymond Date: Thu, 8 Jun 2017 08:25:20 +0000 (-0400) Subject: Abolish funcs.h. X-Git-Tag: 1.1~516 X-Git-Url: https://jxself.org/git/?a=commitdiff_plain;h=46cd836df0943cfab98494d8668479f7ac93b762;p=open-adventure.git Abolish funcs.h. --- diff --git a/Makefile b/Makefile index c06d0ab..92a2941 100644 --- a/Makefile +++ b/Makefile @@ -22,7 +22,7 @@ ifeq ($(UNAME_S),Linux) endif OBJS=main.o init.o actions1.o actions2.o score.o misc.o -SOURCES=$(OBJS:.o=.c) dungeon.c advent.h funcs.h sizes.h adventure.text Makefile control linenoise/linenoise.[ch] +SOURCES=$(OBJS:.o=.c) dungeon.c advent.h sizes.h adventure.text Makefile control linenoise/linenoise.[ch] .c.o: $(CC) $(CCFLAGS) $(DBX) -c $< @@ -30,13 +30,13 @@ SOURCES=$(OBJS:.o=.c) dungeon.c advent.h funcs.h sizes.h adventure.text Makefile advent: $(OBJS) database.o linenoise.o $(CC) $(CCFLAGS) $(DBX) -o advent $(OBJS) database.o linenoise.o $(LDFLAGS) $(LIBS) -main.o: advent.h funcs.h database.h database.c sizes.h +main.o: advent.h database.h database.c sizes.h -init.o: advent.h funcs.h database.h database.c sizes.h +init.o: advent.h database.h database.c sizes.h -actions1.o: advent.h funcs.h database.h database.c sizes.h +actions1.o: advent.h database.h database.c sizes.h -actions2.o: advent.h funcs.h database.h database.c sizes.h +actions2.o: advent.h database.h database.c sizes.h score.o: advent.h database.h database.c sizes.h diff --git a/actions1.c b/actions1.c index f1de63b..5de9a1f 100644 --- a/actions1.c +++ b/actions1.c @@ -1,7 +1,6 @@ #include #include #include "advent.h" -#include "funcs.h" #include "database.h" /* This stuff was broken off as part of an effort to get the main program diff --git a/actions2.c b/actions2.c index 1470762..57b06ce 100644 --- a/actions2.c +++ b/actions2.c @@ -1,5 +1,5 @@ #include "advent.h" -#include "funcs.h" +#include "database.h" /* Carry an object. Special cases for bird and cage (if bird in cage, can't * take one without the other). Liquids also special, since they depend on diff --git a/advent.h b/advent.h index d3a62ca..8b99364 100644 --- a/advent.h +++ b/advent.h @@ -135,6 +135,49 @@ extern void set_seed(long); extern unsigned long get_next_lcg_value(void); extern long randrange(long); extern void score(long); +extern int carry(long); +extern int discard(long, bool); +extern int attack(FILE *, long, long); +extern int throw(FILE *, long, long); +extern int feed(long); +extern int fill(long); + +/* Statement functions + * + * AT(OBJ) = true if on either side of two-placed object + * CNDBIT(L,N) = true if COND(L) has bit n set (bit 0 is units bit) + * DARK(DUMMY) = true if location "LOC" is dark + * FORCED(LOC) = true if LOC moves without asking for input (COND=2) + * FOREST(LOC) = true if LOC is part of the forest + * GSTONE(OBJ) = true if OBJ is a gemstone + * HERE(OBJ) = true if the OBJ is at "LOC" (or is being carried) + * LIQ(DUMMY) = object number of liquid in bottle + * LIQLOC(LOC) = object number of liquid (if any) at LOC + * PCT(N) = true N% of the time (N integer from 0 to 100) + * TOTING(OBJ) = true if the OBJ is being carried */ + +#define TOTING(OBJ) (game.place[OBJ] == -1) +#define AT(OBJ) (game.place[OBJ] == game.loc || game.fixed[OBJ] == game.loc) +#define HERE(OBJ) (AT(OBJ) || TOTING(OBJ)) +#define LIQ2(PBOTL) ((1-(PBOTL))*WATER+((PBOTL)/2)*(WATER+OIL)) +#define LIQ(DUMMY) (LIQ2(game.prop[BOTTLE]<0 ? -1-game.prop[BOTTLE] : game.prop[BOTTLE])) +#define LIQLOC(LOC) (LIQ2((MOD(COND[LOC]/2*2,8)-5)*MOD(COND[LOC]/4,2)+1)) +#define CNDBIT(L,N) (TSTBIT(COND[L],N)) +#define FORCED(LOC) (COND[LOC] == 2) +#define DARK(DUMMY) ((!CNDBIT(game.loc,0)) && (game.prop[LAMP] == 0 || !HERE(LAMP))) +#define PCT(N) (randrange(100) < (N)) +#define GSTONE(OBJ) ((OBJ) == EMRALD || (OBJ) == RUBY || (OBJ) == AMBER || (OBJ) == SAPPH) +#define FOREST(LOC) ((LOC) >= 145 && (LOC) <= 166) +#define VOCWRD(LETTRS,SECT) (VOCAB(MAKEWD(LETTRS),SECT)) + +/* The following two functions were added to fix a bug (game.clock1 decremented + * while in forest). They should probably be replaced by using another + * "cond" bit. For now, however, a quick fix... OUTSID(LOC) is true if + * LOC is outside, INDEEP(LOC) is true if LOC is "deep" in the cave (hall + * of mists or deeper). Note special kludges for "Foof!" locs. */ + +#define OUTSID(LOC) ((LOC) <= 8 || FOREST(LOC) || (LOC) == PLAC[SAPPH] || (LOC) == 180 || (LOC) == 182) +#define INDEEP(LOC) ((LOC) >= 15 && !OUTSID(LOC) && (LOC) != 179) /* vocabulary items */ extern long AMBER, ATTACK, AXE, BACK, BATTER, BEAR, diff --git a/funcs.h b/funcs.h deleted file mode 100644 index e21fbd4..0000000 --- a/funcs.h +++ /dev/null @@ -1,51 +0,0 @@ -#include -#include "database.h" - -/* Statement functions - * - * AT(OBJ) = true if on either side of two-placed object - * CNDBIT(L,N) = true if COND(L) has bit n set (bit 0 is units bit) - * DARK(DUMMY) = true if location "LOC" is dark - * FORCED(LOC) = true if LOC moves without asking for input (COND=2) - * FOREST(LOC) = true if LOC is part of the forest - * GSTONE(OBJ) = true if OBJ is a gemstone - * HERE(OBJ) = true if the OBJ is at "LOC" (or is being carried) - * LIQ(DUMMY) = object number of liquid in bottle - * LIQLOC(LOC) = object number of liquid (if any) at LOC - * PCT(N) = true N% of the time (N integer from 0 to 100) - * TOTING(OBJ) = true if the OBJ is being carried */ - -#define TOTING(OBJ) (game.place[OBJ] == -1) -#define AT(OBJ) (game.place[OBJ] == game.loc || game.fixed[OBJ] == game.loc) -#define HERE(OBJ) (AT(OBJ) || TOTING(OBJ)) -#define LIQ2(PBOTL) ((1-(PBOTL))*WATER+((PBOTL)/2)*(WATER+OIL)) -#define LIQ(DUMMY) (LIQ2(game.prop[BOTTLE]<0 ? -1-game.prop[BOTTLE] : game.prop[BOTTLE])) -#define LIQLOC(LOC) (LIQ2((MOD(COND[LOC]/2*2,8)-5)*MOD(COND[LOC]/4,2)+1)) -#define CNDBIT(L,N) (TSTBIT(COND[L],N)) -#define FORCED(LOC) (COND[LOC] == 2) -#define DARK(DUMMY) ((!CNDBIT(game.loc,0)) && (game.prop[LAMP] == 0 || !HERE(LAMP))) -#define PCT(N) (randrange(100) < (N)) -#define GSTONE(OBJ) ((OBJ) == EMRALD || (OBJ) == RUBY || (OBJ) == AMBER || (OBJ) == SAPPH) -#define FOREST(LOC) ((LOC) >= 145 && (LOC) <= 166) -#define VOCWRD(LETTRS,SECT) (VOCAB(MAKEWD(LETTRS),SECT)) - -/* The following two functions were added to fix a bug (game.clock1 decremented - * while in forest). They should probably be replaced by using another - * "cond" bit. For now, however, a quick fix... OUTSID(LOC) is true if - * LOC is outside, INDEEP(LOC) is true if LOC is "deep" in the cave (hall - * of mists or deeper). Note special kludges for "Foof!" locs. */ - -#define OUTSID(LOC) ((LOC) <= 8 || FOREST(LOC) || (LOC) == PLAC[SAPPH] || (LOC) == 180 || (LOC) == 182) -#define INDEEP(LOC) ((LOC) >= 15 && !OUTSID(LOC) && (LOC) != 179) - -extern int carry(long); -extern int discard(long, bool); -extern int attack(FILE *, long, long); -extern int throw(FILE *, long, long); -extern int feed(long); -extern int fill(long); -void score(long); - - - - diff --git a/init.c b/init.c index a0d8f1c..aae7704 100644 --- a/init.c +++ b/init.c @@ -4,7 +4,6 @@ #include #include "advent.h" -#include "funcs.h" #include "database.h" /* diff --git a/main.c b/main.c index 03990db..04bb508 100644 --- a/main.c +++ b/main.c @@ -90,8 +90,6 @@ int main(int argc, char *argv[]) { * game.panic says whether he's found out he's trapped in the cave * game.wzdark says whether the loc he's leaving was dark */ -#include "funcs.h" - /* Initialize our LCG PRNG with parameters tested against Knuth vol. 2. by the original authors */ lcgstate.a = 1093; diff --git a/misc.c b/misc.c index 1e2f600..6b9e761 100644 --- a/misc.c +++ b/misc.c @@ -3,8 +3,8 @@ #include #include #include + #include "advent.h" -#include "funcs.h" #include "database.h" #include "linenoise/linenoise.h"