projects
/
open-adventure.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
07e7b81
)
Begin replacing tests on strings with tests on vocab IDs.
204/head
author
Jason S. Ninneman
<jsn@mbar.us>
Tue, 4 Jul 2017 01:21:25 +0000
(18:21 -0700)
committer
Jason S. Ninneman
<jsn@mbar.us>
Tue, 4 Jul 2017 01:21:25 +0000
(18:21 -0700)
advent.h
patch
|
blob
|
history
main.c
patch
|
blob
|
history
diff --git
a/advent.h
b/advent.h
index 72af32f58592371f62727ad96584e7fea9d307f9..5cd7e9ae464f691ad5c19161e8171c6f180ba379 100644
(file)
--- a/
advent.h
+++ b/
advent.h
@@
-184,6
+184,8
@@
struct command_t {
vocab_t obj;
token_t wd1;
token_t wd2;
vocab_t obj;
token_t wd1;
token_t wd2;
+ long id1;
+ long id2;
char raw1[BUFSIZ], raw2[BUFSIZ];
};
char raw1[BUFSIZ], raw2[BUFSIZ];
};
diff --git
a/main.c
b/main.c
index 7cf987aa551faa2b085baab57ab6deeb0ec11df9..2790696de2ca7f7e5af4ce43d0c1d32f3a5c6910 100644
(file)
--- a/
main.c
+++ b/
main.c
@@
-946,7
+946,6
@@
static void listobjects(void)
static bool do_command()
/* Get and execute a command */
{
static bool do_command()
/* Get and execute a command */
{
- long V1, V2;
long kmod, defn;
static long igo = 0;
static struct command_t command;
long kmod, defn;
static long igo = 0;
static struct command_t command;
@@
-1057,6
+1056,13
@@
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);
+
/* Every input, check "game.foobar" flag. If zero, nothing's
* going on. If pos, make neg. If neg, he skipped a word,
* so make it zero. */
/* Every input, check "game.foobar" flag. If zero, nothing's
* going on. If pos, make neg. If neg, he skipped a word,
* so make it zero. */
@@
-1073,7
+1079,7
@@
L2607:
}
}
}
}
- if (command.verb == SAY && command.
wd2 > 0
)
+ if (command.verb == SAY && command.
id2 != WORD_NOT_FOUND && command.id2 != WORD_EMPTY
)
command.verb = 0;
if (command.verb == SAY) {
command.part = transitive;
command.verb = 0;
if (command.verb == SAY) {
command.part = transitive;
@@
-1085,14
+1091,8
@@
L2607:
} else
lampcheck();
} else
lampcheck();
- char word1[TOKLEN+1];
- char word2[TOKLEN+1];
- packed_to_token(command.wd1, word1);
- packed_to_token(command.wd2, word2);
- V1 = get_vocab_id(word1);
- V2 = get_vocab_id(word2);
- if (V1 == ENTER && (V2 == STREAM ||
- V2 == PROMOTE_WORD(WATER))) {
+ if (command.id1 == ENTER && (command.id2 == STREAM ||
+ command.id2 == PROMOTE_WORD(WATER))) {
if (LIQLOC(game.loc) == WATER) {
rspeak(FEET_WET);
} else {
if (LIQLOC(game.loc) == WATER) {
rspeak(FEET_WET);
} else {
@@
-1100,17
+1100,19
@@
L2607:
}
goto L2012;
}
}
goto L2012;
}
- if (V1 == ENTER && command.wd2 > 0) {
- command.wd1 = command.wd2;
- wordclear(&command.wd2);
+ if (command.id1 == ENTER && command.id2 != WORD_NOT_FOUND && command.id2 != WORD_EMPTY) {
+ /* command.wd1 = command.wd2; */
+ /* wordclear(&command.wd2); */
+ command.id1 = command.id2;
+ command.id2 = WORD_EMPTY;
} else {
/* FIXME: Magic numbers related to vocabulary */
} else {
/* FIXME: Magic numbers related to vocabulary */
- if (!((
V1 != PROMOTE_WORD(WATER) && V
1 != PROMOTE_WORD(OIL)) ||
- (
V2 != PROMOTE_WORD(PLANT) && V
2 != PROMOTE_WORD(DOOR)))) {
- if (AT(DEMOTE_WORD(
V
2)))
+ if (!((
command.id1 != PROMOTE_WORD(WATER) && command.id
1 != PROMOTE_WORD(OIL)) ||
+ (
command.id2 != PROMOTE_WORD(PLANT) && command.id
2 != PROMOTE_WORD(DOOR)))) {
+ if (AT(DEMOTE_WORD(
command.id
2)))
command.wd2 = token_to_packed("POUR");
}
command.wd2 = token_to_packed("POUR");
}
- if (
V1 == PROMOTE_WORD(CAGE) && V
2 == PROMOTE_WORD(BIRD) && HERE(CAGE) && HERE(BIRD))
+ if (
command.id1 == PROMOTE_WORD(CAGE) && command.id
2 == PROMOTE_WORD(BIRD) && HERE(CAGE) && HERE(BIRD))
command.wd1 = token_to_packed("CATCH");
}
L2620:
command.wd1 = token_to_packed("CATCH");
}
L2620:
@@
-1126,7
+1128,7
@@
L2620:
Lookup:
packed_to_token(command.wd1, word1);
defn = get_vocab_id(word1);
Lookup:
packed_to_token(command.wd1, word1);
defn = get_vocab_id(word1);
- if (defn ==
-1
) {
+ if (defn ==
WORD_NOT_FOUND
) {
/* Gee, I don't understand. */
if (fallback_handler(inputbuf))
continue;
/* Gee, I don't understand. */
if (fallback_handler(inputbuf))
continue;