Further infiltrare semantic types.
This commit is contained in:
parent
d3578c9da9
commit
73608b6307
2 changed files with 26 additions and 22 deletions
24
advent.h
24
advent.h
|
@ -116,6 +116,8 @@ enum phase_codes {
|
|||
|
||||
typedef long token_t; // word token - someday this will be char[TOKLEN+1]
|
||||
typedef long vocab_t; // index into a vocabulary array */
|
||||
typedef long obj_t; // index into the object array */
|
||||
typedef long loc_t; // index into the locations array */
|
||||
|
||||
struct game_t {
|
||||
unsigned long lcg_a, lcg_c, lcg_m, lcg_x;
|
||||
|
@ -167,11 +169,11 @@ struct game_t {
|
|||
long abbrev[NLOCATIONS + 1];
|
||||
long atloc[NLOCATIONS + 1];
|
||||
long dseen[NDWARVES + 1]; // true if dwarf has seen him
|
||||
long dloc[NDWARVES + 1]; // location of dwarves, initially hard-wired in
|
||||
long odloc[NDWARVES + 1]; // prior loc of each dwarf, initially garbage
|
||||
long fixed[NOBJECTS + 1];
|
||||
loc_t dloc[NDWARVES + 1]; // location of dwarves, initially hard-wired in
|
||||
loc_t odloc[NDWARVES + 1]; // prior loc of each dwarf, initially garbage
|
||||
loc_t fixed[NOBJECTS + 1];
|
||||
long link[NOBJECTS * 2 + 1];
|
||||
long place[NOBJECTS + 1];
|
||||
loc_t place[NOBJECTS + 1];
|
||||
long hinted[NHINTS]; // hintlc[i] is how long he's been at LOC with cond bit i
|
||||
long hintlc[NHINTS]; // hinted[i] is true iff hint i has been used.
|
||||
long prop[NOBJECTS + 1];
|
||||
|
@ -222,12 +224,12 @@ extern int get_object_vocab_id(const char*);
|
|||
extern int get_action_vocab_id(const char*);
|
||||
extern int get_special_vocab_id(const char*);
|
||||
extern long get_vocab_id(const char*);
|
||||
extern void juggle(long);
|
||||
extern void move(long, long);
|
||||
extern long put(long, long, long);
|
||||
extern void carry(long, long);
|
||||
extern void drop(long, long);
|
||||
extern long atdwrf(long);
|
||||
extern void juggle(obj_t);
|
||||
extern void move(obj_t, loc_t);
|
||||
extern long put(obj_t, long, long);
|
||||
extern void carry(obj_t, loc_t);
|
||||
extern void drop(obj_t, loc_t);
|
||||
extern long atdwrf(loc_t);
|
||||
extern long setbit(long);
|
||||
extern bool tstbit(long, int);
|
||||
extern void make_zzword(char*);
|
||||
|
@ -242,7 +244,7 @@ extern int resume(void);
|
|||
extern int restore(FILE *);
|
||||
extern long initialise(void);
|
||||
extern int action(struct command_t *command);
|
||||
extern void state_change(long obj, long state);
|
||||
extern void state_change(obj_t, long);
|
||||
|
||||
|
||||
void bug(enum bugtype, const char *) __attribute__((__noreturn__));
|
||||
|
|
24
misc.c
24
misc.c
|
@ -535,11 +535,11 @@ long get_vocab_id(const char* word)
|
|||
return (WORD_NOT_FOUND);
|
||||
}
|
||||
|
||||
void juggle(long object)
|
||||
void juggle(obj_t object)
|
||||
/* Juggle an object by picking it up and putting it down again, the purpose
|
||||
* being to get the object to the front of the chain of things at its loc. */
|
||||
{
|
||||
long i, j;
|
||||
loc_t i, j;
|
||||
|
||||
i = game.place[object];
|
||||
j = game.fixed[object];
|
||||
|
@ -547,7 +547,7 @@ void juggle(long object)
|
|||
move(object + NOBJECTS, j);
|
||||
}
|
||||
|
||||
void move(long object, long where)
|
||||
void move(obj_t object, loc_t where)
|
||||
/* Place any object anywhere by picking it up and dropping it. May
|
||||
* already be toting, in which case the carry is a no-op. Mustn't
|
||||
* pick up objects which are not at any loc, since carry wants to
|
||||
|
@ -564,15 +564,15 @@ void move(long object, long where)
|
|||
drop(object, where);
|
||||
}
|
||||
|
||||
long put(long object, long where, long pval)
|
||||
/* PUT is the same as MOVE, except it returns a value used to set up the
|
||||
long put(obj_t object, loc_t where, long pval)
|
||||
/* put() is the same as move(), except it returns a value used to set up the
|
||||
* negated game.prop values for the repository objects. */
|
||||
{
|
||||
move(object, where);
|
||||
return (-1) - pval;;
|
||||
return STASHED(pval);
|
||||
}
|
||||
|
||||
void carry(long object, long where)
|
||||
void carry(obj_t object, loc_t where)
|
||||
/* Start toting an object, removing it from the list of things at its former
|
||||
* location. Incr holdng unless it was already being toted. If object>NOBJECTS
|
||||
* (moving "fixed" second loc), don't change game.place or game.holdng. */
|
||||
|
@ -596,7 +596,7 @@ void carry(long object, long where)
|
|||
game.link[temp] = game.link[object];
|
||||
}
|
||||
|
||||
void drop(long object, long where)
|
||||
void drop(obj_t object, loc_t where)
|
||||
/* Place an object at a given loc, prefixing it onto the game.atloc list. Decr
|
||||
* game.holdng if the object was being toted. */
|
||||
{
|
||||
|
@ -613,7 +613,7 @@ void drop(long object, long where)
|
|||
game.atloc[where] = object;
|
||||
}
|
||||
|
||||
long atdwrf(long where)
|
||||
long atdwrf(loc_t where)
|
||||
/* Return the index of first dwarf at the given location, zero if no dwarf is
|
||||
* there (or if dwarves not active yet), -1 if all dwarves are dead. Ignore
|
||||
* the pirate (6th dwarf). */
|
||||
|
@ -690,9 +690,11 @@ void bug(enum bugtype num, const char *error_string)
|
|||
|
||||
/* end */
|
||||
|
||||
void state_change(long obj, long state)
|
||||
void state_change(obj_t obj, long state)
|
||||
/* Object must have a change-message list for this to be useful; only some do */
|
||||
{
|
||||
game.prop[obj] = state;
|
||||
pspeak(obj, change, state, true);
|
||||
}
|
||||
}
|
||||
|
||||
/* end */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue