Correct return types for all of the action handling functions in actions, so it's...
[open-adventure.git] / advent.h
index 788d65934e8b88cea5019e40136927f5ed261456..dc81ed5fd55b6e9c625bfc281493ffc4c441f243 100644 (file)
--- a/advent.h
+++ b/advent.h
@@ -8,9 +8,9 @@
 
 /* LCG PRNG parameters tested against
  * Knuth vol. 2. by the original authors */
-#define LCG_A 1093
-#define LCG_C 221587
-#define LCG_M 1048576
+#define LCG_A 1093L
+#define LCG_C 221587L
+#define LCG_M 1048576L
 
 #define LINESIZE       1024
 #define TOKLEN         5          // № sigificant characters in a token */
@@ -102,15 +102,16 @@ 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,
     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 */
@@ -119,7 +120,7 @@ typedef long loc_t;    // index into the locations array */
 typedef long turn_t;   // turn counter or threshold */
 
 struct game_t {
-    int64_t lcg_x;
+    int32_t lcg_x;
     long abbnum;                 // How often to print long descriptions
     score_t bonus;               // What kind of finishing bonus we are getting
     loc_t chloc;                 // pirate chest location
@@ -195,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);
@@ -230,9 +235,9 @@ 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);
 
 void bug(enum bugtype, const char *) __attribute__((__noreturn__));