New lost_and_found() to record ownership changes.
Factors out the common makelost()/makenotlost() pattern.
This commit is contained in:
parent
0d139ee1d1
commit
136132773b
8 changed files with 32 additions and 44 deletions
|
@ -55,6 +55,7 @@ struct loststr {
|
||||||
#define putlost(n, p) ef_write(EF_LOST, (n), (p))
|
#define putlost(n, p) ef_write(EF_LOST, (n), (p))
|
||||||
|
|
||||||
/* src/lib/subs/lostsub.c */
|
/* 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 makelost(short, natid, short, coord, coord);
|
||||||
extern void makenotlost(short, natid, short, coord, coord);
|
extern void makenotlost(short, natid, short, coord, coord);
|
||||||
|
|
||||||
|
|
|
@ -150,14 +150,9 @@ lnd_prewrite(int n, void *old, void *new)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We've avoided assigning to llp->lnd_own, in case oldsp == sp */
|
/* We've avoided assigning to llp->lnd_own, in case oldsp == sp */
|
||||||
if (oldlp->lnd_own != own) {
|
if (oldlp->lnd_own != own)
|
||||||
if (oldlp->lnd_own)
|
lost_and_found(EF_LAND, oldlp->lnd_own, own,
|
||||||
makelost(EF_LAND, oldlp->lnd_own,
|
llp->lnd_uid, llp->lnd_x, llp->lnd_y);
|
||||||
llp->lnd_uid, llp->lnd_x, llp->lnd_y);
|
|
||||||
if (own)
|
|
||||||
makenotlost(EF_LAND, own,
|
|
||||||
llp->lnd_uid, llp->lnd_x, llp->lnd_y);
|
|
||||||
}
|
|
||||||
|
|
||||||
llp->lnd_own = own;
|
llp->lnd_own = own;
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,6 +39,20 @@
|
||||||
|
|
||||||
static int findlost(short, natid, short, coord, coord, int);
|
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
|
void
|
||||||
makelost(short type, natid owner, short id, coord x, coord y)
|
makelost(short type, natid owner, short id, coord x, coord y)
|
||||||
{
|
{
|
||||||
|
|
|
@ -84,14 +84,9 @@ nuk_prewrite(int n, void *old, void *new)
|
||||||
own = 0;
|
own = 0;
|
||||||
|
|
||||||
/* We've avoided assigning to np->nuk_own, in case oldsp == sp */
|
/* We've avoided assigning to np->nuk_own, in case oldsp == sp */
|
||||||
if (oldnp->nuk_own != own) {
|
if (oldnp->nuk_own != own)
|
||||||
if (oldnp->nuk_own)
|
lost_and_found(EF_NUKE, oldnp->nuk_own, own,
|
||||||
makelost(EF_NUKE, oldnp->nuk_own,
|
np->nuk_uid, np->nuk_x, np->nuk_y);
|
||||||
np->nuk_uid, np->nuk_x, np->nuk_y);
|
|
||||||
if (own)
|
|
||||||
makenotlost(EF_NUKE, own,
|
|
||||||
np->nuk_uid, np->nuk_x, np->nuk_y);
|
|
||||||
}
|
|
||||||
|
|
||||||
np->nuk_own = own;
|
np->nuk_own = own;
|
||||||
}
|
}
|
||||||
|
|
|
@ -130,14 +130,9 @@ pln_prewrite(int n, void *old, void *new)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We've avoided assigning to pp->pln_own, in case oldsp == sp */
|
/* We've avoided assigning to pp->pln_own, in case oldsp == sp */
|
||||||
if (oldpp->pln_own != own) {
|
if (oldpp->pln_own != own)
|
||||||
if (oldpp->pln_own)
|
lost_and_found(EF_PLANE, oldpp->pln_own, own,
|
||||||
makelost(EF_PLANE, oldpp->pln_own,
|
pp->pln_uid, pp->pln_x, pp->pln_y);
|
||||||
pp->pln_uid, pp->pln_x, pp->pln_y);
|
|
||||||
if (own)
|
|
||||||
makenotlost(EF_PLANE, own,
|
|
||||||
pp->pln_uid, pp->pln_x, pp->pln_y);
|
|
||||||
}
|
|
||||||
|
|
||||||
pp->pln_own = own;
|
pp->pln_own = own;
|
||||||
}
|
}
|
||||||
|
|
|
@ -88,14 +88,9 @@ sct_prewrite(int id, void *old, void *new)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We've avoided assigning to sp->sct_own, in case oldsp == sp */
|
/* We've avoided assigning to sp->sct_own, in case oldsp == sp */
|
||||||
if (oldsp->sct_own != own) {
|
if (oldsp->sct_own != own)
|
||||||
if (oldsp->sct_own)
|
lost_and_found(EF_SECTOR, oldsp->sct_own, own,
|
||||||
makelost(EF_SECTOR, oldsp->sct_own,
|
0, sp->sct_x, sp->sct_y);
|
||||||
0, sp->sct_x, sp->sct_y);
|
|
||||||
if (own)
|
|
||||||
makenotlost(EF_SECTOR, own,
|
|
||||||
0, sp->sct_x, sp->sct_y);
|
|
||||||
}
|
|
||||||
|
|
||||||
sp->sct_own = own;
|
sp->sct_own = own;
|
||||||
}
|
}
|
||||||
|
|
|
@ -98,14 +98,9 @@ shp_prewrite(int n, void *old, void *new)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We've avoided assigning to sp->shp_own, in case oldsp == sp */
|
/* We've avoided assigning to sp->shp_own, in case oldsp == sp */
|
||||||
if (oldsp->shp_own != own) {
|
if (oldsp->shp_own != own)
|
||||||
if (oldsp->shp_own)
|
lost_and_found(EF_SHIP, oldsp->shp_own, own,
|
||||||
makelost(EF_SHIP, oldsp->shp_own,
|
sp->shp_uid, sp->shp_x, sp->shp_y);
|
||||||
sp->shp_uid, sp->shp_x, sp->shp_y);
|
|
||||||
if (own)
|
|
||||||
makenotlost(EF_SHIP, own,
|
|
||||||
sp->shp_uid, sp->shp_x, sp->shp_y);
|
|
||||||
}
|
|
||||||
|
|
||||||
sp->shp_own = own;
|
sp->shp_own = own;
|
||||||
}
|
}
|
||||||
|
|
|
@ -313,10 +313,8 @@ guerrilla(struct sctstr *sp)
|
||||||
if (sp->sct_own == sp->sct_oldown)
|
if (sp->sct_own == sp->sct_oldown)
|
||||||
sp->sct_oldown = 0;
|
sp->sct_oldown = 0;
|
||||||
else {
|
else {
|
||||||
makelost(EF_SECTOR, sp->sct_own,
|
lost_and_found(EF_SECTOR, sp->sct_own, sp->sct_oldown,
|
||||||
0, sp->sct_x, sp->sct_y);
|
0, sp->sct_x, sp->sct_y);
|
||||||
makenotlost(EF_SECTOR, sp->sct_oldown,
|
|
||||||
0, sp->sct_x, sp->sct_y);
|
|
||||||
takeover(sp, sp->sct_oldown);
|
takeover(sp, sp->sct_oldown);
|
||||||
}
|
}
|
||||||
sp->sct_mobil = oldmob;
|
sp->sct_mobil = oldmob;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue