projects
/
open-adventure.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
linearized drink
[open-adventure.git]
/
main.c
diff --git
a/main.c
b/main.c
index 4f46c0ac8a81dc3c9f6ffda2269b1f5a963efde9..2790696de2ca7f7e5af4ce43d0c1d32f3a5c6910 100644
(file)
--- a/
main.c
+++ b/
main.c
@@
-20,6
+20,7
@@
#include <getopt.h>
#include <signal.h>
#include <string.h>
#include <getopt.h>
#include <signal.h>
#include <string.h>
+#include <ctype.h>
#include "advent.h"
#include "dungeon.h"
#include "advent.h"
#include "dungeon.h"
@@
-945,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;
@@
-1054,12
+1054,14
@@
L2600:
strncpy(inputbuf, input, LINESIZE - 1);
free(input);
strncpy(inputbuf, input, LINESIZE - 1);
free(input);
- long tokens[4];
- tokenize(inputbuf, tokens);
- command.wd1 = tokens[0];
- command.wd1x = tokens[1];
- command.wd2 = tokens[2];
- command.wd2x = tokens[3];
+ 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,
/* Every input, check "game.foobar" flag. If zero, nothing's
* going on. If pos, make neg. If neg, he skipped a word,
@@
-1077,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;
@@
-1089,14
+1091,8
@@
L2607:
} else
lampcheck();
} else
lampcheck();
- char word1[6];
- char word2[6];
- 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 {
@@
-1104,18
+1100,19
@@
L2607:
}
goto L2012;
}
}
goto L2012;
}
- if (V1 == ENTER && command.wd2 > 0) {
- command.wd1 = command.wd2;
- command.wd1x = command.wd2x;
- 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:
@@
-1131,11
+1128,11
@@
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;
-
rspeak(DONT_KNOW, command.wd1, command.wd1x
);
+
sspeak(DONT_KNOW, command.raw1
);
goto L2600;
}
/* FIXME: magic numbers related to vocabulary */
goto L2600;
}
/* FIXME: magic numbers related to vocabulary */
@@
-1179,13
+1176,15
@@
Laction:
case GO_WORD2:
/* Get second word for analysis. */
command.wd1 = command.wd2;
case GO_WORD2:
/* Get second word for analysis. */
command.wd1 = command.wd2;
-
command.wd1x = command.wd2x
;
+
strcpy(command.raw1, command.raw2)
;
wordclear(&command.wd2);
wordclear(&command.wd2);
+ command.raw2[0] = '\0';
goto L2620;
case GO_UNKNOWN:
/* Random intransitive verbs come here. Clear obj just in case
* (see attack()). */
goto L2620;
case GO_UNKNOWN:
/* Random intransitive verbs come here. Clear obj just in case
* (see attack()). */
- rspeak(DO_WHAT, command.wd1, command.wd1x);
+ command.raw1[0] = toupper(command.raw1[0]);
+ sspeak(DO_WHAT, command.raw1);
command.obj = 0;
goto L2600;
case GO_DWARFWAKE:
command.obj = 0;
goto L2600;
case GO_DWARFWAKE: