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 <armbru@pond.sub.org>
This commit is contained in:
Markus Armbruster 2015-01-10 07:22:05 +01:00
parent e4654866cf
commit 67fe316c0c
4 changed files with 27 additions and 38 deletions

View file

@ -171,6 +171,5 @@ extern int ac_damage_plane(struct plnstr *, natid, int, int, char *);
extern int on_shiplist(int, struct shiplist *); extern int on_shiplist(int, struct shiplist *);
extern void add_shiplist(int, struct shiplist **); extern void add_shiplist(int, struct shiplist **);
extern void free_shiplist(struct shiplist **); extern void free_shiplist(struct shiplist **);
extern void print_shiplist(struct shiplist *);
#endif #endif

View file

@ -450,6 +450,7 @@ extern int unitsatxy(coord, coord, int, int, int);
extern int planesatxy(coord, coord, int, int); extern int planesatxy(coord, coord, int, int);
extern int asw_shipsatxy(coord, coord, int, int, struct plnstr *, extern int asw_shipsatxy(coord, coord, int, int, struct plnstr *,
struct shiplist **); struct shiplist **);
extern void print_shiplist(struct shiplist *);
extern int has_units(coord, coord, natid); extern int has_units(coord, coord, natid);
extern int adj_units(coord, coord, natid); extern int adj_units(coord, coord, natid);
extern int islist(char *); extern int islist(char *);

View file

@ -92,25 +92,3 @@ free_shiplist(struct shiplist **head)
} }
*head = NULL; *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;
}
}

View file

@ -28,7 +28,7 @@
* *
* Known contributors to this file: * Known contributors to this file:
* Dave Pare, 1986 * Dave Pare, 1986
* Markus Armbruster, 2003-2014 * Markus Armbruster, 2003-2015
*/ */
#include <config.h> #include <config.h>
@ -48,6 +48,15 @@
#include "ship.h" #include "ship.h"
#include "xy.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 int
shipsatxy(coord x, coord y, int wantflags, int nowantflags, int only_count) 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) if (mp->m_flags & nowantflags)
continue; continue;
} }
if (!only_count) { if (!only_count)
if (!ships) list_ship(&ship, !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));
}
ships++; ships++;
} }
return ships; return ships;
@ -101,10 +106,7 @@ carriersatxy(coord x, coord y, natid own)
continue; continue;
if ((carrier_planes(&ship, 0) & (P_L | P_K)) == 0) if ((carrier_planes(&ship, 0) & (P_L | P_K)) == 0)
continue; continue;
if (!ships) list_ship(&ship, !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));
ships++; ships++;
} }
return ships; return ships;
@ -219,15 +221,24 @@ asw_shipsatxy(coord x, coord y, int wantflags, int nowantflags,
continue; continue;
} }
add_shiplist(ship.shp_uid, head); add_shiplist(ship.shp_uid, head);
if (!ships) list_ship(&ship, !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));
ships++; ships++;
} }
return 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 int
adj_units(coord x, coord y, natid own) adj_units(coord x, coord y, natid own)
{ {