From: Markus Armbruster Date: Sat, 10 Jan 2015 06:22:05 +0000 (+0100) Subject: bomb: Fix ship list header for ASW planes X-Git-Tag: v4.3.33~86 X-Git-Url: http://git.pond.sub.org/?p=empserver;a=commitdiff_plain;h=67fe316c0c96c98611b9efc2880a9b0475164250 bomb: Fix ship list header for ASW planes The code to list ships got triplicated in Chainsaw. Empire 2 screwed up one copy in its global replace of owner by player->owner. Fix it by de-duplicating. Signed-off-by: Markus Armbruster --- diff --git a/include/plane.h b/include/plane.h index bbf2709f4..242c933dd 100644 --- a/include/plane.h +++ b/include/plane.h @@ -171,6 +171,5 @@ extern int ac_damage_plane(struct plnstr *, natid, int, int, char *); extern int on_shiplist(int, struct shiplist *); extern void add_shiplist(int, struct shiplist **); extern void free_shiplist(struct shiplist **); -extern void print_shiplist(struct shiplist *); #endif diff --git a/include/prototypes.h b/include/prototypes.h index a9e4556d7..ecb014bfc 100644 --- a/include/prototypes.h +++ b/include/prototypes.h @@ -450,6 +450,7 @@ extern int unitsatxy(coord, coord, int, int, int); extern int planesatxy(coord, coord, int, int); extern int asw_shipsatxy(coord, coord, int, int, struct plnstr *, struct shiplist **); +extern void print_shiplist(struct shiplist *); extern int has_units(coord, coord, natid); extern int adj_units(coord, coord, natid); extern int islist(char *); diff --git a/src/lib/subs/aswplnsubs.c b/src/lib/subs/aswplnsubs.c index f9827c844..4e93ebf98 100644 --- a/src/lib/subs/aswplnsubs.c +++ b/src/lib/subs/aswplnsubs.c @@ -92,25 +92,3 @@ free_shiplist(struct shiplist **head) } *head = NULL; } - -void -print_shiplist(struct shiplist *head) -{ - struct shiplist *s; - int first; - struct shpstr ship; - - s = head; - first = 1; - - while (s != NULL) { - getship(s->uid, &ship); - if (first) { - pr(" # player->owner eff type\n"); - first = 0; - } - pr("(#%3d) %10.10s %12.12s %s\n", ship.shp_uid, - cname(ship.shp_own), effadv(ship.shp_effic), prship(&ship)); - s = s->next; - } -} diff --git a/src/lib/subs/list.c b/src/lib/subs/list.c index 728bc7d9e..02a712094 100644 --- a/src/lib/subs/list.c +++ b/src/lib/subs/list.c @@ -28,7 +28,7 @@ * * Known contributors to this file: * Dave Pare, 1986 - * Markus Armbruster, 2003-2014 + * Markus Armbruster, 2003-2015 */ #include @@ -48,6 +48,15 @@ #include "ship.h" #include "xy.h" +static void +list_ship(struct shpstr *sp, int first) +{ + if (first) + pr(" # owner eff type\n"); + pr("(#%3d) %10.10s %12.12s %s\n", sp->shp_uid, + cname(sp->shp_own), effadv(sp->shp_effic), prship(sp)); +} + int shipsatxy(coord x, coord y, int wantflags, int nowantflags, int only_count) { @@ -72,12 +81,8 @@ shipsatxy(coord x, coord y, int wantflags, int nowantflags, int only_count) if (mp->m_flags & nowantflags) continue; } - if (!only_count) { - if (!ships) - pr(" # owner eff type\n"); - pr("(#%3d) %10.10s %12.12s %s\n", ni.cur, - cname(ship.shp_own), effadv(ship.shp_effic), prship(&ship)); - } + if (!only_count) + list_ship(&ship, !ships); ships++; } return ships; @@ -101,10 +106,7 @@ carriersatxy(coord x, coord y, natid own) continue; if ((carrier_planes(&ship, 0) & (P_L | P_K)) == 0) continue; - if (!ships) - pr(" # owner eff type\n"); - pr("(#%3d) %10.10s %12.12s %s\n", ni.cur, - cname(ship.shp_own), effadv(ship.shp_effic), prship(&ship)); + list_ship(&ship, !ships); ships++; } return ships; @@ -219,15 +221,24 @@ asw_shipsatxy(coord x, coord y, int wantflags, int nowantflags, continue; } add_shiplist(ship.shp_uid, head); - if (!ships) - pr(" # owner eff type\n"); - pr("(#%3d) %10.10s %12.12s %s\n", ni.cur, - cname(ship.shp_own), effadv(ship.shp_effic), prship(&ship)); + list_ship(&ship, !ships); ships++; } return ships; } +void +print_shiplist(struct shiplist *head) +{ + struct shiplist *s; + struct shpstr ship; + + for (s = head; s; s = s->next) { + getship(s->uid, &ship); + list_ship(&ship, s == head); + } +} + int adj_units(coord x, coord y, natid own) {