Typedefify command_t; simplify code accordingly.
This commit is contained in:
parent
5c30d6429f
commit
24d102781c
4 changed files with 15 additions and 15 deletions
10
actions.c
10
actions.c
|
@ -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.
|
||||||
*/
|
*/
|
||||||
|
|
8
advent.h
8
advent.h
|
@ -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
6
main.c
|
@ -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
6
misc.c
|
@ -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];
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue