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 } 49