Home | History | Annotate | Line # | Download | only in larn
savelev.c revision 1.2
      1 #ifndef lint
      2 static char rcsid[] = "$Id: savelev.c,v 1.2 1993/08/02 17:20:18 mycroft Exp $";
      3 #endif /* not lint */
      4 
      5 /* savelev.c		 Larn is copyrighted 1986 by Noah Morgan. */
      6 #include "header.h"
      7 extern struct cel *cell;
      8 
      9 /*
     10  *	routine to save the present level into storage
     11  */
     12 savelevel()
     13 	{
     14 	register struct cel *pcel;
     15 	register char *pitem,*pknow,*pmitem;
     16 	register short *phitp,*piarg;
     17 	register struct cel *pecel;
     18 	pcel = &cell[level*MAXX*MAXY];	/* pointer to this level's cells */
     19 	pecel = pcel + MAXX*MAXY;	/* pointer to past end of this level's cells */
     20 	pitem=item[0]; piarg=iarg[0]; pknow=know[0]; pmitem=mitem[0]; phitp=hitp[0];
     21 	while (pcel < pecel)
     22 		{
     23 		pcel->mitem  = *pmitem++;
     24 		pcel->hitp   = *phitp++;
     25 		pcel->item   = *pitem++;
     26 		pcel->know   = *pknow++;
     27 		pcel++->iarg = *piarg++;
     28 		}
     29 	}
     30 
     31 /*
     32  *	routine to restore a level from storage
     33  */
     34 getlevel()
     35 	{
     36 	register struct cel *pcel;
     37 	register char *pitem,*pknow,*pmitem;
     38 	register short *phitp,*piarg;
     39 	register struct cel *pecel;
     40 	pcel = &cell[level*MAXX*MAXY];	/* pointer to this level's cells */
     41 	pecel = pcel + MAXX*MAXY;	/* pointer to past end of this level's cells */
     42 	pitem=item[0]; piarg=iarg[0]; pknow=know[0]; pmitem=mitem[0]; phitp=hitp[0];
     43 	while (pcel < pecel)
     44 		{
     45 		*pmitem++ = pcel->mitem;
     46 		*phitp++ = pcel->hitp;
     47 		*pitem++ = pcel->item;
     48 		*pknow++ = pcel->know;
     49 		*piarg++ = pcel++->iarg;
     50 		}
     51 	}
     52