]> git.pond.sub.org Git - empserver/commitdiff
(feed_ship): Work directly on land item arrays instead of copies made
authorMarkus Armbruster <armbru@pond.sub.org>
Thu, 11 Mar 2004 13:04:58 +0000 (13:04 +0000)
committerMarkus Armbruster <armbru@pond.sub.org>
Thu, 11 Mar 2004 13:04:58 +0000 (13:04 +0000)
by getvec().  This is safe, because the new code changes the item
array precisely when the old code writes back a changed copy.

src/lib/update/ship.c

index 67ee08b0cd5a57a3ef1a232f00e4ab8ba2b582ac..908ba3d17e4d45f630e290b0dd56a30844e70a4d 100644 (file)
@@ -436,7 +436,7 @@ feed_ship(struct shpstr *sp, register int *vec, int etus, int *needed,
     int can_eat, need;
     int total_people;
     int to_starve;
-    int starved, lvec[I_MAX + 1];
+    int starved;
     struct nstr_item ni;
     struct lndstr *lp;
 
@@ -463,16 +463,14 @@ feed_ship(struct shpstr *sp, register int *vec, int etus, int *needed,
                if (lp->lnd_ship != sp->shp_uid)
                    continue;
                need = ifood_eaten - vec[I_FOOD];
-               getvec(VT_ITEM, lvec, (s_char *)lp, EF_LAND);
                land_eaten = (etus * eatrate) * (double)lnd_getmil(lp);
-               if (lvec[I_FOOD] - need > land_eaten) {
+               if (lp->lnd_item[I_FOOD] - need > land_eaten) {
                    vec[I_FOOD] += need;
-                   lvec[I_FOOD] -= need;
-               } else if ((lvec[I_FOOD] - land_eaten) > 0) {
-                   vec[I_FOOD] += (lvec[I_FOOD] - land_eaten);
-                   lvec[I_FOOD] -= (lvec[I_FOOD] - land_eaten);
+                   lp->lnd_item[I_FOOD] -= need;
+               } else if (lp->lnd_item[I_FOOD] - land_eaten > 0) {
+                   vec[I_FOOD] += lp->lnd_item[I_FOOD] - land_eaten;
+                   lp->lnd_item[I_FOOD] -= lp->lnd_item[I_FOOD] - land_eaten;
                }
-               putvec(VT_ITEM, lvec, (s_char *)lp, EF_LAND);
            }
        }
     }