Magic number elimination
Special state/locations for game.fixd object array
This commit is contained in:
parent
3d5c7239f1
commit
8613f0b3d9
3 changed files with 36 additions and 32 deletions
22
actions.c
22
actions.c
|
@ -261,7 +261,7 @@ static int vbreak(token_t verb, token_t obj)
|
||||||
if (TOTING(VASE))
|
if (TOTING(VASE))
|
||||||
drop(VASE, game.loc);
|
drop(VASE, game.loc);
|
||||||
state_change(VASE, VASE_BROKEN);
|
state_change(VASE, VASE_BROKEN);
|
||||||
game.fixed[VASE] = -1;
|
game.fixed[VASE] = IS_FIXED;
|
||||||
return GO_CLEAROBJ;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
rspeak(actions[verb].message);
|
rspeak(actions[verb].message);
|
||||||
|
@ -302,8 +302,8 @@ static int vcarry(token_t verb, token_t obj)
|
||||||
return GO_CLEAROBJ;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (game.fixed[obj] != 0) {
|
if (game.fixed[obj] != IS_FREE) {
|
||||||
if (obj == PLANT && game.prop[PLANT] <= 0) {
|
if (obj == PLANT && game.prop[PLANT] <= 0) { // FIXME: magical state assertion
|
||||||
rspeak(DEEP_ROOTS);
|
rspeak(DEEP_ROOTS);
|
||||||
return GO_CLEAROBJ;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
|
@ -407,16 +407,16 @@ static int chain(token_t verb)
|
||||||
return GO_CLEAROBJ;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
game.prop[CHAIN] = CHAIN_HEAP;
|
game.prop[CHAIN] = CHAIN_HEAP;
|
||||||
game.fixed[CHAIN] = CHAIN_HEAP;
|
game.fixed[CHAIN] = IS_FREE;
|
||||||
if (game.prop[BEAR] != BEAR_DEAD)
|
if (game.prop[BEAR] != BEAR_DEAD)
|
||||||
game.prop[BEAR] = CONTENTED_BEAR;
|
game.prop[BEAR] = CONTENTED_BEAR;
|
||||||
|
|
||||||
switch (game.prop[BEAR]) {
|
switch (game.prop[BEAR]) {
|
||||||
case BEAR_DEAD:
|
case BEAR_DEAD:
|
||||||
game.fixed[BEAR] = -1;
|
game.fixed[BEAR] = IS_FIXED;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
game.fixed[BEAR] = 0;
|
game.fixed[BEAR] = IS_FREE;
|
||||||
}
|
}
|
||||||
rspeak(CHAIN_UNLOCKED);
|
rspeak(CHAIN_UNLOCKED);
|
||||||
return GO_CLEAROBJ;
|
return GO_CLEAROBJ;
|
||||||
|
@ -435,7 +435,7 @@ static int chain(token_t verb)
|
||||||
|
|
||||||
if (TOTING(CHAIN))
|
if (TOTING(CHAIN))
|
||||||
drop(CHAIN, game.loc);
|
drop(CHAIN, game.loc);
|
||||||
game.fixed[CHAIN] = -1;
|
game.fixed[CHAIN] = IS_FIXED;
|
||||||
|
|
||||||
rspeak(CHAIN_LOCKED);
|
rspeak(CHAIN_LOCKED);
|
||||||
return GO_CLEAROBJ;
|
return GO_CLEAROBJ;
|
||||||
|
@ -506,7 +506,7 @@ static int discard(token_t verb, token_t obj, bool just_do_it)
|
||||||
? VASE_WHOLE
|
? VASE_WHOLE
|
||||||
: VASE_DROPPED);
|
: VASE_DROPPED);
|
||||||
if (game.prop[VASE] != VASE_WHOLE)
|
if (game.prop[VASE] != VASE_WHOLE)
|
||||||
game.fixed[VASE] = -1;
|
game.fixed[VASE] = IS_FIXED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int k = LIQUID();
|
int k = LIQUID();
|
||||||
|
@ -660,7 +660,7 @@ static int feed(token_t verb, token_t obj)
|
||||||
if (HERE(FOOD)) {
|
if (HERE(FOOD)) {
|
||||||
DESTROY(FOOD);
|
DESTROY(FOOD);
|
||||||
game.prop[BEAR] = SITTING_BEAR;
|
game.prop[BEAR] = SITTING_BEAR;
|
||||||
game.fixed[AXE] = 0;
|
game.fixed[AXE] = IS_FREE;
|
||||||
game.prop[AXE] = AXE_HERE;
|
game.prop[AXE] = AXE_HERE;
|
||||||
spk = BEAR_TAMED;
|
spk = BEAR_TAMED;
|
||||||
}
|
}
|
||||||
|
@ -689,7 +689,7 @@ int fill(token_t verb, token_t obj)
|
||||||
}
|
}
|
||||||
rspeak(SHATTER_VASE);
|
rspeak(SHATTER_VASE);
|
||||||
game.prop[VASE] = VASE_BROKEN;
|
game.prop[VASE] = VASE_BROKEN;
|
||||||
game.fixed[VASE] = -1;
|
game.fixed[VASE] = IS_FIXED;
|
||||||
return (discard(verb, VASE, true));
|
return (discard(verb, VASE, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1168,7 +1168,7 @@ static int throw (struct command_t *command)
|
||||||
else if (HERE(BEAR) && game.prop[BEAR] == UNTAMED_BEAR) {
|
else if (HERE(BEAR) && game.prop[BEAR] == UNTAMED_BEAR) {
|
||||||
/* This'll teach him to throw the axe at the bear! */
|
/* This'll teach him to throw the axe at the bear! */
|
||||||
drop(AXE, game.loc);
|
drop(AXE, game.loc);
|
||||||
game.fixed[AXE] = -1;
|
game.fixed[AXE] = IS_FIXED;
|
||||||
juggle(BEAR);
|
juggle(BEAR);
|
||||||
state_change(AXE, AXE_LOST);
|
state_change(AXE, AXE_LOST);
|
||||||
return GO_CLEAROBJ;
|
return GO_CLEAROBJ;
|
||||||
|
|
4
advent.h
4
advent.h
|
@ -30,6 +30,10 @@
|
||||||
#define STATE_FOUND 0 // After discovered, before messed with
|
#define STATE_FOUND 0 // After discovered, before messed with
|
||||||
#define STATE_IN_CAVITY 1 // State value common to all gemstones
|
#define STATE_IN_CAVITY 1 // State value common to all gemstones
|
||||||
|
|
||||||
|
/* Special fixed object-state values - integers > 0 are location */
|
||||||
|
#define IS_FIXED -1
|
||||||
|
#define IS_FREE 0
|
||||||
|
|
||||||
/* Map a state property value to a negative range, where the object cannot be
|
/* Map a state property value to a negative range, where the object cannot be
|
||||||
* picked up but the value can be recovered later. Avoid colliding with -1,
|
* picked up but the value can be recovered later. Avoid colliding with -1,
|
||||||
* which has its own meaning. */
|
* which has its own meaning. */
|
||||||
|
|
10
main.c
10
main.c
|
@ -294,7 +294,7 @@ static bool spotted_by_pirate(int i)
|
||||||
continue;
|
continue;
|
||||||
if (!(treasure == PYRAMID && (game.loc == objects[PYRAMID].plac ||
|
if (!(treasure == PYRAMID && (game.loc == objects[PYRAMID].plac ||
|
||||||
game.loc == objects[EMERALD].plac))) {
|
game.loc == objects[EMERALD].plac))) {
|
||||||
if (AT(treasure) && game.fixed[treasure] == 0)
|
if (AT(treasure) && game.fixed[treasure] == IS_FREE)
|
||||||
carry(treasure, game.loc);
|
carry(treasure, game.loc);
|
||||||
if (TOTING(treasure))
|
if (TOTING(treasure))
|
||||||
drop(treasure, game.chloc);
|
drop(treasure, game.chloc);
|
||||||
|
@ -730,7 +730,7 @@ static void playermove( int motion)
|
||||||
game.prop[CHASM] = BRIDGE_WRECKED;
|
game.prop[CHASM] = BRIDGE_WRECKED;
|
||||||
game.prop[TROLL] = TROLL_GONE;
|
game.prop[TROLL] = TROLL_GONE;
|
||||||
drop(BEAR, game.newloc);
|
drop(BEAR, game.newloc);
|
||||||
game.fixed[BEAR] = -1;
|
game.fixed[BEAR] = IS_FIXED;
|
||||||
game.prop[BEAR] = BEAR_DEAD;
|
game.prop[BEAR] = BEAR_DEAD;
|
||||||
game.oldlc2 = game.newloc;
|
game.oldlc2 = game.newloc;
|
||||||
croak();
|
croak();
|
||||||
|
@ -798,9 +798,9 @@ static bool closecheck(void)
|
||||||
if (game.prop[BEAR] != BEAR_DEAD)
|
if (game.prop[BEAR] != BEAR_DEAD)
|
||||||
DESTROY(BEAR);
|
DESTROY(BEAR);
|
||||||
game.prop[CHAIN] = CHAIN_HEAP;
|
game.prop[CHAIN] = CHAIN_HEAP;
|
||||||
game.fixed[CHAIN] = CHAIN_HEAP;
|
game.fixed[CHAIN] = IS_FREE;
|
||||||
game.prop[AXE] = 0;
|
game.prop[AXE] = AXE_HERE;
|
||||||
game.fixed[AXE] = 0;
|
game.fixed[AXE] = IS_FREE;
|
||||||
rspeak(CAVE_CLOSING);
|
rspeak(CAVE_CLOSING);
|
||||||
game.clock1 = -1;
|
game.clock1 = -1;
|
||||||
game.closng = true;
|
game.closng = true;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue