(dirindex): Narrow member type to signed char to save cache.

(pathcost): Catch bad direction characters (should not happen).
This commit is contained in:
Markus Armbruster 2005-09-25 09:15:27 +00:00
parent 6bfdc38df1
commit a88f12017e
3 changed files with 13 additions and 6 deletions

View file

@ -51,7 +51,7 @@
#define DIR_FIRST 1 #define DIR_FIRST 1
#define DIR_LAST 6 #define DIR_LAST 6
extern int dirindex[]; extern signed char dirindex['z'-'a'+1];
extern int diroff[][2]; extern int diroff[][2];
extern s_char dirch[]; extern s_char dirch[];

View file

@ -307,8 +307,9 @@ bp_clear_cachepath(void)
double double
pathcost(struct sctstr *start, s_char *path, int mob_type) pathcost(struct sctstr *start, s_char *path, int mob_type)
{ {
register int o; unsigned i;
register int cx, cy; int o;
int cx, cy;
double cost = 0.0; double cost = 0.0;
struct sctstr *sp; struct sctstr *sp;
int sx, sy, offset; int sx, sy, offset;
@ -321,7 +322,12 @@ pathcost(struct sctstr *start, s_char *path, int mob_type)
path++; path++;
continue; continue;
} }
o = dirindex[(int)((*path) - 'a')]; i = *path - 'a';
if (CANT_HAPPEN(i >= sizeof(dirindex) / sizeof(*dirindex)))
break;
o = dirindex[i];
if (CANT_HAPPEN(o) < 0)
break;
cx += diroff[o][0]; cx += diroff[o][0];
cy += diroff[o][1]; cy += diroff[o][1];
sx = XNORM(cx); sx = XNORM(cx);

View file

@ -55,8 +55,9 @@ int diroff[][2] = {
/* this maps a character from a to z into the diroff mappings. It /* this maps a character from a to z into the diroff mappings. It
keeps us from having to loop if we don't want to */ keeps us from having to loop if we don't want to */
int dirindex[] = { 0, 4, 0, 0, 0, 0, 5, 0, 0, 2, 0, 0, 8, signed char dirindex[] = {
3, 0, 0, 0, 0, 0, 0, 1, 7, 0, 0, 6, 0 -1, 4, -1, -1, -1, -1, 5, 0, -1, 2, -1, -1, 8,
3, -1, -1, -1, -1, -1, -1, 1, 7, -1, -1, 6, -1
}; };
/* must agree with dirch[] and DIR_ defines */ /* must agree with dirch[] and DIR_ defines */