* These were at one time FORTRAN line numbers.
* The values don't matter, but perturb their order at your peril.
*/
-enum phase_codes {
+typedef enum {
GO_TERMINATE,
GO_MOVE,
GO_TOP,
GO_CLEAROBJ,
+ GO_CHECKHINT,
GO_WORD2,
GO_UNKNOWN,
GO_DWARFWAKE,
-};
+} phase_codes_t;
typedef long vocab_t; // index into a vocabulary array */
typedef long verb_t; // index into an actions array */
word_type_t type;
} command_word_t;
+typedef enum {EMPTY, RAW, TOKENIZED, GIVEN, PREPROCESSED, PROCESSING, EXECUTED} command_state_t;
+
typedef struct {
enum speechpart part;
command_word_t word[2];
verb_t verb;
- obj_t obj;
+ obj_t obj;
+ command_state_t state;
} command_t;
extern struct game_t game;
extern struct settings_t settings;
extern bool get_command_input(command_t *);
+extern void clear_command(command_t *);
extern void speak(const char*, ...);
extern void sspeak(int msg, ...);
-extern void pspeak(vocab_t, enum speaktype, int, bool, ...);
+extern void pspeak(vocab_t, enum speaktype, bool, int, ...);
extern void rspeak(vocab_t, ...);
extern void echo_input(FILE*, const char*, const char*);
extern bool silent_yes(void);
extern int resume(void);
extern int restore(FILE *);
extern long initialise(void);
-extern int action(command_t command);
+extern phase_codes_t action(command_t);
extern void state_change(obj_t, int);
extern bool is_valid(struct game_t);