Factor rad_char() out of radmap() and rad_map_set()
authorMarkus Armbruster <armbru@pond.sub.org>
Sun, 20 Jun 2010 14:34:08 +0000 (16:34 +0200)
committerMarkus Armbruster <armbru@pond.sub.org>
Sun, 25 Jul 2010 15:47:30 +0000 (17:47 +0200)
Code was duplicated in commit 0d477e5d.

src/lib/subs/radmap.c

index 8de75c01d9cba72cadaa7fa6297e445a1fc6a803..fec8c5ae774a77344d1639a6705f928da68024af 100644 (file)
@@ -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, &sect)) {
-       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(&sect, 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, &sect)) {
-       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(&sect, 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 '?';
+}