X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;ds=sidebyside;f=advent.h;h=470e79ff5879d1a369dd30e308cf6f06a9d29789;hb=7137c2031652f34cd16966cd8620eaa88a4e2af5;hp=cca1dbab1d328e310643fc1f389639d03444f0c4;hpb=294f2b8a6d0afeb1d209f5cd7baa6509710f0bc0;p=open-adventure.git diff --git a/advent.h b/advent.h index cca1dba..470e79f 100644 --- a/advent.h +++ b/advent.h @@ -27,7 +27,17 @@ /* Special object-state values - integers > 0 are object-specific */ #define STATE_NOTFOUND -1 // 'Not found" state of treasures */ -#define STATE_GROUND 0 // After discovered, before messed with +#define STATE_FOUND 0 // After discovered, before messed with +#define STATE_IN_CAVITY 1 // State value common to all gemstones + +/* Special fixed object-state values - integers > 0 are location */ +#define IS_FIXED -1 +#define IS_FREE 0 + +/* Map a state property value to a negative range, where the object cannot be + * picked up but the value can be recovered later. Avoid colliding with -1, + * which has its own meaning. */ +#define STASHED(obj) (-1 - game.prop[obj]) /* * MOD(N,M) = Arithmetic modulus @@ -185,7 +195,7 @@ struct command_t { token_t wd2; long id1; long id2; - char raw1[BUFSIZ], raw2[BUFSIZ]; + char raw1[LINESIZE], raw2[LINESIZE]; }; extern struct game_t game; @@ -232,6 +242,8 @@ 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); + void bug(enum bugtype, const char *) __attribute__((__noreturn__));