Commit | Line | Data |
---|---|---|
12458000 WJ |
1 | /* savelev.c Larn is copyrighted 1986 by Noah Morgan. */ |
2 | #include "header.h" | |
3 | extern struct cel *cell; | |
4 | ||
5 | /* | |
6 | * routine to save the present level into storage | |
7 | */ | |
8 | savelevel() | |
9 | { | |
10 | register struct cel *pcel; | |
11 | register char *pitem,*pknow,*pmitem; | |
12 | register short *phitp,*piarg; | |
13 | register struct cel *pecel; | |
14 | pcel = &cell[level*MAXX*MAXY]; /* pointer to this level's cells */ | |
15 | pecel = pcel + MAXX*MAXY; /* pointer to past end of this level's cells */ | |
16 | pitem=item[0]; piarg=iarg[0]; pknow=know[0]; pmitem=mitem[0]; phitp=hitp[0]; | |
17 | while (pcel < pecel) | |
18 | { | |
19 | pcel->mitem = *pmitem++; | |
20 | pcel->hitp = *phitp++; | |
21 | pcel->item = *pitem++; | |
22 | pcel->know = *pknow++; | |
23 | pcel++->iarg = *piarg++; | |
24 | } | |
25 | } | |
26 | ||
27 | /* | |
28 | * routine to restore a level from storage | |
29 | */ | |
30 | getlevel() | |
31 | { | |
32 | register struct cel *pcel; | |
33 | register char *pitem,*pknow,*pmitem; | |
34 | register short *phitp,*piarg; | |
35 | register struct cel *pecel; | |
36 | pcel = &cell[level*MAXX*MAXY]; /* pointer to this level's cells */ | |
37 | pecel = pcel + MAXX*MAXY; /* pointer to past end of this level's cells */ | |
38 | pitem=item[0]; piarg=iarg[0]; pknow=know[0]; pmitem=mitem[0]; phitp=hitp[0]; | |
39 | while (pcel < pecel) | |
40 | { | |
41 | *pmitem++ = pcel->mitem; | |
42 | *phitp++ = pcel->hitp; | |
43 | *pitem++ = pcel->item; | |
44 | *pknow++ = pcel->know; | |
45 | *piarg++ = pcel++->iarg; | |
46 | } | |
47 | } |