xref: /dragonfly/games/larn/savelev.c (revision 86d7f5d305c6adaa56ff4582ece9859d73106103)
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
savelevel(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
getlevel(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