summaryrefslogtreecommitdiffstats
path: root/larn/savelev.c
diff options
context:
space:
mode:
authorcgd <cgd@NetBSD.org>1993-03-21 09:45:37 +0000
committercgd <cgd@NetBSD.org>1993-03-21 09:45:37 +0000
commit77e3814f0c0e3dea4d0032e25666f77e6f83bfff (patch)
tree7eddfcbf3dd12089e71dc3fafb0a106c5c5766c7 /larn/savelev.c
parente81d63576b2e46ab90da7d75fa155ea57ee4d32e (diff)
downloadbsdgames-darwin-77e3814f0c0e3dea4d0032e25666f77e6f83bfff.tar.gz
bsdgames-darwin-77e3814f0c0e3dea4d0032e25666f77e6f83bfff.tar.zst
bsdgames-darwin-77e3814f0c0e3dea4d0032e25666f77e6f83bfff.zip
initial import of 386bsd-0.1 sources
Diffstat (limited to 'larn/savelev.c')
-rw-r--r--larn/savelev.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/larn/savelev.c b/larn/savelev.c
new file mode 100644
index 00000000..4419acb9
--- /dev/null
+++ b/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;
+ }
+ }