K successfully localized.

This commit is contained in:
Eric S. Raymond 2017-06-12 06:47:10 -04:00
parent 95f1548a10
commit 696779d337
2 changed files with 13 additions and 15 deletions

4
TODO
View file

@ -3,9 +3,9 @@
The FORTRANish mess that once was is now mostly idiomatic C. Some issues
remain to be cleaned up:
* The remaining shared globals: K, WD1, WD1X, WD2, WD2X. These are used
* The remaining shared globals: WD1, WD1X, WD2, WD2X. These are used
rather promiscuously to pass around information that ought to be function
arguments in a modern language. K is a particular offender.
arguments in a modern language.
* Remaining unstructured gotos in playermove() and do_command(). The goto L12
in playermove() is particularly horrible, jumping backwards into the

24
main.c
View file

@ -41,8 +41,6 @@ long AMBER, AXE, BACK, BATTER, BEAR, BIRD, BLOOD,
URN, VASE, VEND, VOLCAN, WATER;
long WD1, WD1X, WD2, WD2X;
static int K; /* information leak, should go away */
FILE *logfp;
bool oldstyle = false;
lcg_state lcgstate;
@ -676,7 +674,7 @@ static bool playermove(FILE *cmdin, token_t verb, int motion)
static bool do_command(FILE *cmdin)
{
long KQ, VERB, KK, V1, V2;
long i;
long i, k, KMOD;
static long igo = 0;
static long obj = 0;
enum speechpart part;
@ -729,7 +727,7 @@ L2000: if (game.loc == 0)
}
if (TOTING(BEAR))RSPEAK(141);
newspeak(msg);
K=1;
KMOD=1;
if (FORCED(game.loc)) {
goto L8;
}
@ -970,12 +968,12 @@ L2607: game.foobar=(game.foobar>0 ? -game.foobar : 0);
RSPEAK(spk);
}
}
L19999: K=43;
if (LIQLOC(game.loc) == WATER)K=70;
L19999: k=43;
if (LIQLOC(game.loc) == WATER)k=70;
V1=VOCAB(WD1,-1);
V2=VOCAB(WD2,-1);
if (V1 == ENTER && (V2 == STREAM || V2 == 1000+WATER)) {
RSPEAK(K);
RSPEAK(k);
goto L2012;
}
if (V1 == ENTER && WD2 > 0) {
@ -1010,26 +1008,26 @@ L2630:
RSPEAK(254);
goto L2600;
}
K=MOD(i,1000);
KMOD=MOD(i,1000);
KQ=i/1000+1;
switch (KQ-1)
{
case 0: goto L8;
case 1: goto L5000;
case 2: goto L4000;
case 3: RSPEAK(K); goto L2012;
case 3: RSPEAK(KMOD); goto L2012;
}
BUG(22);
/* Verb and object analysis moved to separate module. */
L4000: part=intransitive; VERB=K; goto Laction;
L4000: part=intransitive; VERB = KMOD; goto Laction;
L4090: part=transitive; goto Laction;
L5000: part=unknown; obj = K;
L5000: part=unknown; obj = KMOD;
Laction:
switch (action(cmdin, part, VERB, obj)) {
case 2: return true;
case 8: K=NUL; goto L8;
case 8: KMOD=NUL; goto L8;
case 2000: goto L2000;
case 2012: goto L2012;
case 2600: goto L2600;
@ -1057,7 +1055,7 @@ Laction:
BUG(99);
/* Figure out the new location */
L8: if (playermove(cmdin, VERB, K))
L8: if (playermove(cmdin, VERB, KMOD))
return true;
else
goto L2000;