Abolish SPEAK().
This commit is contained in:
parent
8a18f2f19f
commit
a2e0c55fb4
2 changed files with 0 additions and 104 deletions
1
advent.h
1
advent.h
|
@ -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
103
misc.c
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue