From: Markus Armbruster Date: Sun, 20 Jun 2010 14:34:08 +0000 (+0200) Subject: Factor rad_char() out of radmap() and rad_map_set() X-Git-Tag: v4.3.27~185 X-Git-Url: http://git.pond.sub.org/?p=empserver;a=commitdiff_plain;h=eea0dfd1336e9af246b90e414a91a575a318232b Factor rad_char() out of radmap() and rad_map_set() Code was duplicated in commit 0d477e5d. --- diff --git a/src/lib/subs/radmap.c b/src/lib/subs/radmap.c index 8de75c01d..fec8c5ae7 100644 --- a/src/lib/subs/radmap.c +++ b/src/lib/subs/radmap.c @@ -48,6 +48,7 @@ #include "xy.h" static int rad_range(int, double, int); +static char rad_char(struct sctstr *, int, int, natid); /* More dynamic world sized buffers. We create 'em once, and then * never again. No need to keep creating/tearing apart. We may @@ -106,14 +107,8 @@ radmap(int cx, int cy, int eff, double tlev, int spy, double seesub) snxtsct_dist(&ns, cx, cy, range); blankfill(radbuf, &ns.range, 1); while (nxtsct(&ns, §)) { - if (sect.sct_own == player->cnum - || sect.sct_type == SCT_WATER - || sect.sct_type == SCT_MOUNT - || sect.sct_type == SCT_WASTE - || ns.curdist <= range / 3) - rad[ns.dy][ns.dx] = dchr[sect.sct_type].d_mnem; - else - rad[ns.dy][ns.dx] = '?'; + rad[ns.dy][ns.dx] = rad_char(§, ns.curdist, range, + player->cnum); changed += map_set(player->cnum, ns.x, ns.y, rad[ns.dy][ns.dx], 0); } if (changed) @@ -205,14 +200,7 @@ rad_map_set(natid owner, int cx, int cy, int eff, double tlev, int spy) snxtsct_dist(&ns, cx, cy, range); while (nxtsct(&ns, §)) { - if (sect.sct_own == owner - || sect.sct_type == SCT_WATER - || sect.sct_type == SCT_MOUNT - || sect.sct_type == SCT_WASTE - || ns.curdist <= range / 3) - ch = dchr[sect.sct_type].d_mnem; - else - ch = '?'; + ch = rad_char(§, ns.curdist, range, owner); changed += map_set(owner, ns.x, ns.y, ch, 0); } if (changed) @@ -233,3 +221,20 @@ rad_range(int eff, double tlev, int spy) range = 1; return range; } + +/* + * Return character to use in radar maps for sector SP. + * DIST is the distance from the radar, RANGE its range. + * Country CN is using the radar. + */ +static char +rad_char(struct sctstr *sp, int dist, int range, natid cn) +{ + if (sp->sct_own == cn + || sp->sct_type == SCT_WATER + || sp->sct_type == SCT_MOUNT + || sp->sct_type == SCT_WASTE + || dist <= range / 3) + return dchr[sp->sct_type].d_mnem; + return '?'; +}