Correct return types for all of the action handling functions in actions, so it's...
[open-adventure.git] / advent.h
index 5e9871d4ed7a65c10497a251429bdb3b5e98c218..dc81ed5fd55b6e9c625bfc281493ffc4c441f243 100644 (file)
--- a/advent.h
+++ b/advent.h
@@ -102,7 +102,7 @@ typedef enum scorebonus {none, splatter, defeat, victory} score_t;
  * 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,
@@ -111,7 +111,7 @@ enum phase_codes {
     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 */
@@ -196,20 +196,24 @@ typedef struct {
     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);
@@ -231,7 +235,7 @@ extern int suspend(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);