Reindentation

This commit is contained in:
NHOrus 2017-08-13 15:56:07 +01:00
parent f0dc3d3b7c
commit 0fbd79b608
4 changed files with 72 additions and 73 deletions

View file

@ -265,7 +265,7 @@ static int vbreak(verb_t verb, obj_t obj)
game.fixed[VASE] = IS_FIXED; game.fixed[VASE] = IS_FIXED;
break; break;
} }
/* FALLTHRU */ /* FALLTHRU */
default: default:
speak(actions[verb].message); speak(actions[verb].message);
} }
@ -592,7 +592,7 @@ static int eat(verb_t verb, obj_t obj)
case INTRANSITIVE: case INTRANSITIVE:
if (!HERE(FOOD)) if (!HERE(FOOD))
return GO_UNKNOWN; return GO_UNKNOWN;
/* FALLTHRU */ /* FALLTHRU */
case FOOD: case FOOD:
DESTROY(FOOD); DESTROY(FOOD);
rspeak(THANKS_DELICIOUS); rspeak(THANKS_DELICIOUS);
@ -1145,21 +1145,21 @@ 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 &&
(command.word[1].id == XYZZY || (command.word[1].id == XYZZY ||
command.word[1].id == PLUGH || command.word[1].id == PLUGH ||
command.word[1].id == PLOVER)) { command.word[1].id == PLOVER)) {
return GO_WORD2; return GO_WORD2;
} }
if (command.word[1].type == ACTION && command.word[1].id == PART) if (command.word[1].type == ACTION && command.word[1].id == PART)
return reservoir(); return reservoir();
if (command.word[1].type == ACTION && if (command.word[1].type == ACTION &&
(command.word[1].id == FEE || (command.word[1].id == FEE ||
command.word[1].id == FIE || command.word[1].id == FIE ||
command.word[1].id == FOE || command.word[1].id == FOE ||
command.word[1].id == FOO || command.word[1].id == FOO ||
command.word[1].id == FUM || command.word[1].id == FUM ||
command.word[1].id == PART)) { command.word[1].id == PART)) {
return bigwords(command.word[1].id); return bigwords(command.word[1].id);
} }
sspeak(OKEY_DOKEY, command.word[1].raw); sspeak(OKEY_DOKEY, command.word[1].raw);
@ -1316,14 +1316,14 @@ int action(command_t command)
* unless verb is "say", which snarfs arbitrary second word. * unless verb is "say", which snarfs arbitrary second word.
*/ */
{ {
/* Previously, actions that result in a message, but don't do anything /* Previously, actions that result in a message, but don't do anything
* further were called "specials". Now they're handled here as normal * further were called "specials". Now they're handled here as normal
* actions. If noaction is true, then we spit out the message and return */ * actions. If noaction is true, then we spit out the message and return */
if (actions[command.verb].noaction) { if (actions[command.verb].noaction) {
speak(actions[command.verb].message); speak(actions[command.verb].message);
return GO_CLEAROBJ; return GO_CLEAROBJ;
} }
if (command.part == unknown) { if (command.part == unknown) {
/* Analyse an object word. See if the thing is here, whether /* Analyse an object word. See if the thing is here, whether
* we've got a verb yet, and so on. Object must be here * we've got a verb yet, and so on. Object must be here
@ -1369,9 +1369,9 @@ int action(command_t command)
if (command.word[1].raw[0] != '\0' && command.verb != SAY) if (command.word[1].raw[0] != '\0' && command.verb != SAY)
return GO_WORD2; return GO_WORD2;
if (command.verb == SAY) if (command.verb == SAY)
/* KEYS is not special, anything not NO_OBJECT or INTRANSITIVE /* KEYS is not special, anything not NO_OBJECT or INTRANSITIVE
* will do here. We're preventing interpretation as an intransitive * will do here. We're preventing interpretation as an intransitive
* verb when the word is unknown. */ * verb when the word is unknown. */
command.obj = command.word[1].raw[0] != '\0' ? KEYS : NO_OBJECT; command.obj = command.word[1].raw[0] != '\0' ? KEYS : NO_OBJECT;
if (command.obj == NO_OBJECT || if (command.obj == NO_OBJECT ||
command.obj == INTRANSITIVE) { command.obj == INTRANSITIVE) {
@ -1508,7 +1508,7 @@ int action(command_t command)
case RUB: case RUB:
return rub(command.verb, command.obj); return rub(command.verb, command.obj);
case THROW: case THROW:
return throw(command); return throw (command);
case QUIT: { case QUIT: {
speak(actions[command.verb].message); speak(actions[command.verb].message);
return GO_CLEAROBJ; return GO_CLEAROBJ;
@ -1560,11 +1560,11 @@ int action(command_t command)
speak(actions[command.verb].message); speak(actions[command.verb].message);
return GO_CLEAROBJ; return GO_CLEAROBJ;
} }
// LCOV_EXCL_START // LCOV_EXCL_START
// This case should never happen - here only as placeholder // This case should never happen - here only as placeholder
case PART: case PART:
return reservoir(); return reservoir();
// LCOV_EXCL_STOP // LCOV_EXCL_STOP
case SEED: case SEED:
return seed(command.verb, command.word[1].raw); return seed(command.verb, command.word[1].raw);
case WASTE: case WASTE:

View file

@ -134,7 +134,7 @@ struct game_t {
long dflag; long dflag;
long dkill; // dwarves killed long dkill; // dwarves killed
long dtotal; // total dwarves (including pirate) long dtotal; // total dwarves (including pirate) in loc
long foobar; // progress in saying "FEE FIE FOE FOO". long foobar; // progress in saying "FEE FIE FOE FOO".
long holdng; // number of objects being carried long holdng; // number of objects being carried
long igo; // # uses of "go" instead of a direction long igo; // # uses of "go" instead of a direction
@ -147,7 +147,7 @@ struct game_t {
bool novice; // asked for instructions at start-up? bool novice; // asked for instructions at start-up?
turn_t numdie; // number of times killed so far turn_t numdie; // number of times killed so far
loc_t oldloc; // where player was loc_t oldloc; // where player was
loc_t oldlc2; // where player was two moves ago loc_t oldlc2; // where player was two moves ago
obj_t oldobj; // last object player handled obj_t oldobj; // last object player handled
bool panic; // has player found out he's trapped? bool panic; // has player found out he's trapped?
long saved; // point penalty for saves long saved; // point penalty for saves
@ -183,9 +183,9 @@ struct settings_t {
}; };
typedef struct { typedef struct {
char raw[LINESIZE]; char raw[LINESIZE];
vocab_t id; vocab_t id;
word_type_t type; word_type_t type;
} command_word_t; } command_word_t;
typedef struct { typedef struct {
@ -231,9 +231,9 @@ void bug(enum bugtype, const char *) __attribute__((__noreturn__));
/* represent an empty command word */ /* represent an empty command word */
static const command_word_t empty_command_word = { static const command_word_t empty_command_word = {
.raw = "", .raw = "",
.id = WORD_EMPTY, .id = WORD_EMPTY,
.type = NO_WORD_TYPE, .type = NO_WORD_TYPE,
}; };
/* end */ /* end */

76
main.c
View file

@ -1050,43 +1050,43 @@ Lclearobj:
if (game.knfloc > 0 && game.knfloc != game.loc) if (game.knfloc > 0 && game.knfloc != game.loc)
game.knfloc = 0; game.knfloc = 0;
/* Preserve state from last command for reuse when required */ /* Preserve state from last command for reuse when required */
command_t preserve = command; command_t preserve = command;
// Get command input from user // Get command input from user
if (!get_command_input(&command)) if (!get_command_input(&command))
return false; return false;
#ifdef GDEBUG #ifdef GDEBUG
/* Needs to stay synced with enum word_type_t */ /* Needs to stay synced with enum word_type_t */
const char *types[] = {"NO_WORD_TYPE", "MOTION", "OBJECT", "ACTION", "NUMERIC"}; const char *types[] = {"NO_WORD_TYPE", "MOTION", "OBJECT", "ACTION", "NUMERIC"};
/* needs to stay synced with enum speechpart */ /* needs to stay synced with enum speechpart */
const char *roles[] = {"unknown", "intransitive", "transitive"}; const char *roles[] = {"unknown", "intransitive", "transitive"};
printf("Preserve: role = %s type1 = %s, id1 = %ld, type2 = %s, id2 = %ld\n", printf("Preserve: role = %s type1 = %s, id1 = %ld, type2 = %s, id2 = %ld\n",
roles[preserve.part], roles[preserve.part],
types[preserve.word[0].type], types[preserve.word[0].type],
preserve.word[0].id, preserve.word[0].id,
types[preserve.word[1].type], types[preserve.word[1].type],
preserve.word[1].id); preserve.word[1].id);
printf("Command: role = %s type1 = %s, id1 = %ld, type2 = %s, id2 = %ld\n", printf("Command: role = %s type1 = %s, id1 = %ld, type2 = %s, id2 = %ld\n",
roles[command.part], roles[command.part],
types[command.word[0].type], types[command.word[0].type],
command.word[0].id, command.word[0].id,
types[command.word[1].type], types[command.word[1].type],
command.word[1].id); command.word[1].id);
#endif #endif
/* Handle of objectless action followed by actionless object */ /* Handle of objectless action followed by actionless object */
if (preserve.word[0].type == ACTION && preserve.word[1].type == NO_WORD_TYPE && command.word[1].id == 0) if (preserve.word[0].type == ACTION && preserve.word[1].type == NO_WORD_TYPE && command.word[1].id == 0)
command.verb = preserve.verb; command.verb = preserve.verb;
#ifdef BROKEN #ifdef BROKEN
/* Handling of actionless object followed by objectless action */ /* Handling of actionless object followed by objectless action */
if (preserve.type1 == OBJECT && preserve.type2 == NO_WORD_TYPE && command.id2 == 0) if (preserve.type1 == OBJECT && preserve.type2 == NO_WORD_TYPE && command.id2 == 0)
command.obj = preserve.obj; command.obj = preserve.obj;
#endif #endif
++game.turns; ++game.turns;
if (closecheck()) { if (closecheck()) {
if (game.closed) if (game.closed)
@ -1122,8 +1122,8 @@ Lclearobj:
} }
if ((command.word[0].id == WATER || command.word[0].id == OIL) && (command.word[1].id == PLANT || command.word[1].id == DOOR)) { if ((command.word[0].id == WATER || command.word[0].id == OIL) && (command.word[1].id == PLANT || command.word[1].id == DOOR)) {
if (AT(command.word[1].id)) { if (AT(command.word[1].id)) {
command.word[1] = command.word[0]; command.word[1] = command.word[0];
command.word[0].id = POUR; command.word[0].id = POUR;
command.word[0].type = ACTION; command.word[0].type = ACTION;
strncpy(command.word[0].raw, "pour", LINESIZE - 1); strncpy(command.word[0].raw, "pour", LINESIZE - 1);
} }
@ -1133,12 +1133,12 @@ Lclearobj:
command.word[0].type = ACTION; command.word[0].type = ACTION;
} }
/* From OV to VO form */ /* From OV to VO form */
if (command.word[0].type==OBJECT && command.word[1].type==ACTION) { if (command.word[0].type == OBJECT && command.word[1].type == ACTION) {
command_word_t stage = command.word[0]; command_word_t stage = command.word[0];
command.word[0] = command.word[1]; command.word[0] = command.word[1];
command.word[1] = stage; command.word[1] = stage;
} }
} }
Lookup: Lookup:
@ -1165,7 +1165,7 @@ Lookup:
command.obj = command.word[0].id; command.obj = command.word[0].id;
break; break;
case ACTION: case ACTION:
if(command.word[1].type == NUMERIC) if (command.word[1].type == NUMERIC)
command.part = transitive; command.part = transitive;
else else
command.part = intransitive; command.part = intransitive;
@ -1186,11 +1186,11 @@ Lookup:
continue; /* back to top of main interpreter loop */ continue; /* back to top of main interpreter loop */
case GO_WORD2: case GO_WORD2:
#ifdef GDEBUG #ifdef GDEBUG
printf("Word shift\n"); printf("Word shift\n");
#endif /* GDEBUG */ #endif /* GDEBUG */
/* Get second word for analysis. */ /* Get second word for analysis. */
command.word[0] = command.word[1]; command.word[0] = command.word[1];
command.word[1] = empty_command_word; command.word[1] = empty_command_word;
goto Lookup; goto Lookup;
case GO_UNKNOWN: case GO_UNKNOWN:
/* Random intransitive verbs come here. Clear obj just in case /* Random intransitive verbs come here. Clear obj just in case

9
misc.c
View file

@ -388,22 +388,21 @@ static int get_action_vocab_id(const char* word)
return (WORD_NOT_FOUND); return (WORD_NOT_FOUND);
} }
static bool is_valid_int(const char *str) static bool is_valid_int(const char *str)
/* Returns true if the string passed in is represents a valid integer, /* Returns true if the string passed in is represents a valid integer,
* that could then be parsed by atoi() */ * that could then be parsed by atoi() */
{ {
// Handle negative number // Handle negative number
if (*str == '-') if (*str == '-')
++str; ++str;
// Handle empty string or just "-". Should never reach this // Handle empty string or just "-". Should never reach this
// point, because this is only used with transitive verbs. // point, because this is only used with transitive verbs.
if (!*str) if (!*str)
return false; // LCOV_EXCL_LINE return false; // LCOV_EXCL_LINE
// Check for non-digit chars in the rest of the stirng. // Check for non-digit chars in the rest of the stirng.
while (*str) while (*str) {
{
if (!isdigit(*str)) if (!isdigit(*str))
return false; return false;
else else