]> git.pond.sub.org Git - empserver/commitdiff
Use new snxtitem_cargo() to simplify a couple of loops
authorMarkus Armbruster <armbru@pond.sub.org>
Sat, 13 Sep 2008 01:22:14 +0000 (21:22 -0400)
committerMarkus Armbruster <armbru@pond.sub.org>
Sat, 13 Sep 2008 01:35:36 +0000 (21:35 -0400)
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
src/lib/commands/scut.c
src/lib/subs/takeover.c
src/lib/subs/trdsub.c
src/lib/update/ship.c

index 88985cbedbf61663cbcacfbb892cd92a1f270371..340e37a1dfbf9406f7678936b42ddcd389d4c7bf 100644 (file)
@@ -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, &sect2);
-           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, &sect2);
 
-           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);
index fa305768811fdd3bdf9911090966b27e6db02abb..f6847a29ace2ed65a46aba727ebcad07bbe511c3 100644 (file)
@@ -244,41 +244,33 @@ scuttle_ship(struct shpstr *sp)
     struct lndstr land;
 
     getsect(sp->shp_x, sp->shp_y, &sect);
-    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, &sect);
-    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);
index 962432c726841a0ea380410a9df252b9207b31f3..06ef288985c5f8fe6246c61195c39727aeaca181 100644 (file)
@@ -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);
 }
index 80ba1b8964b255afd3100dba4f7cc92044eb106b..512b2fbcf2a14f0c5aec4d3e3b3fafd0b544c516 100644 (file)
@@ -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, &sect);
index 59546ddb65687c71c879aa2858a2b0495a16f052..e1e7e0710f8c650ec7deb16b55360227fefb8638 100644 (file)
@@ -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;