Abolish SPEAK().

This commit is contained in:
Jason S. Ninneman 2017-06-11 14:41:26 -07:00
parent 8a18f2f19f
commit a2e0c55fb4
2 changed files with 0 additions and 104 deletions

View file

@ -89,7 +89,6 @@ extern lcg_state lcgstate;
extern void* xmalloc(size_t);
extern void packed_to_token(long, char token[6]);
extern void newspeak(char*);
extern void SPEAK(vocab_t);
extern void PSPEAK(vocab_t,int);
extern void RSPEAK(vocab_t);
extern void SETPRM(long,long,long);

103
misc.c
View file

@ -124,109 +124,6 @@ void newspeak(char* msg)
free(copy);
}
void SPEAK(vocab_t msg)
/* Print the message which starts at LINES[N]. Precede it with a blank line
* unless game.blklin is false. */
{
long blank, casemake, i, nxt, neg, nparms, param, prmtyp, state;
if (msg == 0)
return;
blank=game.blklin;
nparms=1;
do {
nxt=labs(LINES[msg])-1;
++msg;
LNLENG=0;
LNPOSN=1;
state=0;
for (i = msg; i <= nxt; i++) {
PUTTXT(LINES[i],&state,2);
}
LNPOSN=0;
++LNPOSN;
while (LNPOSN <= LNLENG) {
if (INLINE[LNPOSN] != ascii_to_advent['%']) {
++LNPOSN;
continue;
}
prmtyp = INLINE[LNPOSN+1];
/* A "%"; the next character determine the type of
* parameter: 1 (!) = suppress message completely, 29 (S) = NULL
* If PARAM=1, else 'S' (optional plural ending), 33 (W) = word
* (two 30-bit values) with trailing spaces suppressed, 22 (L) or
* 31 (U) = word but map to lower/upper case, 13 (C) = word in
* lower case with first letter capitalised, 65-73 (1-9) =
* number using that many characters. */
if (prmtyp == ascii_to_advent['!'])
return;
if (prmtyp == ascii_to_advent['S']) {
SHFTXT(LNPOSN+2,-1);
INLINE[LNPOSN] = ascii_to_advent['s'];
if (PARMS[nparms] == 1)
SHFTXT(LNPOSN+1,-1);
++nparms;
continue;
}
if (prmtyp == ascii_to_advent['W'] || prmtyp == ascii_to_advent['L'] || prmtyp == ascii_to_advent['U'] || prmtyp == ascii_to_advent['C']) {
SHFTXT(LNPOSN+2,-2);
state = 0;
casemake = -1;
if (prmtyp == ascii_to_advent['U'])
casemake=1;
if (prmtyp == ascii_to_advent['W'])
casemake=0;
i = LNPOSN;
PUTTXT(PARMS[nparms],&state,casemake);
PUTTXT(PARMS[nparms+1],&state,casemake);
if (prmtyp == ascii_to_advent['C'] && INLINE[i] >= ascii_to_advent['a'] && INLINE[i] <= ascii_to_advent['z'])
{
// Convert to uppercase.
// Round-trip to ASCII and back so that this code doesn't break when the mapping changes.
// This can be simplified when mapping goes away.
char this = advent_to_ascii[INLINE[i]];
char uc_this = toupper(this);
INLINE[i] = ascii_to_advent[uc_this];
}
nparms += 2;
continue;
}
prmtyp=prmtyp-64;
if (prmtyp < ascii_to_advent['!'] || prmtyp > ascii_to_advent['-']) {
++LNPOSN;
continue;
}
SHFTXT(LNPOSN+2,prmtyp-2);
LNPOSN += prmtyp;
param=labs(PARMS[nparms]);
neg=0;
if (PARMS[nparms] < 0)
neg=9;
for (i=1; i <= prmtyp; i++) {
--LNPOSN;
INLINE[LNPOSN]=MOD(param,10)+64;
if (i != 1 && param == 0) {
INLINE[LNPOSN]=neg;
neg=0;
}
param=param/10;
}
LNPOSN += prmtyp;
++nparms;
continue;
}
if (blank)
TYPE0();
blank=false;
TYPE();
msg = nxt + 1;
} while
(LINES[msg] >= 0);
}
void PSPEAK(vocab_t msg,int skip)
/* Find the skip+1st message from msg and print it. msg should be
* the index of the inventory message for object. (INVEN+N+1 message