Begin abstracting out the magic properties of travel-array opcodes.
This commit is contained in:
parent
e49ba9fb2b
commit
f6cd34f778
1 changed files with 6 additions and 5 deletions
11
main.c
11
main.c
|
@ -37,6 +37,7 @@
|
||||||
#define T_MOTION(entry) MOD(labs(entry), 1000)
|
#define T_MOTION(entry) MOD(labs(entry), 1000)
|
||||||
#define L_SPEAK(loc) ((loc) - 500)
|
#define L_SPEAK(loc) ((loc) - 500)
|
||||||
#define T_TERMINATE(entry) (T_MOTION(entry) == 1)
|
#define T_TERMINATE(entry) (T_MOTION(entry) == 1)
|
||||||
|
#define T_STOP(entry) ((entry) < 0)
|
||||||
|
|
||||||
struct game_t game;
|
struct game_t game;
|
||||||
|
|
||||||
|
@ -425,7 +426,7 @@ static bool dwarfmove(void)
|
||||||
}
|
}
|
||||||
++kk;
|
++kk;
|
||||||
} while
|
} while
|
||||||
(travel[kk - 1] >= 0);
|
(!T_STOP(travel[kk - 1]));
|
||||||
tk[j] = game.odloc[i];
|
tk[j] = game.odloc[i];
|
||||||
if (j >= 2)
|
if (j >= 2)
|
||||||
--j;
|
--j;
|
||||||
|
@ -555,7 +556,7 @@ static bool playermove(token_t verb, int motion)
|
||||||
if (FORCED(scratchloc) && T_DESTINATION(travel[tkey[scratchloc]]) == motion)
|
if (FORCED(scratchloc) && T_DESTINATION(travel[tkey[scratchloc]]) == motion)
|
||||||
k2 = kk;
|
k2 = kk;
|
||||||
}
|
}
|
||||||
if (travel[kk] >= 0) {
|
if (!T_STOP(travel[kk])) {
|
||||||
++kk; /* go to next travel entry for this location */
|
++kk; /* go to next travel entry for this location */
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -600,7 +601,7 @@ static bool playermove(token_t verb, int motion)
|
||||||
for (;;) {
|
for (;;) {
|
||||||
if (T_TERMINATE(travel[kk]) || T_MOTION(travel[kk]) == motion)
|
if (T_TERMINATE(travel[kk]) || T_MOTION(travel[kk]) == motion)
|
||||||
break;
|
break;
|
||||||
if (travel[kk] < 0) {
|
if (T_STOP(travel[kk])) {
|
||||||
/* FIXME: Magic numbers! */
|
/* FIXME: Magic numbers! */
|
||||||
/* Couldn't find an entry matching the motion word passed
|
/* Couldn't find an entry matching the motion word passed
|
||||||
* in. Various messages depending on word given. */
|
* in. Various messages depending on word given. */
|
||||||
|
@ -643,7 +644,7 @@ static bool playermove(token_t verb, int motion)
|
||||||
} else if (game.prop[motion] != game.newloc / 100 - 3)
|
} else if (game.prop[motion] != game.newloc / 100 - 3)
|
||||||
break;
|
break;
|
||||||
do {
|
do {
|
||||||
if (travel[kk] < 0)
|
if (T_STOP(travel[kk]))
|
||||||
BUG(CONDITIONAL_TRAVEL_ENTRY_WITH_NO_ALTERATION);
|
BUG(CONDITIONAL_TRAVEL_ENTRY_WITH_NO_ALTERATION);
|
||||||
++kk;
|
++kk;
|
||||||
game.newloc = labs(travel[kk]) / 1000;
|
game.newloc = labs(travel[kk]) / 1000;
|
||||||
|
@ -684,7 +685,7 @@ static bool playermove(token_t verb, int motion)
|
||||||
* pretend he wasn't carrying it after all. */
|
* pretend he wasn't carrying it after all. */
|
||||||
drop(EMERALD, game.loc);
|
drop(EMERALD, game.loc);
|
||||||
do {
|
do {
|
||||||
if (travel[kk] < 0)
|
if (T_STOP(travel[kk]))
|
||||||
BUG(CONDITIONAL_TRAVEL_ENTRY_WITH_NO_ALTERATION);
|
BUG(CONDITIONAL_TRAVEL_ENTRY_WITH_NO_ALTERATION);
|
||||||
++kk;
|
++kk;
|
||||||
game.newloc = labs(travel[kk]) / 1000;
|
game.newloc = labs(travel[kk]) / 1000;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue