Typedefify command_t; simplify code accordingly.

This commit is contained in:
Jason S. Ninneman 2017-08-03 08:29:46 -07:00
parent 5c30d6429f
commit 24d102781c
4 changed files with 15 additions and 15 deletions

View file

@ -6,7 +6,7 @@
static int fill(verb_t, obj_t); 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. /* Attack. Assume target if unambiguous. "Throw" also links here.
* Attackable objects fall into two categories: enemies (snake, * Attackable objects fall into two categories: enemies (snake,
* dwarf, etc.) and others (bird, clam, machine). Ambiguous if 2 * dwarf, etc.) and others (bird, clam, machine). Ambiguous if 2
@ -1076,7 +1076,7 @@ static int quit(void)
return GO_CLEAROBJ; 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. */ /* Read. Print stuff based on objtxt. Oyster (?) is special case. */
{ {
if (command.obj == INTRANSITIVE) { if (command.obj == INTRANSITIVE) {
@ -1141,7 +1141,7 @@ static int rub(verb_t verb, obj_t obj)
return GO_CLEAROBJ; return GO_CLEAROBJ;
} }
static int say(struct command_t command) static int say(command_t command)
/* Say. Echo WD2. Magic words override. */ /* Say. Echo WD2. Magic words override. */
{ {
if (command.word[1].type == MOTION && if (command.word[1].type == MOTION &&
@ -1173,7 +1173,7 @@ static int throw_support(vocab_t spk)
return GO_MOVE; 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 /* Throw. Same as discard unless axe. Then same as attack except
* ignore bird, and if dwarf is present then one might be killed. * ignore bird, and if dwarf is present then one might be killed.
* (Only way to do so!) Axe also special for dragon, bear, and * (Only way to do so!) Axe also special for dragon, bear, and
@ -1311,7 +1311,7 @@ static int wave(verb_t verb, obj_t obj)
} }
} }
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 /* Analyse a verb. Remember what it was, go back for object if second word
* unless verb is "say", which snarfs arbitrary second word. * unless verb is "say", which snarfs arbitrary second word.
*/ */

View file

@ -189,17 +189,17 @@ typedef struct {
word_type_t type; word_type_t type;
} command_word_t; } command_word_t;
struct command_t { typedef struct {
enum speechpart part; enum speechpart part;
command_word_t word[2]; command_word_t word[2];
verb_t verb; verb_t verb;
obj_t obj; obj_t obj;
}; } command_t;
extern struct game_t game; extern struct game_t game;
extern struct settings_t settings; 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 speak(const char*, ...);
extern void sspeak(int msg, ...); extern void sspeak(int msg, ...);
extern void pspeak(vocab_t, enum speaktype, int, bool, ...); extern void pspeak(vocab_t, enum speaktype, int, bool, ...);
@ -224,7 +224,7 @@ extern int suspend(void);
extern int resume(void); extern int resume(void);
extern int restore(FILE *); extern int restore(FILE *);
extern long initialise(void); extern long initialise(void);
extern int action(struct command_t command); extern int action(command_t command);
extern void state_change(obj_t, int); extern void state_change(obj_t, int);

6
main.c
View file

@ -968,7 +968,7 @@ static void listobjects(void)
static bool do_command() static bool do_command()
/* Get and execute a 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). */ /* Can't leave cave once it's closing (except by main office). */
if (OUTSID(game.newloc) && game.newloc != 0 && game.closng) { if (OUTSID(game.newloc) && game.newloc != 0 && game.closng) {
@ -1051,8 +1051,8 @@ Lclearobj:
game.knfloc = 0; game.knfloc = 0;
/* Preserve state from last command for reuse when required */ /* Preserve state from last command for reuse when required */
struct command_t preserve; command_t preserve;
memcpy(&preserve, &command, sizeof(struct command_t)); memcpy(&preserve, &command, sizeof(command_t));
// Get command input from user // Get command input from user
if (!get_command_input(&command)) if (!get_command_input(&command))

6
misc.c
View file

@ -464,9 +464,9 @@ static void get_vocab_metadata(command_word_t* word)
return; 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 /* Bound prefix on the %s would be needed to prevent buffer
* overflow. but we shortstop this more simply by making each * overflow. but we shortstop this more simply by making each
@ -500,7 +500,7 @@ static void tokenize(char* raw, struct command_t *cmd)
get_vocab_metadata(&(cmd->word[1])); 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 */ /* Get user input on stdin, parse and map to command */
{ {
char inputbuf[LINESIZE]; char inputbuf[LINESIZE];