xref: /dragonfly/games/larn/savelev.c (revision 9348a738)
1 /* savelev.c		 Larn is copyrighted 1986 by Noah Morgan. */
2 /* $FreeBSD: src/games/larn/savelev.c,v 1.3 1999/11/16 02:57:24 billf Exp $ */
3 /* $DragonFly: src/games/larn/savelev.c,v 1.3 2006/08/26 17:05:05 pavalos Exp $ */
4 #include "header.h"
5 
6 /*
7  *	routine to save the present level into storage
8  */
9 void
10 savelevel(void)
11 {
12 	struct cel *pcel;
13 	char *pitem, *pknow, *pmitem;
14 	short *phitp, *piarg;
15 	struct cel *pecel;
16 	pcel = &cell[level * MAXX * MAXY];	/* pointer to this level's cells */
17 	pecel = pcel + MAXX * MAXY;	/* pointer to past end of this level's cells */
18 	pitem = item[0];
19 	piarg = iarg[0];
20 	pknow = know[0];
21 	pmitem = mitem[0];
22 	phitp = hitp[0];
23 	while (pcel < pecel) {
24 		pcel->mitem = *pmitem++;
25 		pcel->hitp = *phitp++;
26 		pcel->item = *pitem++;
27 		pcel->know = *pknow++;
28 		pcel++->iarg = *piarg++;
29 	}
30 }
31 
32 /*
33  *	routine to restore a level from storage
34  */
35 void
36 getlevel(void)
37 {
38 	struct cel *pcel;
39 	char *pitem, *pknow, *pmitem;
40 	short *phitp, *piarg;
41 	struct cel *pecel;
42 	pcel = &cell[level * MAXX * MAXY];	/* pointer to this level's cells */
43 	pecel = pcel + MAXX * MAXY;	/* pointer to past end of this level's cells */
44 	pitem = item[0];
45 	piarg = iarg[0];
46 	pknow = know[0];
47 	pmitem = mitem[0];
48 	phitp = hitp[0];
49 	while (pcel < pecel) {
50 		*pmitem++ = pcel->mitem;
51 		*phitp++ = pcel->hitp;
52 		*pitem++ = pcel->item;
53 		*pknow++ = pcel->know;
54 		*piarg++ = pcel++->iarg;
55 	}
56 }
57