]> git.pond.sub.org Git - empserver/commitdiff
Collapse duplicated code in draw_map()
authorMarkus Armbruster <armbru@pond.sub.org>
Sun, 10 Apr 2011 08:16:59 +0000 (10:16 +0200)
committerMarkus Armbruster <armbru@pond.sub.org>
Thu, 14 Apr 2011 18:21:22 +0000 (20:21 +0200)
One loop for maps and one for bmaps suffice.  Before, we had two
similar ones for each.

src/lib/subs/maps.c

index fb63031dbe8be51119cb52cd4960b4d63fa42d20..305960eda765250d87b5b475a05d5551f3685d34 100644 (file)
@@ -259,49 +259,34 @@ draw_map(char origin, int map_flags, struct nstr_sect *nsp)
     blankfill(wmapbuf, &nsp->range, 1);
 
     if (map_flags & MAP_BMAP) {
-       int c;
+       char *map = map_flags & MAP_ALT ? player->map : player->bmap;
 
-       if (map_flags & MAP_ALT) {
-           while (bmnxtsct(nsp)) {
-               if (0 != (c = player->map[nsp->id]))
-                   wmap[nsp->dy][nsp->dx] = c;
-           }
-       } else {
-           while (bmnxtsct(nsp)) {
-               if (0 != (c = player->bmap[nsp->id]))
-                   wmap[nsp->dy][nsp->dx] = c;
-           }
+       while (bmnxtsct(nsp)) {
+           if (map[nsp->id])
+               wmap[nsp->dy][nsp->dx] = map[nsp->id];
        }
     } else {
        struct sctstr sect;
+       char mapch;
+       int changed = 0;
 
        if (!player->god) {
            memset(bitmap, 0, (WORLD_SZ() + 7) / 8);
            bitinit2(nsp, bitmap, player->cnum);
        }
-       if (map_flags & MAP_ALT) {      
-           while (nxtsct(nsp, &sect)) {
-               if (!player->god && !emp_getbit(nsp->x, nsp->y, bitmap))
-                   continue;
-               wmap[nsp->dy][nsp->dx]
-                   = map_char(sect.sct_newtype, sect.sct_own,
-                              player->owner);
-           }
-       } else {
-           struct sctstr sect;
-           char mapch;
-           int changed = 0;
 
-           while (nxtsct(nsp, &sect)) {
-               if (!player->god && !emp_getbit(nsp->x, nsp->y, bitmap))
-                   continue;
-               mapch = map_char(sect.sct_type, sect.sct_own, player->owner);
-               wmap[nsp->dy][nsp->dx] = mapch;
+       while (nxtsct(nsp, &sect)) {
+           if (!player->god && !emp_getbit(nsp->x, nsp->y, bitmap))
+               continue;
+           mapch = map_char(map_flags & MAP_ALT
+                            ? sect.sct_newtype : sect.sct_type,
+                            sect.sct_own, player->owner);
+           wmap[nsp->dy][nsp->dx] = mapch;
+           if (!(map_flags & MAP_ALT))
                changed |= map_set(player->cnum, nsp->x, nsp->y, mapch, 0);
-           }
-           if (changed)
-               writemap(player->cnum);
        }
+       if (changed)
+           writemap(player->cnum);
     }
 
     i = 0;