}
}
+void token_to_packed(char token[6], long* packed)
+{
+ *packed = 0;
+ for (size_t i = 0; i < 5; ++i)
+ {
+ if (token[4 - i] == '\0')
+ continue;
+ char mapped = ascii_to_advent[(int) token[4 - i]];
+ *packed |= (mapped << (6 * i));
+ }
+}
+
+/* Hide the fact that wods are corrently packed longs */
+
+bool wordeq(token_t a, token_t b)
+{
+ return a == b;
+}
+
+bool wordempty(token_t a)
+{
+ return a == 0;
+}
+
+void wordclear(token_t *v)
+{
+ *v = 0;
+}
+
/* I/O routines (SPEAK, PSPEAK, RSPEAK, SETPRM, GETIN, YES) */
void speak(const char* msg)
return (input);
}
-bool YES(vocab_t question, vocab_t yes_response, vocab_t no_response)
+bool YES(const char* question, const char* yes_response, const char* no_response)
/* Print message X, wait for yes/no answer. If yes, print Y and return true;
* if no, print Z and return false. */
{
bool outcome;
for (;;) {
- RSPEAK(question);
+ speak(question);
reply = get_input();
free(firstword);
if (yes == 0 || y == 0) {
- RSPEAK(yes_response);
+ speak(yes_response);
outcome = true;
break;
} else if (no == 0 || n == 0) {
- RSPEAK(no_response);
+ speak(no_response);
outcome = false;
break;
} else
from = game.fixed[object - NOBJECTS];
else
from = game.place[object];
- if (from != NOWHERE && from != CARRIED && !SPECIAL(from))
+ if (from != LOC_NOWHERE && from != CARRIED && !SPECIAL(from))
CARRY(object, from);
DROP(object, where);
}
void bug(enum bugtype num, const char *error_string)
{
- fprintf(stderr, "Fatal error %d, %s.\n", num, error_string);
- exit(EXIT_FAILURE);
+ fprintf(stderr, "Fatal error %d, %s.\n", num, error_string);
+ exit(EXIT_FAILURE);
}
/* end */