]> git.pond.sub.org Git - empserver/commitdiff
New lost_and_found() to record ownership changes.
authorMarkus Armbruster <armbru@pond.sub.org>
Sat, 6 Sep 2008 15:48:49 +0000 (11:48 -0400)
committerMarkus Armbruster <armbru@pond.sub.org>
Tue, 9 Sep 2008 01:28:29 +0000 (21:28 -0400)
Factors out the common makelost()/makenotlost() pattern.

include/lost.h
src/lib/subs/land.c
src/lib/subs/lostsub.c
src/lib/subs/nuke.c
src/lib/subs/plane.c
src/lib/subs/sect.c
src/lib/subs/ship.c
src/lib/update/revolt.c

index a662463798aeddec11176919d3c1e9cde048f9ce..5cd62b7bc898bd8b1cc0cc8330336034ee25d0b2 100644 (file)
@@ -55,6 +55,7 @@ struct loststr {
 #define putlost(n, p) ef_write(EF_LOST, (n), (p))
 
 /* src/lib/subs/lostsub.c */
+extern void lost_and_found(int, natid, natid, int, coord, coord);
 extern void makelost(short, natid, short, coord, coord);
 extern void makenotlost(short, natid, short, coord, coord);
 
index 41ebf794a6c66d3a92dbd8cfa49b6e743cef8f3d..9bc647ebf879915659936c6b06df0a7755c583d2 100644 (file)
@@ -150,14 +150,9 @@ lnd_prewrite(int n, void *old, void *new)
     }
 
     /* We've avoided assigning to llp->lnd_own, in case oldsp == sp */
-    if (oldlp->lnd_own != own) {
-       if (oldlp->lnd_own)
-           makelost(EF_LAND, oldlp->lnd_own,
-                    llp->lnd_uid, llp->lnd_x, llp->lnd_y);
-       if (own)
-           makenotlost(EF_LAND, own,
-                       llp->lnd_uid, llp->lnd_x, llp->lnd_y);
-    }
+    if (oldlp->lnd_own != own)
+       lost_and_found(EF_LAND, oldlp->lnd_own, own,
+                      llp->lnd_uid, llp->lnd_x, llp->lnd_y);
 
     llp->lnd_own = own;
 }
index 914d2ec3b7038bbc40819ebd4a4f87d0fa3045a1..b254f8ab448004618d0c2f4b79bd292846a337b5 100644 (file)
 
 static int findlost(short, natid, short, coord, coord, int);
 
+/*
+ * Record item ID of type TYPE changed owner from EXOWN to OWN at X, Y.
+ */
+void
+lost_and_found(int type, natid exown, natid own, int id, coord x, coord y)
+{
+    if (exown == own)
+       return;
+    if (exown)
+       makelost(type, exown, id, x, y);
+    if (own)
+       makenotlost(type, own, id, x, y);
+}
+
 void
 makelost(short type, natid owner, short id, coord x, coord y)
 {
index 938f8bf5ffd28cc60e433c4971d765c71565d31c..6f38e0e8984401a20749f44e4f26af7ce2e71766 100644 (file)
@@ -84,14 +84,9 @@ nuk_prewrite(int n, void *old, void *new)
        own = 0;
 
     /* We've avoided assigning to np->nuk_own, in case oldsp == sp */
-    if (oldnp->nuk_own != own) {
-       if (oldnp->nuk_own)
-           makelost(EF_NUKE, oldnp->nuk_own,
-                    np->nuk_uid, np->nuk_x, np->nuk_y);
-       if (own)
-           makenotlost(EF_NUKE, own,
-                       np->nuk_uid, np->nuk_x, np->nuk_y);
-    }
+    if (oldnp->nuk_own != own)
+       lost_and_found(EF_NUKE, oldnp->nuk_own, own,
+                      np->nuk_uid, np->nuk_x, np->nuk_y);
 
     np->nuk_own = own;
 }
index a5fb8133b4a09bd1c8a46966e3da082dd3c7fc18..18f9401e539026da8868afea912c8a21e9c2952d 100644 (file)
@@ -130,14 +130,9 @@ pln_prewrite(int n, void *old, void *new)
     }
 
     /* We've avoided assigning to pp->pln_own, in case oldsp == sp */
-    if (oldpp->pln_own != own) {
-       if (oldpp->pln_own)
-           makelost(EF_PLANE, oldpp->pln_own,
-                    pp->pln_uid, pp->pln_x, pp->pln_y);
-       if (own)
-           makenotlost(EF_PLANE, own,
-                       pp->pln_uid, pp->pln_x, pp->pln_y);
-    }
+    if (oldpp->pln_own != own)
+       lost_and_found(EF_PLANE, oldpp->pln_own, own,
+                      pp->pln_uid, pp->pln_x, pp->pln_y);
 
     pp->pln_own = own;
 }
index 02f979b5a3a92129fd9f422026e388b1103d01f9..6944688ea2106e41aa46e2d72c580ae622c1209b 100644 (file)
@@ -88,14 +88,9 @@ sct_prewrite(int id, void *old, void *new)
     }
 
     /* We've avoided assigning to sp->sct_own, in case oldsp == sp */
-    if (oldsp->sct_own != own) {
-       if (oldsp->sct_own)
-           makelost(EF_SECTOR, oldsp->sct_own,
-                    0, sp->sct_x, sp->sct_y);
-       if (own)
-           makenotlost(EF_SECTOR, own,
-                       0, sp->sct_x, sp->sct_y);
-    }
+    if (oldsp->sct_own != own)
+       lost_and_found(EF_SECTOR, oldsp->sct_own, own,
+                      0, sp->sct_x, sp->sct_y);
 
     sp->sct_own = own;
 }
index 16b8e5b5e2f6812623a6871713ca49b2aade91cd..169244a412b9b0289dc7c43b006849fd6b57dfa8 100644 (file)
@@ -98,14 +98,9 @@ shp_prewrite(int n, void *old, void *new)
     }
 
     /* We've avoided assigning to sp->shp_own, in case oldsp == sp */
-    if (oldsp->shp_own != own) {
-       if (oldsp->shp_own)
-           makelost(EF_SHIP, oldsp->shp_own,
-                    sp->shp_uid, sp->shp_x, sp->shp_y);
-       if (own)
-           makenotlost(EF_SHIP, own,
-                       sp->shp_uid, sp->shp_x, sp->shp_y);
-    }
+    if (oldsp->shp_own != own)
+       lost_and_found(EF_SHIP, oldsp->shp_own, own,
+                      sp->shp_uid, sp->shp_x, sp->shp_y);
 
     sp->shp_own = own;
 }
index 8e379b6715acc5e4edbab5e43cdb8f4374a03c35..65472588bde8e2f6849bd7b51cfe5357a8c19ead 100644 (file)
@@ -313,10 +313,8 @@ guerrilla(struct sctstr *sp)
        if (sp->sct_own == sp->sct_oldown)
            sp->sct_oldown = 0;
        else {
-           makelost(EF_SECTOR, sp->sct_own,
-                    0, sp->sct_x, sp->sct_y);
-           makenotlost(EF_SECTOR, sp->sct_oldown,
-                       0, sp->sct_x, sp->sct_y);
+           lost_and_found(EF_SECTOR, sp->sct_own, sp->sct_oldown,
+                          0, sp->sct_x, sp->sct_y);
            takeover(sp, sp->sct_oldown);
        }
        sp->sct_mobil = oldmob;