From 136132773b88f2ed776d33a17a4e8565fbdbc1f1 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Sat, 6 Sep 2008 11:48:49 -0400 Subject: [PATCH] New lost_and_found() to record ownership changes. Factors out the common makelost()/makenotlost() pattern. --- include/lost.h | 1 + src/lib/subs/land.c | 11 +++-------- src/lib/subs/lostsub.c | 14 ++++++++++++++ src/lib/subs/nuke.c | 11 +++-------- src/lib/subs/plane.c | 11 +++-------- src/lib/subs/sect.c | 11 +++-------- src/lib/subs/ship.c | 11 +++-------- src/lib/update/revolt.c | 6 ++---- 8 files changed, 32 insertions(+), 44 deletions(-) diff --git a/include/lost.h b/include/lost.h index a6624637..5cd62b7b 100644 --- a/include/lost.h +++ b/include/lost.h @@ -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); diff --git a/src/lib/subs/land.c b/src/lib/subs/land.c index 41ebf794..9bc647eb 100644 --- a/src/lib/subs/land.c +++ b/src/lib/subs/land.c @@ -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; } diff --git a/src/lib/subs/lostsub.c b/src/lib/subs/lostsub.c index 914d2ec3..b254f8ab 100644 --- a/src/lib/subs/lostsub.c +++ b/src/lib/subs/lostsub.c @@ -39,6 +39,20 @@ 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) { diff --git a/src/lib/subs/nuke.c b/src/lib/subs/nuke.c index 938f8bf5..6f38e0e8 100644 --- a/src/lib/subs/nuke.c +++ b/src/lib/subs/nuke.c @@ -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; } diff --git a/src/lib/subs/plane.c b/src/lib/subs/plane.c index a5fb8133..18f9401e 100644 --- a/src/lib/subs/plane.c +++ b/src/lib/subs/plane.c @@ -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; } diff --git a/src/lib/subs/sect.c b/src/lib/subs/sect.c index 02f979b5..6944688e 100644 --- a/src/lib/subs/sect.c +++ b/src/lib/subs/sect.c @@ -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; } diff --git a/src/lib/subs/ship.c b/src/lib/subs/ship.c index 16b8e5b5..169244a4 100644 --- a/src/lib/subs/ship.c +++ b/src/lib/subs/ship.c @@ -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; } diff --git a/src/lib/update/revolt.c b/src/lib/update/revolt.c index 8e379b67..65472588 100644 --- a/src/lib/update/revolt.c +++ b/src/lib/update/revolt.c @@ -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;