Initial import from FreeBSD RELENG_4:
[dragonfly.git] / games / larn / savelev.c
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 #include "header.h"
4 extern struct cel *cell;
5
6 /*
7  *      routine to save the present level into storage
8  */
9 savelevel()
10         {
11         struct cel *pcel;
12         char *pitem,*pknow,*pmitem;
13         short *phitp,*piarg;
14         struct cel *pecel;
15         pcel = &cell[level*MAXX*MAXY];  /* pointer to this level's cells */
16         pecel = pcel + MAXX*MAXY;       /* pointer to past end of this level's cells */
17         pitem=item[0]; piarg=iarg[0]; pknow=know[0]; pmitem=mitem[0]; phitp=hitp[0];
18         while (pcel < pecel)
19                 {
20                 pcel->mitem  = *pmitem++;
21                 pcel->hitp   = *phitp++;
22                 pcel->item   = *pitem++;
23                 pcel->know   = *pknow++;
24                 pcel++->iarg = *piarg++;
25                 }
26         }
27
28 /*
29  *      routine to restore a level from storage
30  */
31 getlevel()
32         {
33         struct cel *pcel;
34         char *pitem,*pknow,*pmitem;
35         short *phitp,*piarg;
36         struct cel *pecel;
37         pcel = &cell[level*MAXX*MAXY];  /* pointer to this level's cells */
38         pecel = pcel + MAXX*MAXY;       /* pointer to past end of this level's cells */
39         pitem=item[0]; piarg=iarg[0]; pknow=know[0]; pmitem=mitem[0]; phitp=hitp[0];
40         while (pcel < pecel)
41                 {
42                 *pmitem++ = pcel->mitem;
43                 *phitp++ = pcel->hitp;
44                 *pitem++ = pcel->item;
45                 *pknow++ = pcel->know;
46                 *piarg++ = pcel++->iarg;
47                 }
48         }