Eliminate the global game.blklin.
This commit is contained in:
parent
8456b866ff
commit
6af38a92f6
5 changed files with 30 additions and 36 deletions
24
actions.c
24
actions.c
|
@ -8,7 +8,7 @@ static int fill(token_t, token_t);
|
|||
static void state_change(long obj, long state)
|
||||
{
|
||||
game.prop[obj] = state;
|
||||
pspeak(obj, change, state);
|
||||
pspeak(obj, change, state, true);
|
||||
}
|
||||
|
||||
static int attack(struct command_t *command)
|
||||
|
@ -200,7 +200,7 @@ static int bigwords(token_t foo)
|
|||
if (game.loc == objects[EGGS].plac)
|
||||
k = EGGS_HERE;
|
||||
move(EGGS, objects[EGGS].plac);
|
||||
pspeak(EGGS, look, k);
|
||||
pspeak(EGGS, look, k, true);
|
||||
return GO_CLEAROBJ;
|
||||
}
|
||||
}
|
||||
|
@ -453,7 +453,7 @@ static int discard(token_t verb, token_t obj, bool just_do_it)
|
|||
} else if (obj == COINS && HERE(VEND)) {
|
||||
DESTROY(COINS);
|
||||
drop(BATTERY, game.loc);
|
||||
pspeak(BATTERY, look, FRESH_BATTERIES);
|
||||
pspeak(BATTERY, look, FRESH_BATTERIES, true);
|
||||
return GO_CLEAROBJ;
|
||||
} else if (obj == BIRD && AT(DRAGON) && game.prop[DRAGON] == DRAGON_BARS) {
|
||||
rspeak(BIRD_BURNT);
|
||||
|
@ -473,7 +473,7 @@ static int discard(token_t verb, token_t obj, bool just_do_it)
|
|||
game.prop[VASE] = VASE_BROKEN;
|
||||
if (AT(PILLOW))
|
||||
game.prop[VASE] = VASE_WHOLE;
|
||||
pspeak(VASE, look, game.prop[VASE] + 1);
|
||||
pspeak(VASE, look, game.prop[VASE] + 1, true);
|
||||
if (game.prop[VASE] != VASE_WHOLE)
|
||||
game.fixed[VASE] = -1;
|
||||
}
|
||||
|
@ -560,7 +560,7 @@ static int extinguish(token_t verb, int obj)
|
|||
if (game.prop[URN] != URN_EMPTY) {
|
||||
state_change(URN, URN_DARK);
|
||||
} else {
|
||||
pspeak(URN, change, URN_DARK);
|
||||
pspeak(URN, change, URN_DARK, true);
|
||||
}
|
||||
|
||||
} else if (obj == LAMP) {
|
||||
|
@ -744,9 +744,7 @@ static int inven(void)
|
|||
continue;
|
||||
if (spk == NO_CARRY)
|
||||
rspeak(NOW_HOLDING);
|
||||
game.blklin = false;
|
||||
pspeak(i, touch, -1);
|
||||
game.blklin = true;
|
||||
pspeak(i, touch, -1, false);
|
||||
spk = NO_MESSAGE;
|
||||
}
|
||||
if (TOTING(BEAR))
|
||||
|
@ -809,7 +807,7 @@ static int listen(void)
|
|||
if (i == BIRD)
|
||||
mi += 3 * game.blooded;
|
||||
long packed_zzword = token_to_packed(game.zzword);
|
||||
pspeak(i, hear, mi, packed_zzword);
|
||||
pspeak(i, hear, mi, true, packed_zzword);
|
||||
spk = NO_MESSAGE;
|
||||
/* FIXME: Magic number, sensitive to bird state logic */
|
||||
if (i == BIRD && game.prop[i] == 5)
|
||||
|
@ -906,7 +904,7 @@ static int pour(token_t verb, token_t obj)
|
|||
rspeak(spk);
|
||||
return GO_CLEAROBJ;
|
||||
}
|
||||
pspeak(PLANT, look, game.prop[PLANT] + 3);
|
||||
pspeak(PLANT, look, game.prop[PLANT] + 3, true);
|
||||
game.prop[PLANT] = MOD(game.prop[PLANT] + 1, 3);
|
||||
game.prop[PLANT2] = game.prop[PLANT];
|
||||
return GO_MOVE;
|
||||
|
@ -944,7 +942,7 @@ static int read(struct command_t command)
|
|||
} else if (objects[command.obj].texts[0] == NULL || game.prop[command.obj] < 0) {
|
||||
rspeak(actions[command.verb].message);
|
||||
} else
|
||||
pspeak(command.obj, study, game.prop[command.obj]);
|
||||
pspeak(command.obj, study, game.prop[command.obj], true);
|
||||
return GO_CLEAROBJ;
|
||||
}
|
||||
|
||||
|
@ -955,7 +953,7 @@ static int reservoir(void)
|
|||
rspeak(NOTHING_HAPPENS);
|
||||
return GO_CLEAROBJ;
|
||||
} else {
|
||||
pspeak(RESER, look, game.prop[RESER] + 1);
|
||||
pspeak(RESER, look, game.prop[RESER] + 1, true);
|
||||
game.prop[RESER] = 1 - game.prop[RESER];
|
||||
if (AT(RESER))
|
||||
return GO_CLEAROBJ;
|
||||
|
@ -1127,7 +1125,7 @@ static int wave(token_t verb, token_t obj)
|
|||
if (HERE(BIRD))
|
||||
rspeak(spk);
|
||||
game.prop[FISSURE] = 1 - game.prop[FISSURE];
|
||||
pspeak(FISSURE, look, 2 - game.prop[FISSURE]);
|
||||
pspeak(FISSURE, look, 2 - game.prop[FISSURE], true);
|
||||
return GO_CLEAROBJ;
|
||||
}
|
||||
}
|
||||
|
|
5
advent.h
5
advent.h
|
@ -106,7 +106,6 @@ typedef long vocab_t; // index into a vocabulary array */
|
|||
struct game_t {
|
||||
unsigned long lcg_a, lcg_c, lcg_m, lcg_x;
|
||||
long abbnum; // How often to print non-abbreviated descriptions
|
||||
long blklin;
|
||||
long bonus;
|
||||
long chloc;
|
||||
long chloc2;
|
||||
|
@ -190,12 +189,12 @@ extern void* xmalloc(size_t size);
|
|||
extern void packed_to_token(long, char token[]);
|
||||
extern long token_to_packed(const char token[6]);
|
||||
extern void tokenize(char*, long tokens[4]);
|
||||
extern void vspeak(const char*, va_list);
|
||||
extern void vspeak(const char*, bool, va_list);
|
||||
extern bool wordeq(token_t, token_t);
|
||||
extern bool wordempty(token_t);
|
||||
extern void wordclear(token_t *);
|
||||
extern void speak(const char*, ...);
|
||||
extern void pspeak(vocab_t, enum speaktype, int, ...);
|
||||
extern void pspeak(vocab_t, enum speaktype, int, bool, ...);
|
||||
extern void rspeak(vocab_t, ...);
|
||||
extern void echo_input(FILE*, const char*, const char*);
|
||||
extern int word_count(char*);
|
||||
|
|
1
init.c
1
init.c
|
@ -33,7 +33,6 @@ struct game_t game = {
|
|||
.abbnum = 5,
|
||||
.clock1 = WARNTIME,
|
||||
.clock2 = FLASHTIME,
|
||||
.blklin = true,
|
||||
.newloc = LOC_START,
|
||||
.loc = LOC_START,
|
||||
.limit = GAMELIMIT,
|
||||
|
|
6
main.c
6
main.c
|
@ -689,7 +689,7 @@ static bool playermove( int motion)
|
|||
* entries check for game.prop(TROLL)=0.) Special
|
||||
* stuff for bear. */
|
||||
if (game.prop[TROLL] == TROLL_PAIDONCE) {
|
||||
pspeak(TROLL, look, TROLL_PAIDONCE);
|
||||
pspeak(TROLL, look, TROLL_PAIDONCE, true);
|
||||
game.prop[TROLL] = TROLL_UNPAID;
|
||||
move(TROLL2, 0);
|
||||
move(TROLL2 + NOBJECTS, 0);
|
||||
|
@ -917,7 +917,7 @@ static void listobjects(void)
|
|||
int kk = game.prop[obj];
|
||||
if (obj == STEPS && game.loc == game.fixed[STEPS])
|
||||
kk = 1;
|
||||
pspeak(obj, look, kk);
|
||||
pspeak(obj, look, kk, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1006,7 +1006,7 @@ L2600:
|
|||
* tick game.clock1 unless well into cave (and not at Y2). */
|
||||
if (game.closed) {
|
||||
if (game.prop[OYSTER] < 0 && TOTING(OYSTER))
|
||||
pspeak(OYSTER, look, 1);
|
||||
pspeak(OYSTER, look, 1, true);
|
||||
for (size_t i = 1; i <= NOBJECTS; i++) {
|
||||
if (TOTING(i) && game.prop[i] < 0)
|
||||
game.prop[i] = -1 - game.prop[i];
|
||||
|
|
30
misc.c
30
misc.c
|
@ -155,7 +155,7 @@ void wordclear(token_t *v)
|
|||
|
||||
/* I/O routines (speak, pspeak, rspeak, get_input, yes) */
|
||||
|
||||
void vspeak(const char* msg, va_list ap)
|
||||
void vspeak(const char* msg, bool blank, va_list ap)
|
||||
{
|
||||
// Do nothing if we got a null pointer.
|
||||
if (msg == NULL)
|
||||
|
@ -165,9 +165,8 @@ void vspeak(const char* msg, va_list ap)
|
|||
if (strlen(msg) == 0)
|
||||
return;
|
||||
|
||||
// Print a newline if the global game.blklin says to.
|
||||
if (game.blklin == true)
|
||||
printf("\n");
|
||||
if (blank == true)
|
||||
printf("\n");
|
||||
|
||||
int msglen = strlen(msg);
|
||||
|
||||
|
@ -253,11 +252,11 @@ void speak(const char* msg, ...)
|
|||
{
|
||||
va_list ap;
|
||||
va_start(ap, msg);
|
||||
vspeak(msg, ap);
|
||||
vspeak(msg, true, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
void pspeak(vocab_t msg, enum speaktype mode, int skip, ...)
|
||||
void pspeak(vocab_t msg, enum speaktype mode, int skip, bool blank, ...)
|
||||
/* Find the skip+1st message from msg and print it. Modes are:
|
||||
* feel = for inventory, what you can touch
|
||||
* look = the long description for the state the object is in
|
||||
|
@ -265,22 +264,22 @@ void pspeak(vocab_t msg, enum speaktype mode, int skip, ...)
|
|||
* study = text on the object. */
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, skip);
|
||||
va_start(ap, blank);
|
||||
switch (mode) {
|
||||
case touch:
|
||||
vspeak(objects[msg].inventory, ap);
|
||||
vspeak(objects[msg].inventory, blank, ap);
|
||||
break;
|
||||
case look:
|
||||
vspeak(objects[msg].descriptions[skip], ap);
|
||||
vspeak(objects[msg].descriptions[skip], blank, ap);
|
||||
break;
|
||||
case hear:
|
||||
vspeak(objects[msg].sounds[skip], ap);
|
||||
vspeak(objects[msg].sounds[skip], blank, ap);
|
||||
break;
|
||||
case study:
|
||||
vspeak(objects[msg].texts[skip], ap);
|
||||
vspeak(objects[msg].texts[skip], blank, ap);
|
||||
break;
|
||||
case change:
|
||||
vspeak(objects[msg].changes[skip], ap);
|
||||
vspeak(objects[msg].changes[skip], blank, ap);
|
||||
break;
|
||||
}
|
||||
va_end(ap);
|
||||
|
@ -291,7 +290,7 @@ void rspeak(vocab_t i, ...)
|
|||
{
|
||||
va_list ap;
|
||||
va_start(ap, i);
|
||||
vspeak(arbitrary_messages[i], ap);
|
||||
vspeak(arbitrary_messages[i], true, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
|
@ -328,9 +327,8 @@ char* get_input()
|
|||
if (!settings.prompt)
|
||||
input_prompt[0] = '\0';
|
||||
|
||||
// Print a blank line if game.blklin tells us to.
|
||||
if (game.blklin == true)
|
||||
printf("\n");
|
||||
// Print a blank line
|
||||
printf("\n");
|
||||
|
||||
char* input;
|
||||
while (true) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue