1 /*        $NetBSD: savelev.c,v 1.7 2012/06/19 05:30:44 dholland Exp $ */
2 
3 /* savelev.c                   Larn is copyrighted 1986 by Noah Morgan. */
4 #include <sys/cdefs.h>
5 #ifndef lint
6 __RCSID("$NetBSD: savelev.c,v 1.7 2012/06/19 05:30:44 dholland Exp $");
7 #endif                                  /* not lint */
8 #include "header.h"
9 #include "extern.h"
10 
11 /*
12  *        routine to save the present level into storage
13  */
14 void
savelevel(void)15 savelevel(void)
16 {
17           struct cel *pcel;
18           u_char  *pitem, *pknow, *pmitem;
19           short *phitp, *piarg;
20           struct cel *pecel;
21           pcel = &cell[level * MAXX * MAXY];      /* pointer to this level's
22                                                              * cells */
23           pecel = pcel + MAXX * MAXY;   /* pointer to past end of this
24                                                    * level's cells */
25           pitem = item[0];
26           piarg = iarg[0];
27           pknow = know[0];
28           pmitem = mitem[0];
29           phitp = hitp[0];
30           while (pcel < pecel) {
31                     pcel->mitem = *pmitem++;
32                     pcel->hitp = *phitp++;
33                     pcel->item = *pitem++;
34                     pcel->know = *pknow++;
35                     pcel->iarg = *piarg++;
36                     pcel++;
37           }
38 }
39 
40 /*
41  *        routine to restore a level from storage
42  */
43 void
getlevel(void)44 getlevel(void)
45 {
46           struct cel *pcel;
47           u_char  *pitem, *pknow, *pmitem;
48           short *phitp, *piarg;
49           struct cel *pecel;
50           pcel = &cell[level * MAXX * MAXY];      /* pointer to this level's
51                                                              * cells */
52           pecel = pcel + MAXX * MAXY;   /* pointer to past end of this
53                                                    * level's cells */
54           pitem = item[0];
55           piarg = iarg[0];
56           pknow = know[0];
57           pmitem = mitem[0];
58           phitp = hitp[0];
59           while (pcel < pecel) {
60                     *pmitem++ = pcel->mitem;
61                     *phitp++ = pcel->hitp;
62                     *pitem++ = pcel->item;
63                     *pknow++ = pcel->know;
64                     *piarg++ = pcel->iarg;
65                     pcel++;
66           }
67 }
68