From 2a9b89693ebf7798d950dbcec2ad076b37a328fa Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Fri, 12 Sep 2008 21:22:14 -0400 Subject: [PATCH] Use new snxtitem_cargo() to simplify a couple of loops Change snxtitem_all() loops that skip everything but a carrier's cargo to use snxtitem_cargo() in scra(), scuttle_ship(), scuttle_land(), takeover_ship(), takeover_land(), trade_desc(), feed_ship(). --- src/lib/commands/scra.c | 128 ++++++++++++++++++---------------------- src/lib/commands/scut.c | 108 +++++++++++++++------------------ src/lib/subs/takeover.c | 30 ++-------- src/lib/subs/trdsub.c | 66 +++++++++------------ src/lib/update/ship.c | 4 +- 5 files changed, 138 insertions(+), 198 deletions(-) diff --git a/src/lib/commands/scra.c b/src/lib/commands/scra.c index 88985cbed..340e37a1d 100644 --- a/src/lib/commands/scra.c +++ b/src/lib/commands/scra.c @@ -178,49 +178,41 @@ scra(void) sect.sct_item[I_LCM] += mp->m_lcm * 2 / 3 * eff; sect.sct_item[I_HCM] += mp->m_hcm * 2 / 3 * eff; getsect(item.ship.shp_x, item.ship.shp_y, §2); - snxtitem_all(&ni2, EF_PLANE); + snxtitem_cargo(&ni2, EF_PLANE, EF_SHIP, item.ship.shp_uid); while (nxtitem(&ni2, &plane)) { - if (plane.pln_own == 0) - continue; - if (plane.pln_ship == item.ship.shp_uid) { + wu(0, plane.pln_own, + "Plane %d transferred off ship %d to %s\n", + ni2.cur, item.ship.shp_uid, + xyas(plane.pln_x, plane.pln_y, player->cnum)); + plane.pln_ship = -1; + if (sect2.sct_own != plane.pln_own) { wu(0, plane.pln_own, - "Plane %d transferred off ship %d to %s\n", - ni2.cur, item.ship.shp_uid, - xyas(plane.pln_x, plane.pln_y, player->cnum)); - plane.pln_ship = -1; - if (sect2.sct_own != plane.pln_own) { - wu(0, plane.pln_own, - "%s given to %s\n", prplane(&plane), - cname(sect2.sct_own)); - wu(0, sect2.sct_own, - "%s given to you by %s\n", prplane(&plane), - cname(player->cnum)); - } - plane.pln_own = sect2.sct_own; - putplane(plane.pln_uid, &plane); + "%s given to %s\n", prplane(&plane), + cname(sect2.sct_own)); + wu(0, sect2.sct_own, + "%s given to you by %s\n", prplane(&plane), + cname(player->cnum)); } + plane.pln_own = sect2.sct_own; + putplane(plane.pln_uid, &plane); } - snxtitem_all(&ni2, EF_LAND); + snxtitem_cargo(&ni2, EF_LAND, EF_SHIP, item.ship.shp_uid); while (nxtitem(&ni2, &land)) { - if (land.lnd_own == 0) - continue; - if (land.lnd_ship == item.ship.shp_uid) { + wu(0, land.lnd_own, + "Land unit %d transferred off ship %d to %s\n", + ni2.cur, item.ship.shp_uid, + xyas(land.lnd_x, land.lnd_y, player->cnum)); + land.lnd_ship = -1; + if (sect2.sct_own != land.lnd_own) { wu(0, land.lnd_own, - "Land unit %d transferred off ship %d to %s\n", - ni2.cur, item.ship.shp_uid, - xyas(land.lnd_x, land.lnd_y, player->cnum)); - land.lnd_ship = -1; - if (sect2.sct_own != land.lnd_own) { - wu(0, land.lnd_own, - "%s given to %s\n", prland(&land), - cname(sect2.sct_own)); - wu(0, sect2.sct_own, - "%s given to you by %s\n", prland(&land), - cname(player->cnum)); - } - land.lnd_own = sect2.sct_own; - putland(land.lnd_uid, &land); + "%s given to %s\n", prland(&land), + cname(sect2.sct_own)); + wu(0, sect2.sct_own, + "%s given to you by %s\n", prland(&land), + cname(player->cnum)); } + land.lnd_own = sect2.sct_own; + putland(land.lnd_uid, &land); } item.ship.shp_effic = 0; putship(item.ship.shp_uid, &item.ship); @@ -235,50 +227,42 @@ scra(void) sect.sct_item[I_HCM] += lp->l_hcm * 2 / 3 * eff; getsect(item.land.lnd_x, item.land.lnd_y, §2); - snxtitem_all(&ni2, EF_LAND); + snxtitem_cargo(&ni2, EF_LAND, EF_LAND, item.land.lnd_uid); while (nxtitem(&ni2, &land)) { - if (land.lnd_own == 0) - continue; - if (land.lnd_land == item.land.lnd_uid) { + wu(0, land.lnd_own, + "Land unit %d transferred off land unit %d to %s\n", + land.lnd_uid, item.land.lnd_uid, + xyas(land.lnd_x, land.lnd_y, player->cnum)); + land.lnd_land = -1; + if (sect2.sct_own != land.lnd_own) { wu(0, land.lnd_own, - "Land unit %d transferred off land unit %d to %s\n", - land.lnd_uid, item.land.lnd_uid, - xyas(land.lnd_x, land.lnd_y, player->cnum)); - land.lnd_land = -1; - if (sect2.sct_own != land.lnd_own) { - wu(0, land.lnd_own, - "%s given to %s\n", prland(&land), - cname(sect2.sct_own)); - wu(0, sect2.sct_own, - "%s given to you by %s\n", prland(&land), - cname(player->cnum)); - } - land.lnd_own = sect2.sct_own; - putland(land.lnd_uid, &land); + "%s given to %s\n", prland(&land), + cname(sect2.sct_own)); + wu(0, sect2.sct_own, + "%s given to you by %s\n", prland(&land), + cname(player->cnum)); } + land.lnd_own = sect2.sct_own; + putland(land.lnd_uid, &land); } - snxtitem_all(&ni2, EF_PLANE); + snxtitem_cargo(&ni2, EF_PLANE, EF_LAND, item.land.lnd_uid); while (nxtitem(&ni2, &plane)) { - if (plane.pln_own == 0) - continue; - if (plane.pln_land == item.land.lnd_uid) { + wu(0, plane.pln_own, + "Plane %d transferred off land unit %d to %s\n", + ni2.cur, item.land.lnd_uid, + xyas(plane.pln_x, plane.pln_y, player->cnum)); + plane.pln_land = -1; + if (sect2.sct_own != plane.pln_own) { wu(0, plane.pln_own, - "Plane %d transferred off land unit %d to %s\n", - ni2.cur, item.land.lnd_uid, - xyas(plane.pln_x, plane.pln_y, player->cnum)); - plane.pln_land = -1; - if (sect2.sct_own != plane.pln_own) { - wu(0, plane.pln_own, - "%s given to %s\n", prplane(&plane), - cname(sect2.sct_own)); - wu(0, sect2.sct_own, - "%s given to you by %s\n", prplane(&plane), - cname(player->cnum)); - } - plane.pln_own = sect2.sct_own; - putplane(plane.pln_uid, &plane); + "%s given to %s\n", prplane(&plane), + cname(sect2.sct_own)); + wu(0, sect2.sct_own, + "%s given to you by %s\n", prplane(&plane), + cname(player->cnum)); } + plane.pln_own = sect2.sct_own; + putplane(plane.pln_uid, &plane); } item.land.lnd_effic = 0; putland(item.land.lnd_uid, &item.land); diff --git a/src/lib/commands/scut.c b/src/lib/commands/scut.c index fa3057688..f6847a29a 100644 --- a/src/lib/commands/scut.c +++ b/src/lib/commands/scut.c @@ -244,41 +244,33 @@ scuttle_ship(struct shpstr *sp) struct lndstr land; getsect(sp->shp_x, sp->shp_y, §); - snxtitem_all(&ni, EF_PLANE); + snxtitem_cargo(&ni, EF_PLANE, EF_SHIP, sp->shp_uid); while (nxtitem(&ni, &plane)) { - if (plane.pln_own == 0) - continue; - if (plane.pln_ship == sp->shp_uid) { - plane.pln_ship = -1; - if (sect.sct_own != sp->shp_own) { - wu(0, plane.pln_own, "Plane %d scuttled in %s\n", - plane.pln_uid, - xyas(plane.pln_x, plane.pln_y, plane.pln_own)); - plane.pln_effic = 0; - } else { - wu(0, plane.pln_own, - "Plane %d transferred off ship %d to %s\n", - plane.pln_uid, sp->shp_uid, - xyas(plane.pln_x, plane.pln_y, plane.pln_own)); - } - putplane(plane.pln_uid, &plane); + plane.pln_ship = -1; + if (sect.sct_own != sp->shp_own) { + wu(0, plane.pln_own, "Plane %d scuttled in %s\n", + plane.pln_uid, + xyas(plane.pln_x, plane.pln_y, plane.pln_own)); + plane.pln_effic = 0; + } else { + wu(0, plane.pln_own, + "Plane %d transferred off ship %d to %s\n", + plane.pln_uid, sp->shp_uid, + xyas(plane.pln_x, plane.pln_y, plane.pln_own)); } + putplane(plane.pln_uid, &plane); } - snxtitem_all(&ni, EF_LAND); + snxtitem_cargo(&ni, EF_LAND, EF_SHIP, sp->shp_uid); while (nxtitem(&ni, &land)) { - if (land.lnd_own == 0) - continue; - if (land.lnd_ship == sp->shp_uid) { - land.lnd_ship = -1; - if (sect.sct_own == sp->shp_own) { - wu(0, land.lnd_own, - "Land unit %d transferred off ship %d to %s\n", - land.lnd_uid, sp->shp_uid, - xyas(land.lnd_x, land.lnd_y, land.lnd_own)); - putland(land.lnd_uid, &land); - } else - scuttle_land(&land); - } + land.lnd_ship = -1; + if (sect.sct_own == sp->shp_own) { + wu(0, land.lnd_own, + "Land unit %d transferred off ship %d to %s\n", + land.lnd_uid, sp->shp_uid, + xyas(land.lnd_x, land.lnd_y, land.lnd_own)); + putland(land.lnd_uid, &land); + } else + scuttle_land(&land); } sp->shp_effic = 0; putship(sp->shp_uid, sp); @@ -293,41 +285,33 @@ scuttle_land(struct lndstr *lp) struct lndstr land; getsect(lp->lnd_x, lp->lnd_y, §); - snxtitem_all(&ni, EF_PLANE); + snxtitem_cargo(&ni, EF_PLANE, EF_LAND, lp->lnd_uid); while (nxtitem(&ni, &plane)) { - if (plane.pln_own == 0) - continue; - if (plane.pln_land == lp->lnd_uid) { - plane.pln_land = -1; - if (sect.sct_own != lp->lnd_own) { - wu(0, plane.pln_own, "Plane %d scuttled in %s\n", - plane.pln_uid, - xyas(plane.pln_x, plane.pln_y, plane.pln_own)); - plane.pln_effic = 0; - } else { - wu(0, plane.pln_own, - "Plane %d transferred off unit %d to %s\n", - plane.pln_uid, lp->lnd_uid, - xyas(plane.pln_x, plane.pln_y, plane.pln_own)); - } - putplane(plane.pln_uid, &plane); + plane.pln_land = -1; + if (sect.sct_own != lp->lnd_own) { + wu(0, plane.pln_own, "Plane %d scuttled in %s\n", + plane.pln_uid, + xyas(plane.pln_x, plane.pln_y, plane.pln_own)); + plane.pln_effic = 0; + } else { + wu(0, plane.pln_own, + "Plane %d transferred off unit %d to %s\n", + plane.pln_uid, lp->lnd_uid, + xyas(plane.pln_x, plane.pln_y, plane.pln_own)); } + putplane(plane.pln_uid, &plane); } - snxtitem_all(&ni, EF_LAND); + snxtitem_cargo(&ni, EF_LAND, EF_LAND, lp->lnd_uid); while (nxtitem(&ni, &land)) { - if (land.lnd_own == 0) - continue; - if (land.lnd_land == lp->lnd_uid) { - land.lnd_land = -1; - if (sect.sct_own == lp->lnd_own) { - wu(0, land.lnd_own, - "Land unit %d transferred off unit %d to %s\n", - land.lnd_uid, lp->lnd_uid, - xyas(land.lnd_x, land.lnd_y, land.lnd_own)); - putland(land.lnd_uid, &land); - } else - scuttle_land(&land); - } + land.lnd_land = -1; + if (sect.sct_own == lp->lnd_own) { + wu(0, land.lnd_own, + "Land unit %d transferred off unit %d to %s\n", + land.lnd_uid, lp->lnd_uid, + xyas(land.lnd_x, land.lnd_y, land.lnd_own)); + putland(land.lnd_uid, &land); + } else + scuttle_land(&land); } lp->lnd_effic = 0; putland(lp->lnd_uid, lp); diff --git a/src/lib/subs/takeover.c b/src/lib/subs/takeover.c index 962432c72..06ef28898 100644 --- a/src/lib/subs/takeover.c +++ b/src/lib/subs/takeover.c @@ -229,12 +229,8 @@ takeover_ship(struct shpstr *sp, natid newown, int hostile) pp = &p; lp = &llp; /* Take over planes */ - snxtitem_all(&ni, EF_PLANE); + snxtitem_cargo(&ni, EF_PLANE, EF_SHIP, sp->shp_uid); while (nxtitem(&ni, pp)) { - if (pp->pln_ship != sp->shp_uid) - continue; - if (pp->pln_own == 0) - continue; if (hostile) { if (pp->pln_effic > PLANE_MINEFF) pp->pln_effic = PLANE_MINEFF; @@ -249,14 +245,9 @@ takeover_ship(struct shpstr *sp, natid newown, int hostile) putplane(pp->pln_uid, pp); } /* Take over land units */ - snxtitem_all(&ni, EF_LAND); - while (nxtitem(&ni, lp)) { - if (lp->lnd_ship != sp->shp_uid) - continue; - if (lp->lnd_own == 0) - continue; + snxtitem_cargo(&ni, EF_LAND, EF_SHIP, sp->shp_uid); + while (nxtitem(&ni, lp)) takeover_land(lp, newown, hostile); - } putship(sp->shp_uid, sp); } @@ -285,12 +276,8 @@ takeover_land(struct lndstr *landp, natid newown, int hostile) pp = &p; lp = &llp; /* Take over planes */ - snxtitem_all(&ni, EF_PLANE); + snxtitem_cargo(&ni, EF_PLANE, EF_LAND, landp->lnd_uid); while (nxtitem(&ni, pp)) { - if (pp->pln_land != landp->lnd_uid) - continue; - if (pp->pln_own == 0) - continue; if (hostile) { if (pp->pln_effic > PLANE_MINEFF) pp->pln_effic = PLANE_MINEFF; @@ -305,13 +292,8 @@ takeover_land(struct lndstr *landp, natid newown, int hostile) putplane(pp->pln_uid, pp); } /* Take over land units */ - snxtitem_all(&ni, EF_LAND); - while (nxtitem(&ni, lp)) { - if (lp->lnd_land != landp->lnd_uid) - continue; - if (lp->lnd_own == 0) - continue; + snxtitem_cargo(&ni, EF_LAND, EF_LAND, landp->lnd_uid); + while (nxtitem(&ni, lp)) takeover_land(lp, newown, hostile); - } putland(landp->lnd_uid, landp); } diff --git a/src/lib/subs/trdsub.c b/src/lib/subs/trdsub.c index 80ba1b896..512b2fbcf 100644 --- a/src/lib/subs/trdsub.c +++ b/src/lib/subs/trdsub.c @@ -130,37 +130,31 @@ trade_desc(struct trdstr *tp, union empobj_storage *tgp) } pr("] #%d", tp->trd_unitid); if (opt_SHOWPLANE) { - snxtitem_all(&ni, EF_PLANE); + snxtitem_cargo(&ni, EF_PLANE, EF_SHIP, sp->shp_uid); while (nxtitem(&ni, &plane)) { - if (plane.pln_ship == sp->shp_uid && plane.pln_own != 0) { - pr("\n\t\t\t\t tech %3d %3d%% %s #%d", - plane.pln_tech, - plane.pln_effic, - plchr[(int)plane.pln_type].pl_name, plane.pln_uid); - if (getnuke(nuk_on_plane(&plane), &nuke)) - pr("(%s)", nchr[nuke.nuk_type].n_name); - } + pr("\n\t\t\t\t tech %3d %3d%% %s #%d", + plane.pln_tech, + plane.pln_effic, + plchr[(int)plane.pln_type].pl_name, plane.pln_uid); + if (getnuke(nuk_on_plane(&plane), &nuke)) + pr("(%s)", nchr[nuke.nuk_type].n_name); } - snxtitem_all(&ni, EF_LAND); + snxtitem_cargo(&ni, EF_LAND, EF_SHIP, sp->shp_uid); while (nxtitem(&ni, &land)) { - if (land.lnd_ship == sp->shp_uid && land.lnd_own != 0) { - pr("\n\t\t\t\t tech %3d %3d%% %s #%d", - land.lnd_tech, - land.lnd_effic, - lchr[(int)land.lnd_type].l_name, land.lnd_uid); - if (pln_first_on_land(&land) >= 0) { - snxtitem_all(&ni, EF_PLANE); - while (nxtitem(&ni, &plane)) { - if (plane.pln_land == land.lnd_uid) { - pr("\n\t\t\t\t tech %3d %3d%% %s #%d", - plane.pln_tech, - plane.pln_effic, - plchr[(int)plane.pln_type].pl_name, - plane.pln_uid); - if (getnuke(nuk_on_plane(&plane), &nuke)) - pr("(%s)", nchr[nuke.nuk_type].n_name); - } - } + pr("\n\t\t\t\t tech %3d %3d%% %s #%d", + land.lnd_tech, + land.lnd_effic, + lchr[(int)land.lnd_type].l_name, land.lnd_uid); + if (pln_first_on_land(&land) >= 0) { + snxtitem_cargo(&ni, EF_PLANE, EF_LAND, land.lnd_uid); + while (nxtitem(&ni, &plane)) { + pr("\n\t\t\t\t tech %3d %3d%% %s #%d", + plane.pln_tech, + plane.pln_effic, + plchr[(int)plane.pln_type].pl_name, + plane.pln_uid); + if (getnuke(nuk_on_plane(&plane), &nuke)) + pr("(%s)", nchr[nuke.nuk_type].n_name); } } } @@ -184,16 +178,14 @@ trade_desc(struct trdstr *tp, union empobj_storage *tgp) } pr("] #%d", tp->trd_unitid); if (opt_SHOWPLANE) { - snxtitem_all(&ni, EF_PLANE); + snxtitem_cargo(&ni, EF_PLANE, EF_LAND, lp->lnd_uid); while (nxtitem(&ni, &plane)) { - if (plane.pln_land == lp->lnd_uid && plane.pln_own != 0) { - pr("\n\t\t\t\t tech %3d %3d%% %s #%d", - plane.pln_tech, - plane.pln_effic, - plchr[(int)plane.pln_type].pl_name, plane.pln_uid); - if (getnuke(nuk_on_plane(&plane), &nuke)) - pr("(%s)", nchr[nuke.nuk_type].n_name); - } + pr("\n\t\t\t\t tech %3d %3d%% %s #%d", + plane.pln_tech, + plane.pln_effic, + plchr[(int)plane.pln_type].pl_name, plane.pln_uid); + if (getnuke(nuk_on_plane(&plane), &nuke)) + pr("(%s)", nchr[nuke.nuk_type].n_name); } } getsect(lp->lnd_x, lp->lnd_y, §); diff --git a/src/lib/update/ship.c b/src/lib/update/ship.c index 59546ddb6..e1e7e0710 100644 --- a/src/lib/update/ship.c +++ b/src/lib/update/ship.c @@ -388,10 +388,8 @@ feed_ship(struct shpstr *sp, int etus) needed - sp->shp_item[I_FOOD]); if (needed > sp->shp_item[I_FOOD]) { /* take from embarked land units, but don't starve them */ - snxtitem_all(&ni, EF_LAND); + snxtitem_cargo(&ni, EF_LAND, EF_SHIP, sp->shp_uid); while ((lp = nxtitemp(&ni)) && needed > sp->shp_item[I_FOOD]) { - if (lp->lnd_ship != sp->shp_uid) - continue; give = lp->lnd_item[I_FOOD] - food_needed(lp->lnd_item, etus); if (give < 1.0) continue; -- 2.43.0