X-Git-Url: https://jxself.org/git/?p=open-adventure.git;a=blobdiff_plain;f=misc.c;h=b1c50d18ee76e6b4425fff5fd6943f0159cfdfef;hp=5eb1fa2f3d074ad3734e205723b836cb8ef8c789;hb=7740b163c86d1e16339c1f7952f9511f951dd5d3;hpb=0d0b8df0a3f6dc7b765c35fa7cc2d2fe52406d87 diff --git a/misc.c b/misc.c index 5eb1fa2..b1c50d1 100644 --- a/misc.c +++ b/misc.c @@ -60,7 +60,8 @@ void packed_to_token(long packed, char token[6]) // Replace trailing whitespace with \0. for (int i = 4; i >= 0; --i) { - if (token[i] == ' ' || token[i] == '\t') + if (token[i] == ' ' || + token[i] == '\t') token[i] = '\0'; else break; @@ -155,7 +156,7 @@ void wordclear(token_t *v) /* I/O routines (speak, pspeak, rspeak, get_input, yes) */ -void vspeak(const char* msg, va_list ap) +void vspeak(const char* msg, bool blank, va_list ap) { // Do nothing if we got a null pointer. if (msg == NULL) @@ -165,8 +166,7 @@ void vspeak(const char* msg, va_list ap) if (strlen(msg) == 0) return; - // Print a newline if the global game.blklin says to. - if (game.blklin == true) + if (blank == true) printf("\n"); int msglen = strlen(msg); @@ -187,7 +187,7 @@ void vspeak(const char* msg, va_list ap) } else { long arg = va_arg(ap, long); if (arg == -1) - arg = 0; + arg = 0; // LCOV_EXCL_LINE - don't think we can get here. i++; // Integer specifier. In order to accommodate the fact // that PARMS can have both legitimate integers *and* @@ -226,7 +226,8 @@ void vspeak(const char* msg, va_list ap) } // All-lowercase specifier. - if (msg[i] == 'L' || msg[i] == 'C') { + if (msg[i] == 'L' || + msg[i] == 'C') { packed_to_token(arg, renderp); /* unpack directly to destination */ int len = strlen(renderp); for (int j = 0; j < len; ++j) { @@ -253,11 +254,11 @@ void speak(const char* msg, ...) { va_list ap; va_start(ap, msg); - vspeak(msg, ap); + vspeak(msg, true, ap); va_end(ap); } -void pspeak(vocab_t msg, enum speaktype mode, int skip, ...) +void pspeak(vocab_t msg, enum speaktype mode, int skip, bool blank, ...) /* Find the skip+1st message from msg and print it. Modes are: * feel = for inventory, what you can touch * look = the long description for the state the object is in @@ -265,22 +266,22 @@ void pspeak(vocab_t msg, enum speaktype mode, int skip, ...) * study = text on the object. */ { va_list ap; - va_start(ap, skip); + va_start(ap, blank); switch (mode) { case touch: - vspeak(objects[msg].inventory, ap); + vspeak(objects[msg].inventory, blank, ap); break; case look: - vspeak(objects[msg].descriptions[skip], ap); + vspeak(objects[msg].descriptions[skip], blank, ap); break; case hear: - vspeak(objects[msg].sounds[skip], ap); + vspeak(objects[msg].sounds[skip], blank, ap); break; case study: - vspeak(objects[msg].texts[skip], ap); + vspeak(objects[msg].texts[skip], blank, ap); break; case change: - vspeak(objects[msg].changes[skip], ap); + vspeak(objects[msg].changes[skip], blank, ap); break; } va_end(ap); @@ -291,11 +292,11 @@ void rspeak(vocab_t i, ...) { va_list ap; va_start(ap, i); - vspeak(arbitrary_messages[i], ap); + vspeak(arbitrary_messages[i], true, ap); va_end(ap); } -void echo_input(FILE* destination, char* input_prompt, char* input) +void echo_input(FILE* destination, const char* input_prompt, const char* input) { size_t len = strlen(input_prompt) + strlen(input) + 1; char* prompt_and_input = (char*) xmalloc(len); @@ -325,12 +326,11 @@ char* get_input() { // Set up the prompt char input_prompt[] = "> "; - if (!prompt) + if (!settings.prompt) input_prompt[0] = '\0'; - // Print a blank line if game.blklin tells us to. - if (game.blklin == true) - printf("\n"); + // Print a blank line + printf("\n"); char* input; while (true) { @@ -353,8 +353,8 @@ char* get_input() if (!isatty(0)) echo_input(stdout, input_prompt, input); - if (logfp) - echo_input(logfp, input_prompt, input); + if (settings.logfp) + echo_input(settings.logfp, "", input); return (input); } @@ -389,10 +389,12 @@ bool silent_yes() free(firstword); - if (yes == 0 || y == 0) { + if (yes == 0 || + y == 0) { outcome = true; break; - } else if (no == 0 || n == 0) { + } else if (no == 0 || + n == 0) { outcome = false; break; } else @@ -436,11 +438,13 @@ bool yes(const char* question, const char* yes_response, const char* no_response free(firstword); - if (yes == 0 || y == 0) { + if (yes == 0 || + y == 0) { speak(yes_response); outcome = true; break; - } else if (no == 0 || n == 0) { + } else if (no == 0 || + n == 0) { speak(no_response); outcome = false; break; @@ -459,7 +463,9 @@ int get_motion_vocab_id(const char* word) { for (int i = 0; i < NMOTIONS; ++i) { for (int j = 0; j < motions[i].words.n; ++j) { - if (strcasecmp(word, motions[i].words.strs[j]) == 0 && (strlen(word) > 1 || strchr(ignore, word[0]) == NULL || !oldstyle)) + if (strcasecmp(word, motions[i].words.strs[j]) == 0 && (strlen(word) > 1 || + strchr(ignore, word[0]) == NULL || + !settings.oldstyle)) return (i); } } @@ -485,7 +491,9 @@ int get_action_vocab_id(const char* word) { for (int i = 0; i < NACTIONS; ++i) { for (int j = 0; j < actions[i].words.n; ++j) { - if (strcasecmp(word, actions[i].words.strs[j]) == 0 && (strlen(word) > 1 || strchr(ignore, word[0]) == NULL || !oldstyle)) + if (strcasecmp(word, actions[i].words.strs[j]) == 0 && (strlen(word) > 1 || + strchr(ignore, word[0]) == NULL || + !settings.oldstyle)) return (i); } } @@ -633,8 +641,8 @@ long atdwrf(long where) return (at); } -/* Utility routines (SETBIT, TSTBIT, set_seed, get_next_lcg_value, - * randrange, RNDVOC) */ +/* Utility routines (setbit, tstbit, set_seed, get_next_lcg_value, + * randrange) */ long setbit(long bit) /* Returns 2**bit for use in constructing bit-masks. */ @@ -652,6 +660,9 @@ void set_seed(long seedval) /* Set the LCG seed */ { game.lcg_x = (unsigned long) seedval % game.lcg_m; + + // once seed is set, we need to generate the Z`ZZZ word + make_zzword(game.zzword); } unsigned long get_next_lcg_value(void) @@ -677,14 +688,6 @@ void make_zzword(char zzword[6]) zzword[5] = '\0'; } -void datime(long* d, long* t) -{ - struct timeval tv; - gettimeofday(&tv, NULL); - *d = (long) tv.tv_sec; - *t = (long) tv.tv_usec; -} - // LCOV_EXCL_START void bug(enum bugtype num, const char *error_string) {