static int fill(verb_t, obj_t);
-static int attack(struct command_t command)
+static int attack(command_t command)
/* Attack. Assume target if unambiguous. "Throw" also links here.
* Attackable objects fall into two categories: enemies (snake,
* dwarf, etc.) and others (bird, clam, machine). Ambiguous if 2
return GO_CLEAROBJ;
}
-static int read(struct command_t command)
+static int read(command_t command)
/* Read. Print stuff based on objtxt. Oyster (?) is special case. */
{
if (command.obj == INTRANSITIVE) {
return GO_CLEAROBJ;
}
-static int say(struct command_t command)
+static int say(command_t command)
/* Say. Echo WD2. Magic words override. */
{
if (command.word[1].type == MOTION &&
return GO_MOVE;
}
-static int throw (struct command_t command)
+static int throw (command_t command)
/* Throw. Same as discard unless axe. Then same as attack except
* ignore bird, and if dwarf is present then one might be killed.
* (Only way to do so!) Axe also special for dragon, bear, and
}
}
-int action(struct command_t command)
+int action(command_t command)
/* Analyse a verb. Remember what it was, go back for object if second word
* unless verb is "say", which snarfs arbitrary second word.
*/
word_type_t type;
} command_word_t;
-struct command_t {
+typedef struct {
enum speechpart part;
command_word_t word[2];
verb_t verb;
obj_t obj;
-};
+} command_t;
extern struct game_t game;
extern struct settings_t settings;
-extern bool get_command_input(struct command_t *);
+extern bool get_command_input(command_t *);
extern void speak(const char*, ...);
extern void sspeak(int msg, ...);
extern void pspeak(vocab_t, enum speaktype, int, bool, ...);
extern int resume(void);
extern int restore(FILE *);
extern long initialise(void);
-extern int action(struct command_t command);
+extern int action(command_t command);
extern void state_change(obj_t, int);
static bool do_command()
/* Get and execute a command */
{
- static struct command_t command;
+ static command_t command;
/* Can't leave cave once it's closing (except by main office). */
if (OUTSID(game.newloc) && game.newloc != 0 && game.closng) {
game.knfloc = 0;
/* Preserve state from last command for reuse when required */
- struct command_t preserve;
- memcpy(&preserve, &command, sizeof(struct command_t));
+ command_t preserve;
+ memcpy(&preserve, &command, sizeof(command_t));
// Get command input from user
if (!get_command_input(&command))
return;
}
-static void tokenize(char* raw, struct command_t *cmd)
+static void tokenize(char* raw, command_t *cmd)
{
- memset(cmd, '\0', sizeof(struct command_t));
+ memset(cmd, '\0', sizeof(command_t));
/* Bound prefix on the %s would be needed to prevent buffer
* overflow. but we shortstop this more simply by making each
get_vocab_metadata(&(cmd->word[1]));
}
-bool get_command_input(struct command_t *command)
+bool get_command_input(command_t *command)
/* Get user input on stdin, parse and map to command */
{
char inputbuf[LINESIZE];