projects
/
open-adventure.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Refactored dungeon generator.
[open-adventure.git]
/
misc.c
diff --git
a/misc.c
b/misc.c
index ba834fdffd44b84cef98268a2e2cbadc8dea63b2..09244625cfe0c536bb866fcf17eccf21356d5e48 100644
(file)
--- a/
misc.c
+++ b/
misc.c
@@
-50,6
+50,18
@@
void packed_to_token(long packed, char token[6])
}
}
}
}
+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)
/* Hide the fact that wods are corrently packed longs */
bool wordeq(token_t a, token_t b)
@@
-245,8
+257,8
@@
char* get_input()
IGNORE(getline(&input, &n, stdin));
}
IGNORE(getline(&input, &n, stdin));
}
- if (input == NULL) // Got EOF;
qu
it.
-
exit(EXIT_SUCCESS
);
+ if (input == NULL) // Got EOF;
return with
it.
+
return(input
);
else if (input[0] == '#') // Ignore comments.
continue;
else // We have a 'normal' line; leave the loop.
else if (input[0] == '#') // Ignore comments.
continue;
else // We have a 'normal' line; leave the loop.
@@
-278,8
+290,12
@@
bool YES(const char* question, const char* yes_response, const char* no_response
speak(question);
reply = get_input();
speak(question);
reply = get_input();
+ if (reply == NULL) {
+ linenoiseFree(reply);
+ exit(EXIT_SUCCESS);
+ }
- char* firstword = (char*) xmalloc(strlen(reply));
+ char* firstword = (char*) xmalloc(strlen(reply)
+1
);
sscanf(reply, "%s", firstword);
for (int i = 0; i < (int)strlen(firstword); ++i)
sscanf(reply, "%s", firstword);
for (int i = 0; i < (int)strlen(firstword); ++i)
@@
-651,10
+667,10
@@
bool MAPLIN(FILE *fp)
* If the data file uses a character other than space (e.g., tab) to
* separate numbers, that character should also translate to 0.
*
* If the data file uses a character other than space (e.g., tab) to
* separate numbers, that character should also translate to 0.
*
- * This procedure may use the map1,map2 arrays to maintain
static data for
- *
the mapping. MAP2(1) is set to 0 when the program starts
- *
and is not changed thereafter unless the routines on this page choos
e
- * to do so. */
+ * This procedure may use the map1,map2 arrays to maintain
+ *
static data for he mapping. MAP2(1) is set to 0 when the
+ *
program starts and is not changed thereafter unless th
e
+ *
routines in this module choose
to do so. */
LNLENG = 0;
for (long i = 1; i <= (long)sizeof(INLINE) && INLINE[i] != 0; i++) {
long val = INLINE[i];
LNLENG = 0;
for (long i = 1; i <= (long)sizeof(INLINE) && INLINE[i] != 0; i++) {
long val = INLINE[i];