X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=advent.h;h=1e7a0962f65d7684f1df8cd1f193d4512af7da49;hb=5c30d6429f4f5e3d187d52b6ac623d61968738a4;hp=002d3cae62e736fbebc93a97cc60bf562131ddbb;hpb=ca5374edc3b81b0371d81c74974404352794689b;p=open-adventure.git diff --git a/advent.h b/advent.h index 002d3ca..1e7a096 100644 --- a/advent.h +++ b/advent.h @@ -87,7 +87,7 @@ enum termination {endgame, quitgame, scoregame}; enum speechpart {unknown, intransitive, transitive}; -enum wordtype {NO_WORD_TYPE, MOTION, OBJECT, ACTION, NUMERIC}; +typedef enum {NO_WORD_TYPE, MOTION, OBJECT, ACTION, NUMERIC} word_type_t; typedef enum scorebonus {none, splatter, defeat, victory} score_t; @@ -101,11 +101,8 @@ enum phase_codes { GO_TOP, GO_CLEAROBJ, GO_CHECKHINT, - GO_DIRECTION, GO_WORD2, - GO_SPECIALS, GO_UNKNOWN, - GO_ACTION, GO_DWARFWAKE, }; @@ -186,13 +183,15 @@ struct settings_t { bool prompt; }; +typedef struct { + char raw[LINESIZE]; + vocab_t id; + word_type_t type; +} command_word_t; + struct command_t { - char raw1[LINESIZE], raw2[LINESIZE]; enum speechpart part; - vocab_t id1; - vocab_t id2; - enum wordtype type1; - enum wordtype type2; + command_word_t word[2]; verb_t verb; obj_t obj; }; @@ -231,4 +230,11 @@ extern void state_change(obj_t, int); void bug(enum bugtype, const char *) __attribute__((__noreturn__)); +/* represent an empty command word */ +static const command_word_t empty_command_word = { + .raw = "", + .id = WORD_EMPTY, + .type = NO_WORD_TYPE, +}; + /* end */