summaryrefslogtreecommitdiffstats
path: root/games/larn/savelev.c
diff options
context:
space:
mode:
authorjkh <jkh@FreeBSD.org>1994-09-04 04:03:31 +0000
committerjkh <jkh@FreeBSD.org>1994-09-04 04:03:31 +0000
commit057afceb86e030ad65b0130436860d9a18066186 (patch)
treea0ced9c9b9278eb776d89cd2565c27ddcf020b51 /games/larn/savelev.c
parenteedec95276cdb8aef98e92c5371000f10b8d6ba7 (diff)
downloadFreeBSD-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.c47
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;
+ }
+ }
OpenPOWER on IntegriCloud