(ep): Global variable pointing to sector cache. Gross. Remove.
(bp_neighbors, bp_lbcost, pathcost): Replace pointer arithmetic by array subscript.
This commit is contained in:
parent
e694cc20f8
commit
e59f9a43d1
1 changed files with 7 additions and 8 deletions
|
@ -68,8 +68,6 @@ static double bp_seccost(struct as_coord from, struct as_coord to,
|
||||||
s_char *pp);
|
s_char *pp);
|
||||||
static int bp_coord_hash(struct as_coord c);
|
static int bp_coord_hash(struct as_coord c);
|
||||||
|
|
||||||
struct empfile *ep;
|
|
||||||
|
|
||||||
/* We use this for caching neighbors. It never changes except
|
/* We use this for caching neighbors. It never changes except
|
||||||
* at reboot time (maybe) so we never need to free it */
|
* at reboot time (maybe) so we never need to free it */
|
||||||
struct sctstr **neighsects = (struct sctstr **)0;
|
struct sctstr **neighsects = (struct sctstr **)0;
|
||||||
|
@ -79,8 +77,6 @@ bp_init(void)
|
||||||
{
|
{
|
||||||
struct bestp *bp;
|
struct bestp *bp;
|
||||||
|
|
||||||
ep = &empfile[EF_SECTOR];
|
|
||||||
|
|
||||||
bp = malloc(sizeof(*bp));
|
bp = malloc(sizeof(*bp));
|
||||||
memset(bp, 0, sizeof(*bp));
|
memset(bp, 0, sizeof(*bp));
|
||||||
bp->adp = as_init(BP_NEIGHBORS, BP_ASHASHSIZE, bp_coord_hash,
|
bp->adp = as_init(BP_NEIGHBORS, BP_ASHASHSIZE, bp_coord_hash,
|
||||||
|
@ -187,6 +183,7 @@ bp_path(struct as_path *pp, s_char *buf)
|
||||||
static int
|
static int
|
||||||
bp_neighbors(struct as_coord c, struct as_coord *cp, s_char *pp)
|
bp_neighbors(struct as_coord c, struct as_coord *cp, s_char *pp)
|
||||||
{
|
{
|
||||||
|
struct sctstr *sectp = (void *)empfile[EF_SECTOR].cache;
|
||||||
coord x, y;
|
coord x, y;
|
||||||
coord nx, ny;
|
coord nx, ny;
|
||||||
int n = 0, q;
|
int n = 0, q;
|
||||||
|
@ -200,7 +197,7 @@ bp_neighbors(struct as_coord c, struct as_coord *cp, s_char *pp)
|
||||||
sx = XNORM(x);
|
sx = XNORM(x);
|
||||||
sy = YNORM(y);
|
sy = YNORM(y);
|
||||||
offset = (sy * WORLD_X + sx) / 2;
|
offset = (sy * WORLD_X + sx) / 2;
|
||||||
from = (struct sctstr *)(ep->cache + ep->size * offset);
|
from = §p[offset];
|
||||||
|
|
||||||
if (neighsects == (struct sctstr **)0)
|
if (neighsects == (struct sctstr **)0)
|
||||||
ssp = (struct sctstr **)&tsp[0];
|
ssp = (struct sctstr **)&tsp[0];
|
||||||
|
@ -214,7 +211,7 @@ bp_neighbors(struct as_coord c, struct as_coord *cp, s_char *pp)
|
||||||
sx = XNORM(nx);
|
sx = XNORM(nx);
|
||||||
sy = YNORM(ny);
|
sy = YNORM(ny);
|
||||||
offset = (sy * WORLD_X + sx) / 2;
|
offset = (sy * WORLD_X + sx) / 2;
|
||||||
sp = (struct sctstr *)(ep->cache + ep->size * offset);
|
sp = §p[offset];
|
||||||
*ssp = sp;
|
*ssp = sp;
|
||||||
} else {
|
} else {
|
||||||
sp = *ssp;
|
sp = *ssp;
|
||||||
|
@ -241,6 +238,7 @@ bp_neighbors(struct as_coord c, struct as_coord *cp, s_char *pp)
|
||||||
static double
|
static double
|
||||||
bp_lbcost(struct as_coord from, struct as_coord to, s_char *pp)
|
bp_lbcost(struct as_coord from, struct as_coord to, s_char *pp)
|
||||||
{
|
{
|
||||||
|
struct sctstr *sectp = (void *)empfile[EF_SECTOR].cache;
|
||||||
struct bestp *bp = (struct bestp *)pp;
|
struct bestp *bp = (struct bestp *)pp;
|
||||||
struct sctstr *ts;
|
struct sctstr *ts;
|
||||||
float cost;
|
float cost;
|
||||||
|
@ -251,7 +249,7 @@ bp_lbcost(struct as_coord from, struct as_coord to, s_char *pp)
|
||||||
sx = XNORM(x);
|
sx = XNORM(x);
|
||||||
sy = YNORM(y);
|
sy = YNORM(y);
|
||||||
offset = (sy * WORLD_X + sx) / 2;
|
offset = (sy * WORLD_X + sx) / 2;
|
||||||
ts = (struct sctstr *)(ep->cache + ep->size * offset);
|
ts = §p[offset];
|
||||||
cost = sector_mcost(ts, bp->bp_mobtype);
|
cost = sector_mcost(ts, bp->bp_mobtype);
|
||||||
return cost;
|
return cost;
|
||||||
}
|
}
|
||||||
|
@ -307,6 +305,7 @@ 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)
|
||||||
{
|
{
|
||||||
|
struct sctstr *sectp = (void *)empfile[EF_SECTOR].cache;
|
||||||
unsigned i;
|
unsigned i;
|
||||||
int o;
|
int o;
|
||||||
int cx, cy;
|
int cx, cy;
|
||||||
|
@ -333,7 +332,7 @@ pathcost(struct sctstr *start, s_char *path, int mob_type)
|
||||||
sx = XNORM(cx);
|
sx = XNORM(cx);
|
||||||
sy = YNORM(cy);
|
sy = YNORM(cy);
|
||||||
offset = (sy * WORLD_X + sx) / 2;
|
offset = (sy * WORLD_X + sx) / 2;
|
||||||
sp = (struct sctstr *)(ep->cache + ep->size * offset);
|
sp = §p[offset];
|
||||||
cost += sector_mcost(sp, mob_type);
|
cost += sector_mcost(sp, mob_type);
|
||||||
path++;
|
path++;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue