diff options
author | jkh <jkh@FreeBSD.org> | 1994-09-04 04:03:31 +0000 |
---|---|---|
committer | jkh <jkh@FreeBSD.org> | 1994-09-04 04:03:31 +0000 |
commit | 057afceb86e030ad65b0130436860d9a18066186 (patch) | |
tree | a0ced9c9b9278eb776d89cd2565c27ddcf020b51 /games/larn/savelev.c | |
parent | eedec95276cdb8aef98e92c5371000f10b8d6ba7 (diff) | |
download | FreeBSD-src-057afceb86e030ad65b0130436860d9a18066186.zip FreeBSD-src-057afceb86e030ad65b0130436860d9a18066186.tar.gz |
Bring in the 4.4 Lite games directory, modulo man page changes and segregation
of the x11 based games. I'm not going to tag the originals with bsd_44_lite
and do this in two stages since it's just not worth it for this collection,
and I've got directory renames to deal with that way. Bleah.
Submitted by: jkh
Diffstat (limited to 'games/larn/savelev.c')
-rw-r--r-- | games/larn/savelev.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/games/larn/savelev.c b/games/larn/savelev.c new file mode 100644 index 0000000..4419acb --- /dev/null +++ b/games/larn/savelev.c @@ -0,0 +1,47 @@ +/* savelev.c Larn is copyrighted 1986 by Noah Morgan. */ +#include "header.h" +extern struct cel *cell; + +/* + * routine to save the present level into storage + */ +savelevel() + { + register struct cel *pcel; + register char *pitem,*pknow,*pmitem; + register short *phitp,*piarg; + register struct cel *pecel; + pcel = &cell[level*MAXX*MAXY]; /* pointer to this level's cells */ + pecel = pcel + MAXX*MAXY; /* pointer to past end of this level's cells */ + pitem=item[0]; piarg=iarg[0]; pknow=know[0]; pmitem=mitem[0]; phitp=hitp[0]; + while (pcel < pecel) + { + pcel->mitem = *pmitem++; + pcel->hitp = *phitp++; + pcel->item = *pitem++; + pcel->know = *pknow++; + pcel++->iarg = *piarg++; + } + } + +/* + * routine to restore a level from storage + */ +getlevel() + { + register struct cel *pcel; + register char *pitem,*pknow,*pmitem; + register short *phitp,*piarg; + register struct cel *pecel; + pcel = &cell[level*MAXX*MAXY]; /* pointer to this level's cells */ + pecel = pcel + MAXX*MAXY; /* pointer to past end of this level's cells */ + pitem=item[0]; piarg=iarg[0]; pknow=know[0]; pmitem=mitem[0]; phitp=hitp[0]; + while (pcel < pecel) + { + *pmitem++ = pcel->mitem; + *phitp++ = pcel->hitp; + *pitem++ = pcel->item; + *pknow++ = pcel->know; + *piarg++ = pcel++->iarg; + } + } |