projects
/
open-adventure.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
21c3600
)
refactored fallback_handler() to use command_t, isolating from side effects
author
Aaron Traas
<aaron@traas.org>
Mon, 10 Jul 2017 20:09:18 +0000
(16:09 -0400)
committer
Aaron Traas
<aaron@traas.org>
Mon, 10 Jul 2017 20:09:18 +0000
(16:09 -0400)
main.c
patch
|
blob
|
history
diff --git
a/main.c
b/main.c
index dbdaef9c9d081d900c7f579bab267e38056fee08..e2fdadb60ba0a2219d51cd1030f3d686c18f4e80 100644
(file)
--- a/
main.c
+++ b/
main.c
@@
-134,10
+134,13
@@
int main(int argc, char *argv[])
terminate(quitgame);
}
terminate(quitgame);
}
-static bool fallback_handler(
char *buf
)
+static bool fallback_handler(
struct command_t command
)
/* fallback handler for commands not handled by FORTRANish parser */
{
long sv;
/* fallback handler for commands not handled by FORTRANish parser */
{
long sv;
+ char buf[LINESIZE];
+ sprintf(buf, "%s %s", command.raw1, command.raw2);
+
if (sscanf(buf, "seed %ld", &sv) == 1) {
set_seed(sv);
printf("Seed set to %ld\n", sv);
if (sscanf(buf, "seed %ld", &sv) == 1) {
set_seed(sv);
printf("Seed set to %ld\n", sv);
@@
-973,6
+976,10
@@
static bool do_command()
long kmod, defn;
static long igo = 0;
static struct command_t command;
long kmod, defn;
static long igo = 0;
static struct command_t command;
+ char inputbuf[LINESIZE];
+ char word1[TOKLEN + 1];
+ char word2[TOKLEN + 1];
+
command.verb = 0;
/* Can't leave cave once it's closing (except by main office). */
command.verb = 0;
/* Can't leave cave once it's closing (except by main office). */
@@
-1034,7
+1041,7
@@
static bool do_command()
listobjects();
listobjects();
-L
2012
:
+L
clearobj
:
game.oldobj = command.obj;
L2600:
game.oldobj = command.obj;
L2600:
@@
-1058,7
+1065,6
@@
L2600:
/* This is where we get a new command from the user */
char* input;
/* This is where we get a new command from the user */
char* input;
- char inputbuf[LINESIZE];
for (;;) {
input = get_input();
for (;;) {
input = get_input();
@@
-1079,13
+1085,12
@@
L2600:
tokenize(inputbuf, &command);
tokenize(inputbuf, &command);
- char word1[TOKLEN + 1];
- char word2[TOKLEN + 1];
packed_to_token(command.wd1, word1);
packed_to_token(command.wd2, word2);
command.id1 = get_vocab_id(word1);
command.id2 = get_vocab_id(word2);
packed_to_token(command.wd1, word1);
packed_to_token(command.wd2, word2);
command.id1 = get_vocab_id(word1);
command.id2 = get_vocab_id(word2);
-
+
+ //command = get_command_input();
L2607:
++game.turns;
L2607:
++game.turns;
@@
-1117,7
+1122,7
@@
L2607:
} else {
rspeak(WHERE_QUERY);
}
} else {
rspeak(WHERE_QUERY);
}
- goto L
2012
;
+ goto L
clearobj
;
}
if (command.id1 == ENTER && command.id2 != WORD_NOT_FOUND && command.id2 != WORD_EMPTY) {
/* command.wd1 = command.wd2; */
}
if (command.id1 == ENTER && command.id2 != WORD_NOT_FOUND && command.id2 != WORD_EMPTY) {
/* command.wd1 = command.wd2; */
@@
-1149,7
+1154,7
@@
Lookup:
defn = get_vocab_id(word1);
if (defn == WORD_NOT_FOUND) {
/* Gee, I don't understand. */
defn = get_vocab_id(word1);
if (defn == WORD_NOT_FOUND) {
/* Gee, I don't understand. */
- if (fallback_handler(
inputbuf
))
+ if (fallback_handler(
command
))
continue;
sspeak(DONT_KNOW, command.raw1);
goto L2600;
continue;
sspeak(DONT_KNOW, command.raw1);
goto L2600;
@@
-1170,7
+1175,7
@@
Lookup:
break;
case 3:
speak(specials[kmod].message);
break;
case 3:
speak(specials[kmod].message);
- goto L
2012
;
+ goto L
clearobj
;
default:
BUG(VOCABULARY_TYPE_N_OVER_1000_NOT_BETWEEN_0_AND_3); // LCOV_EXCL_LINE
}
default:
BUG(VOCABULARY_TYPE_N_OVER_1000_NOT_BETWEEN_0_AND_3); // LCOV_EXCL_LINE
}
@@
-1185,7
+1190,7
@@
Laction:
case GO_TOP:
continue; /* back to top of main interpreter loop */
case GO_CLEAROBJ:
case GO_TOP:
continue; /* back to top of main interpreter loop */
case GO_CLEAROBJ:
- goto L
2012
;
+ goto L
clearobj
;
case GO_CHECKHINT:
goto L2600;
case GO_CHECKFOO:
case GO_CHECKHINT:
goto L2600;
case GO_CHECKFOO: