xref: /dragonfly/games/larn/savelev.c (revision f02303f9)
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]; piarg=iarg[0]; pknow=know[0]; pmitem=mitem[0]; phitp=hitp[0];
19 	while (pcel < pecel)
20 		{
21 		pcel->mitem  = *pmitem++;
22 		pcel->hitp   = *phitp++;
23 		pcel->item   = *pitem++;
24 		pcel->know   = *pknow++;
25 		pcel++->iarg = *piarg++;
26 		}
27 	}
28 
29 /*
30  *	routine to restore a level from storage
31  */
32 void
33 getlevel(void)
34 	{
35 	struct cel *pcel;
36 	char *pitem,*pknow,*pmitem;
37 	short *phitp,*piarg;
38 	struct cel *pecel;
39 	pcel = &cell[level*MAXX*MAXY];	/* pointer to this level's cells */
40 	pecel = pcel + MAXX*MAXY;	/* pointer to past end of this level's cells */
41 	pitem=item[0]; piarg=iarg[0]; pknow=know[0]; pmitem=mitem[0]; phitp=hitp[0];
42 	while (pcel < pecel)
43 		{
44 		*pmitem++ = pcel->mitem;
45 		*phitp++ = pcel->hitp;
46 		*pitem++ = pcel->item;
47 		*pknow++ = pcel->know;
48 		*piarg++ = pcel++->iarg;
49 		}
50 	}
51