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:
parent
e4654866cf
commit
67fe316c0c
4 changed files with 27 additions and 38 deletions
|
@ -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
|
||||||
|
|
|
@ -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 *);
|
||||||
|
|
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue